Vivax TPC-9150

= Identification =

When booted into Android, open the "Settings" app and choose "About tablet". You will find the following information:

Model number: TPC-9150 Firmware version: v2.0 Kernel version: 3.4.39 Build number: wing_um723-eng 4.33 JDQ39 20140322 test-keys



= Sunxi support =

Legacy kernel support
Use the default sunxi kernel with the following FEX file

Mainline kernel support
Not yet merged.

Clone the Linux kernel from https://github.com/torvalds/linux

Apply the following patch (i.e. )

After applying that run the following:

Then afterwards use the desired  file with the latest mainline kernel.

Support status
Things that work:
 * Audio input (only via internal microphone)
 * Audio output (only via headphone jack)
 * SD card
 * USB charging
 * Battery indicator
 * Battery charging
 * Power management (via AXP209)
 * Touchscreen and touchscreen wakeup
 * Included LCD display
 * Ability to control LCD brightness
 * Wi-Fi
 * Bluetooth
 * UART
 * HDMI
 * HDMI audio
 * Mali GPU (via lima driver)
 * Power button

Things that DO NOT work:
 * Accelerometer (no compatible drivers, most likely to be stk831x)
 * NAND (fails to power up NAND chip)
 * Suspend (cannot wake up device after suspending)
 * "ESC" key
 * HDMI hotplugging
 * Charger hotplug (but it will correct in a minute or two)
 * Both cameras

Things that are not tested (and probably don't work):
 * USB OTG

Mainline U-Boot
Not yet merged.

Apply this patch with a freshly cloned U-Boot repository.

For building mainline U-Boot, use the Vivax_TPC9150 target.

UART, LCD, SD card work, nothing else does.

Manual build
Use the information in "Mainline kernel" and "Mainline U-Boot" along with the manual build howto, in order to build a functioning Linux system.

= Tips, Tricks, Caveats =

FEL mode
Following the FEL guide treat the "ESC" key as the FEL button.

Otherwise build an FEL SD card, using the same FEL guide and with a needle press the reset button, located on the back of the tablet.

Reset button
The reset button (on the back side of the device) reboots the device.

Internal µSD card
The device has an internal µSD card port that shows as mmcblk0. This port has boot priority over NAND.

Bad Wi-Fi range
The included Wi-Fi driver in most distros rtl8xxxu has really bad range on this device. It works, but Wi-Fi tends to cut off often.

In order to improve range use this driver instead: https://github.com/lwfinger/rtl8723au

Follow it's instructions, then blacklist the included rtl8xxxu driver.

Then to prevent the Wi-Fi connection from cutting off randomly, put the following into the

Suspend mode
The device will successfully go into suspend mode, but that isn't the problem. The problem is that it cannot get out. Once the device is suspended it will remain suspended until a hard reset, via reset button or power button.

In order to remedy this, just disable going into suspend by modifying  and within the   section add

Touchscreen does not work!!!! Help!
Please check that there aren't any udev rule files in  arbitrarily setting a libinput calibration matrix.

The accelerometer situation
The driver just does not exist for Linux. That's it.

The screen's a bit shifted, what's going on?
Basically there isn't a correct panel driver included into the current Linux source tree. Luckily, I have been successful in obtaining the correct LCD panel settings, but the problem is that I do not know the make or model of the LCD which would probably invalidate my kernel patch. Not only that, but manually patching this would require a kernel to be rebuild, which is too much effort in my opinion.

So the panel parameters that are available in the current patch are "good enough" in most use cases.

= Adding a serial port (voids warranty) =

Device disassembly
In order to open the device, there are two Phillips screws to remove from the side with the connectors. The pins from the white part are easy to pop but it is advised to use a a plastic tool, starting from opposite of the side with the connectors. The front panel is very fragile and pressuring the screen to pop open the pins can easily end up in breaking the touch screen panel.

Locating the UART
The UART pads are located on the front side of the PCB. The UART pads are labeled and large enough so that soldering wires to those UART pins becomes easy.