Tigermedia Tigerbox TOUCH (tigermedia-tigerbox)
🚧 | This page is a work-in-progress. Some information contained within may be inaccurate or incomplete. |
This device has been tested with postmarketOS, but its device package has not yet been added to the postmarketOS repositories. This means that it cannot be selected in pmbootstrap. Status: Impossible to flash bootimages, installation in a chroot possible, read this wikipage |
![]() Neofetch running on a tigerbox over SSH (click to expand) | |
Manufacturer | Tigermedia |
---|---|
Name | Tigerbox TOUCH |
Codename | tigermedia-tigerbox |
Released | Not sure, around 2017 or so |
Type | embedded |
Hardware | |
Chipset | Rockchip RK3128 |
CPU | 4x 1.2 GHz ARM Cortex-A9 |
GPU | Mali-400 MP2 |
Display | - |
Storage | 8 GB |
Memory | 512 MB (2x 256MB DDR3L SDRAM) |
Architecture | armv7 |
Software | |
Original software The software and version the device was shipped with. |
Android 5.1 |
Extended version The most recent supported version from the manufacturer. |
Android |
postmarketOS | |
Category | testing |
Mainline Instead of a Linux kernel fork, it is possible to run (Close to) Mainline. |
yes |
pmOS kernel The kernel version that runs on the device's port. |
- |
Unixbench score Unixbench Whetstone/Dhrystone score. See Unixbench. |
506.9 |
Flashing It is possible to flash the device with pmbootstrap flasher . |
Broken
|
---|---|
Internal storage eMMC, SD cards, UFS, ... |
Untested
|
SD card Also includes other external storage cards |
Untested
|
Battery Charging and battery level reporting works |
Works
|
Screen Display works. Ideally with sleep mode and brightness control. |
Partial
|
Touchpad Build in Touchpad |
Untested
|
Stylus |
Untested
|
Multimedia | |
Audio Audio playback, microphone, headset and buttons. |
Untested
|
Camera |
Untested
|
IR TX |
Untested
|
IR RX |
Untested
|
Connectivity | |
WiFi |
Works
|
Bluetooth |
Untested
|
Ethernet |
Untested
|
GPS |
Untested
|
NFC Near Field Communication |
Untested
|
Modem | |
Calls |
Untested
|
SMS |
Untested
|
Mobile data |
Untested
|
Miscellaneous | |
FDE Full disk encryption and unlocking with unl0kr. |
Untested
|
USB-A Full-sized USB-A port works (Usually applicable to SBCs and laptops). |
Untested
|
USB OTG USB On-The-Go or USB-C Role switching |
Untested
|
HDMI/DP Video and audio output with HDMI or Display Port works. |
Untested
|
Sensors | |
Ambient Light |
Untested
|
Proximity |
Untested
|
Hall Effect Also known as flip cover sensor |
Untested
|
Haptics |
Untested
|
Barometer Sensor to measure air pressure |
Untested
|
Power Sensor Sensor to monitor current, voltage and power. Not fuel gauge! |
Untested
|
WARNING: Installations on this device are only happening in a seperate chroot with openRC enabled. |
Contributors
Users owning this device
- User0 (Notes: running pmOS in a chroot.)
WARNING: The bootloader cannot really be unlocked, you'll still need signed images |
How to flash the device / How to "unlock" the Bootloader
Unlocking the device is possible and really easy -
You need:
ADB with fastboot
A paperclip
A USB cable
How to unlock: Insert the paperclip into device in shutdown state - power it on, it'll enter recovery mode. From there, run:
adb reboot fastboot
now in fastboot, unlock it:
fastboot oem unlock fastboot oem unlock_accept
Now flashing is impossible (remote: 'not support "-u" option'), so we got to use ADB for that... Note: you need to run unlock_accept in 5 seconds after running unlock.
Using ADB
Boot into recovery mode as described above.
To gain access to /dev, use
adb root
(You *will* get a timeout error, this is safe to ignore)
To pull a partiton:
adb pull /dev/block/mmcblk0pX partition.img
To push it:
adb push partition.img /dev/block/mmcblk0pX
Known partitions:
/dev/block/mmcblk0p12 - system /dev/block/mmcblk0p14 - userdata /dev/block/mmcblk0p6 - boot /dev/block/mmcblk0p7 - recovery (probably)
Installation (sort of)
WARNING: Fully installing postmarketOS on this device is *NOT* possible! What we'll do here is installing postmarketOS on the userdata partition, chroot into it on startup, and run OpenRC. This is not the way pmOS is meant to be used, do not rely on this hacky setup, and do not expect any support with it! |
![]() |
From what I know, this is the only way to get pmOS somewhat working. The bootloader is fully locked down, at BootROM level. There is no way to flash unsigned images. |
Start by running pmbootstrap init
. Create a new port, put tigermedia
as manufacturer, and tigerbox
as device codename. Select embedded
as category, select yes when it asks if the device has external storage, select OpenRC as init and wpa_supplicant for networking, and none
as flashing method. The other values should not really matter.
Now, pmbootstrap should have generated two aports: device-tigermedia-tigerbox
and linux-tigermedia-tigerbox
. Delete the linux aport. In your device package's APKBUILD
, replace linux-tigermedia-tigerbox
with linux-lts
. Now checksum and build the device package:
pmbootstrap checksum device-tigermedia-tigerbox pmbootstrap build device-tigermedia-tigerbox
After that, you can run pmbootstrap install
. While pmbootstrap is running, you can prepare the device. First, pull the system partition as described in Using ADB
.
Then, mount the system partition, e.g. like this:
mkdir /mnt/system mount system.img /mnt/system
After it's been mounted, you need to enable ADB. Open the build.prop file in the root directory of the system partition with any text editor, and locate the line persist.sys.usb.config=charging
. Replace charging
with mtp,adb
, and paste the two lines below anywhere in the build.prop file:
persist.service.adb.enable=1 persist.service.debuggable=1
Now, unmount the partition and push it back to the device, e.g.:
umount /mnt/system adb root adb push system.img /dev/block/mmcblk0p12
Now wait for pmbootstrap to finish. Once it's done, export the generated image and extract the rootfs from it:
pmbootstrap export sudo losetup -Pf $(readlink /tmp/postmarketOS-export/tigermedia-tigerbox.img) sudo dd if=/dev/loopXp2 of=/some/path/for/the/rootfs.img # replace directories with correct ones
Now flash the image to the device. First boot recovery mode as described above, then gain root and push the rootfs to the userdata partition, and reboot the device
adb root adb push rootfs.img /dev/block/mmcblk0p14 adb reboot
Now, you are ready to configure the device. First, we need to create five scripts. Create them on your host for now, mark them as executable! (e.g. chmod +x
). Here are my reference ones for XFCE4. Their function should be obvious.
lmkd
#!/system/bin/sh # simple wrapper for pmos-boot, gets executed by android on startup su -c "pmos-boot"
pmos-boot
#!/system/bin/sh # initialize pmos, ensure android keeps getting kiled while true do busybox pkill -9 surfaceflinger busybox pkill -9 wpa_supplicant_rtl busybox pkill -9 zygote busybox pkill -9 bootanimation done & # bind mount -o bind /dev /data/dev mount -o bind /dev/pts /data/dev/pts mount -o bind /proc /data/proc mount -o bind /sys /data/sys mount -t tmpfs tmpfs /data/run || true mount -t tmpfs tmpfs /data/tmp || true # execute init cp /system/bin/pmos-init /data/bin/pmos-init busybox chroot /data /bin/pmos-init # loop forever in case we get an exit while true do sleep 1 done
pmos-chroot
#!/system/bin/sh # chroot into pmos cp /system/bin/pmos-sub-chroot /data/bin/pmos-sub-chroot busybox chroot /data /bin/pmos-sub-chroot
pmos-init
#!/bin/ash # Starts the RC services on runlevel default. Attempts to run CHANGEME! desktop environment # set PATH export PATH='/sbin:/bin:/usr/bin' # prepare for xorg and openrc ln -sf /dev/graphics/fb0 /dev/fb0 rm -rf /run/openrc/clock-skewed touch /run/openrc/softlevel || true # flush the framebuffer cat /dev/urandom > /dev/fb0 # run services on runlevel default openrc default # wait 0.75 secs to ensure all services are running sleep 0.75 # ensure lightdm is dead. it does not work but sometimes reserves the framebuffer. service lightdm stop &> /dev/null || true # not working because of udev, CHANGEME? pkill -9 lightdm || true # CHANGEME pkill -9 X || true rm -rf /tmp/.X0-lock || true # flush the framebuffer cat /dev/zero > /dev/fb0 # start CHANGEME! desktop startxfce4 # CHANGEME: replace with your desktop # === X.org died === # loop so the script doesnt exit while true do service lightdm stop &> /dev/null || true # not working because of udev, CHANGEME? pkill -9 lightdm || true # CHANGEME pkill -9 X || true rm -rf /tmp/.X0-lock || true startxfce4 done
pmos-sub-chroot
#!/bin/ash # export PATH and run ash export PATH='/sbin:/bin:/usr/bin' ash
Once you've created them all, push them to your running device one by one. Double-check if you marked them all as executable. The device needs to be fully booted, not in recovery mode or similar. After pushing, reboot to initialize pmOS for the first time:
adb root adb push lmkd /system/bin/lmkd adb push pmos-boot /system/bin/pmos-boot adb push pmos-chroot /system/bin/pmos-chroot adb push pmos-init /system/bin/pmos-init adb push pmos-sub-chroot /system/bin/pmos-sub-chroot adb reboot
Wait for the device to boot.
Now, enter a shell
adb shell
Inside the shell, ensure you are root. If you aren't, use su
to become root. Then, run pmos-chroot
. You'll enter pmOS. From there, you might want to resize your root partition's filesystem to the ~5GB of the userdata partition.
sudo /usr/sbin/resize2fs /dev/block/mmcblk0p13
Now, do anything you want. To connect to WiFi, use wpa_cli. This Arch Linux wikipage is a great starting point. You might also want to enable SSH over WiFI as SSH over USB does not work. After you've did everything you wanted to do, reboot the device over ADB:
adb reboot
Now you are free to use your pmOS installation.