Jump to content

Recommended Posts

Posted

Note: This is for Odroid m1s, not Odroid m1 - there just isn't a forum for the m1s (yet?)

 

When I tried to start the board with the community image for the Odroid m1s on a SD card, it wouldn't boot.

The connected screen (HDMI) would stay black and the blue heartbeat LED would stay on permanently.

 

I tried building and flashing u-boot but that didn't help me.

 

Here's what DID work:

(Note: it worked for me. I can't guarantee that this fixes it for everyone, use at your own risk)

 

  • I mounted the SD card on a Linux desktop and created backups of the boot scripts (just to be safe)
sudo cp <mount_path>/armbi_root/boot/boot.cmd <mount_path>/armbi_root/boot/boot.cmd.bak
sudo cp <mount_path>/armbi_root/boot/boot.scr <mount_path>/armbi_root/boot/boot.scr.bak
  • Then I set the load address to 0x0c000000
sudo sed -i 's/setenv load_addr "0x9000000"/setenv load_addr "0x0c000000"/' <mount_path>/armbi_root/boot/boot.cmd
  • Then I ran mkimage as follows:
sudo /usr/bin/mkimage -C none -A arm -T script -d <mount_path>/armbi_root/boot/boot.cmd <mount_path>/armbi_root/boot/boot.scr

 

  • This fixed the booting, but just to be sure a future update wouldn't undo it I also wrote it to armbianEnv.txt
echo "load_addr=0x0c000000" | sudo tee -a <mount_path>/armbi_root/boot/armbianEnv.txt

 

And that's it!

 

 

One more thing: I noticed that Ethernet did not work out of the box, so I did this:

 

I attached a UART cable to log into the machine and created the following script, which patches the device tree.

You might need to get a little creative if your only access would be through Ethernet, but you I'm sure you can figure something out.

(Maybe create the necessary files while the SD card is still mounted on your PC)

 

cat > /usr/local/sbin/patch-gmac-dtb.sh << 'EOF'
#!/bin/bash
DTB=/boot/dtb/rockchip/rk3566-odroid-m1s.dtb
dtc -I dtb -O dts $DTB -o /tmp/m1s.dts 2>/dev/null
# Only patch if not already applied
if grep -q 'snps,reset-gpio' /tmp/m1s.dts; then
    echo "GMAC DTB patch already present, skipping"
    exit 0
fi
sed -i '/phy-mode = "rgmii-id";/a \\t\tsnps,reset-gpio = <0x51 0x0f 0x01>;\n\t\tsnps,reset-active-low;\n\t\tsnps,reset-delays-us = <0x00 0x4e20 0x186a0>;' /tmp/m1s.dts
sed -i '/reset-assert-us/d; /reset-deassert-us/d; /reset-gpios = <0x51/d' /tmp/m1s.dts
dtc -I dts -O dtb /tmp/m1s.dts -o $DTB 2>/dev/null
echo "GMAC DTB patch applied"
EOF
  
  

chmod +x /usr/local/sbin/patch-gmac-dtb.sh

 

Execute the script and Ethernet should be working. (Might need a reboot, though).

 

If this works, you should make sure this is  applied after every kernel update, because it will get overwritten otherwise:
 

# Run it automatically after kernel/dtb package updates
cat > /etc/apt/apt.conf.d/99-patch-gmac-dtb << 'EOF'
DPkg::Post-Invoke {"if [ -f /usr/local/sbin/patch-gmac-dtb.sh ]; then /usr/local/sbin/patch-gmac-dtb.sh; fi"};
EOF

 

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines