Benjamin Kallus Posted March 19 Posted March 19 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 0 Quote
Benjamin Kallus Posted March 19 Author Posted March 19 (edited) That was exactly what I needed to see I took the multitool image and burned it to the eMMC (because there's no SD card slot), stuck Armbian on a USB flash drive, plugged it in, and the thing booted from USB! The full-sized USB ports still don't work, but the OTG port does. I'll take a look at the U-Boot config that Armbian is using to try to figure out why it seems to work so much better than what I had. Looks like the Armbian build is using miniloader instead of TPL/SPL, and maybe that matters? I'll post an update here if I ever figure it out. Thanks!! Edited March 19 by Benjamin Kallus 0 Quote
Benjamin Kallus Posted March 20 Author Posted March 20 (edited) I have now gotten the board booting and running mainline U-Boot with no patches to the source code, and working USB OTG. It wasn't a miniloader/TPL+SPL problem; it was just missing DTS nodes. I transplanted some of the USB-relevant portions of the Armbian XT-Q8L-V10 U-Boot device tree into the upstream U-Boot firefly-rk3288 device tree, and that's enough to get U-Boot running with USB OTG support. I am attaching the patched firefly DTS and DTSI, in case it helps someone in the future. Next step is getting the display working. rk3288-firefly.dts rk3288-firefly.dtsi Edited March 20 by Benjamin Kallus 0 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.