Flashing eMMC Bootloader / Unbricking (IMX8MP)

So using my bodge wires, I was able to fully recovery by Pocket Reform with IMX8MP. The steps were as follows:

NOTE: The following starts with the Pocket Reform switched off. It will need to be powered on when you are done, but for the first steps you should disconnect the charging cable, and the green and black battery cables at the bottom of the board per the maintenance advice in the manual.

  1. Remove jumpers from J21/USBSEL header on Pocket Reform motherboard
  2. Solder 1 wire between pin 1 and 5 on J21 USBSEL
  3. Solder 1 wire between pin 2 and 6 on J21 USBSEL
  4. Switch the small switch on the IMX8MP SoM labelled BOOT to the ON position. For the computers amongst us, this is not the “1” position, but the ON position, which says “NO” if you look at it the wrong way. Note this is not the BOOT1 jumper on the carrier board, but the small DIP switch with kapton tape over it on the actual SoM board. You’ll need a little screwdriver or whittled bone or something to do this.
  5. Connect a USB cable to the SYSUSB connector. I used a USB-C to USB-A cable, and plugged the USB-A into my desktop computers. I found that a USB 2.0 USB-C to USB-C did not work, likely because the resistors interfered with the operation of USB-OTG negotiation or something like that.
  6. Reconnect cables (battery & charger cables) and switch the Pocket Reform on.
  7. On the computer you have connected the other end of the USB cable to, you should see a USB device appear with ID 1fc9:0146 NXP Semiconductors SE Blank 865. You can check this with lsusb if you’re on Linux etc.
  8. Download and install UUU (the IMX manufacturing tool). It is packaged for most operating systems - on NixOS I just ran nix-shell -p uuu. It’s also packaged for Debian unstable/sid I think.
  9. Download the latest imx8mp u-boot image from the build artefacts in the latest CI job from this MNT project. The one I used was called imx8mp-mnt-pocket-reform-flash.bin
  10. Run uuu -b emmc imx8mp-mnt-pocket-reform-flash.bin in the directory where you have downloaded the u-boot binary from MNT
  11. This will upload and run u-boot from USB. You should be able to either boot an inserted SD card with the system image on it, or if you have an intact system image / install on your eMMC, you should be able to boot that too
  12. Once booted into either an SD image or eMMC install, you should download the u-boot binary onto the Pocket Reform itself.
  13. I found the uuu -b emmc command didn’t properly flash the u-boot binary onto the emmc for some reason, so once I was booted via UUU, I used dd to update it. First you need to enable writing to the boot part of the eMMC with echo 0 > /sys/class/block/mmcblk2boot0/force_ro. This needs to be run as the root user, so use sudo -i to get a root shell first, if you’re not logged in as root.
  14. With the u-boot image downloaded to imx8mp-mnt-pocket-reform-flash.bin, run dd if=imx8mp-mnt-pocket-reform-flash.bin of=/dev/mmcblk2boot0 && sync. This also needs to be run as root.
  15. You should now be able to turn the BOOT switch on the SoM to “1” aka off, it shouldn’t be set to “ON”.
  16. Reboot your Pocket Reform, and you should be able to boot up as normal and boot either an SD or eMMC install.

A very skilled MS-paint level drawing of how the bodge wires should be connected:

4 Likes