I described the hardware here in detail. The device is nice, the hardware really is what I am looking for. But getting Linux to run on it is a pain. Less painful as on the MIIX300 but still painful. After some research I decided to give Ubuntu 16.04 a try and at first was pretty happy with the installation process. Under Win8.1 I did a resize of the Windows main partition to about 55GB – less is not possible because of the NTFS structure. The Ubuntu 64bit install ISO can be put onto a USB stick simply by dd’ing it on – cool! One of the advantages of UEFI.
The installation went pretty fine almost until the end but then hung. A second try produced almost the same. But the system was already bootable albeit a little damaged, but fixable. The reason for the hang seem to be the old baytrail eMMC issue, sporadic hangs. I was not able to find out what it caused but I think I have it fixed now by upgrading to latest kernel 4.5.2, built from vanilla upstream kernel.org sources.
Using the vanilla kernel pretty much is working already:
- display, graphics and acceleration, also backlight control including full blanking, i.e. backlight power off (saves power)
- touchscreen, seems to be an Atmel I2C connected touch
- Wacom I2C connected digtizer
- USB host port
- micro SD card slot
- most sensors are accessible through the Intel sensor hub and IIO interface, like ambient light, accel, gyro:
IIO device Name Driver Status iio0 accel_3d hid_sensor_accel_3d works iio1 als hid_sensor_als works iio2 gyro_3d hid_sensor_gyro_3d works iio3 incli_3d hid_sensor_incl_3d works iio4 magn_3d hid_sensor_magn_3d works iio5 dev_rotation hid_sensor_rotation unclear,
probably yes - WiFi is working using brcmfmac driver and an NVRAM File (brcmfmac43241b5-sdio) which can be copied from EFI. It also contains the MAC address so I replaced some digits in my copy
- Bluetooth is looking good too, using the 8250_dw quirk two UARTs ttyS4 and ttyS5 are detected and ttyS4 can be attached to the BlueZ stack using ‚btattach -B /dev/ttyS4 -P bcm‘. It also need a binary patch which will be loaded by the kernel firmware loader from brcm/BCM.hcd – this file should do the trick: BCM (rename and copy the zip contents)
Update: Does not work yet using btattach, hangs on init, hciattach works almost but fails to load the fw patch and I assume that’s the reason why the device a detected properly but not air traffic is going in or out
Update: I managed to get hciattach to load the BCM HCD „patch“ and tata! Bluetooth is now recognised, initialized and air traffic is going in and out! - the WWAN (Sierra Wireless) is creating a network device. I have not tested this yet but I assume it should be possible to get this working though I wonder how to configure SIM PIN, APN and such stuff
- all buttons work – power, rotation lock, vol+/vol- and windows button on front – at least all of them emit input events
And now for the unpleasant part of non working stuff:
- sound is still not working because the TPT10 uses a codec that was introduced into the kernel for Cherrytrail but not Baytrail – well, I guess that can be hacked
I had a look at the ACPI DSDT yesterday and am confused as it states that the codec is RT5640 but it is pretty definitely a RT5672, the ID register gives proof for that:
rt5640 i2c-10EC5640:00: Device with ID register 0x6271 is not rt5640/39 - the cameras (front and back) will be a huge challenge. There does not seem to be any support for the IPS (Image Processing System) which they are connected to
- the fingerprint reader – well, i can live without it
- the NFC would be nice to have and maybe this is feasible
- the GPS is a little mystery to me since this seems to be a pretty unusual GPS device. My fear is that it requires a lot of userspace code, i.e. that pretty much of the resolution calculation is done in software and that the code for this will not be opensource.
- there is a vibration motor built into the device, I have no idea how to control it (yet)
- battery status, pretty important for a mobile device
Update: Unplugging and plugging the AC adapter emits APCI events for AC adapter and battery - But worst of all the non working stuff is that I have no clue whatsoever how to put the device into a low power state and wake it up again. According to ACPI it does not support the most common S3 – suspend to RAM. There is only disk and freeze and the later does exactly what it says, it freezes the whole thing and never thaws again.
Update here
I sincerely hope that I will find some clues on the remaining issues in the sources of Linux kernels for Android on Baytrail, like from the great Android-X86 project.