Hello everyone,
My university recently purchased a few hundred of these RK3288-based tablets. They're used to display room schedules, control printer confiurations, and control TV inputs throughout our engineering and computer science buildings. The buildings are littered with them; you can't walk 10 feet in any direction without passing one mounted on the wall. Given that they have cameras and microphones, and they run an ancient Android, maybe this wasn't a great idea...
Anyway, the no-name eMMC on these things tends to go bad pretty quickly, and the board has no microSD slot, so SD booting is not an option. The university has given me access to a few dozen broken tablets to see if I can get them booting from USB.
RK3288 doesn't support USB booting, so my plan is to place a U-Boot on the eMMC that is capable of loading Linux and an Armbian rootfs from USB storage, and mark the eMMC as read-only within Linux. This way, the flash shouldn't wear out any further, and the tablets can remain usable.
You can get the tablets into mask ROM mode by grounding the resistors next to the eMMC.
From here, flashing the eMMC is straightforward with rkdeveloptool.
Upstream U-Boot images compiled with the rk3288-firefly and rk3288-vyasa defconfigs will boot on the device! (To build an image that can be flashed to the base of the eMMC, follow the instructions in U-Boot's README.rockchip under the section titled "Booting from an SD card on RK3288 with TPL," but dd into a file instead of a block device, then flash the file.)
Here's what the boot output looks like with the firefly defconfig:
U-Boot TPL 2024.04-rc4-00026-g6ec096a711 (Mar 19 2024 - 14:15:48)
Returning to boot ROM...
U-Boot SPL 2024.04-rc4-00026-g6ec096a711 (Mar 19 2024 - 14:15:48 -0400)
U-Boot 2024.04-rc4-00026-g6ec096a711 (Mar 19 2024 - 14:15:48 -0400)
SoC: Rockchip rk3288
Reset cause: RST
Model: Firefly-RK3288
DRAM: 2 GiB
Core: 226 devices, 26 uclasses, devicetree: separate
MMC: mmc@ff0c0000: 1, mmc@ff0f0000: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment
In: serial,usbkbd
Out: serial,vidconsole
Err: serial,vidconsole
Model: Firefly-RK3288
Net:
Warning: ethernet@ff290000 (eth0) using random MAC address - 8a:21:c0:47:39:e5
eth0: ethernet@ff290000
starting USB...
Bus usb@ff540000: USB DWC2
Bus usb@ff580000: USB DWC2
scanning bus usb@ff540000 for devices... 2 USB Device(s) found
scanning bus usb@ff580000 for devices... 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot: 0
Card did not respond to voltage select! : -110
ethernet@ff290000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@ff290000
ethernet@ff290000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY ethernet@ff290000
=>
Here's the boot output when booting the vyasa defconfig:
U-Boot TPL 2024.04-rc4-00026-g6ec096a711 (Mar 19 2024 - 14:16:13)
Returning to boot ROM...
U-Boot SPL 2024.04-rc4-00026-g6ec096a711 (Mar 19 2024 - 14:16:13 -0400)
Expected image is not found. Trying to start U-Boot
U-Boot 2024.04-rc4-00026-g6ec096a711 (Mar 19 2024 - 14:16:13 -0400)
SoC: Rockchip rk3288
Reset cause: unknown reset
Model: Amarula Vyasa-RK3288
DRAM: 2 GiB
Core: 210 devices, 22 uclasses, devicetree: separate
MMC: mmc@ff0c0000: 1, mmc@ff0f0000: 0
Loading Environment from MMC... Card did not respond to voltage select! : -110
*** Warning - No block device, using default environment
In: serial,usbkbd
Out: serial,vidconsole
Err: serial,vidconsole
Model: Amarula Vyasa-RK3288
Net:
Error: ethernet@ff290000 No valid MAC address found.
No ethernet found.
starting USB...
Bus usb@ff540000: USB DWC2
Bus usb@ff580000: USB DWC2
scanning bus usb@ff540000 for devices... 2 USB Device(s) found
scanning bus usb@ff580000 for devices... 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot: 0
No ethernet found.
No ethernet found.
=>
This is promising and exciting, but USB host functionality doesn't work in either of these two builds
You can see in the boot output that it scans for USB devices, but doesn't see any storage devices, even though I had a USB flash drive plugged into the board during both of those boot attempts. I have also tried using a micro-USB to USB-A OTG adapter and plugging the flash drive in there, but that doesn't work either.
I think it's safe to assume that this USB issue is something to do with either the defconfigs or the device trees for the firefly and vyasa.
I would love to hear if anyone has any input on how I can get USB working within U-Boot.
I have extracted the device tree from the Android bootimg that came with the tablet, and have attached it (decompiled), in case that's helpful.
Thanks,
Ben
rk3288-noname.dts