NanoPi R1 change MAC address on every boot

Core update 157

Hello to all! I am new to this forum and also new to IPFire, but I just love IPFire a lot even using it for just a few days already. I absolutely love the IPS capability that can run on a tiny SBC although I it is only for my own project and low traffic uses.

I installed IPFire successfully (well, blue interface still not appeared) and the red0, green0, IPS, firewall, watchdog, all running fine.

However, whenever I power down/reboot the Nanopi-ri, the red0, green0 interface will change the mac addresses differently than previously configured in the IPFire network admin interface, so the start up message will show red0 and green0 not exists

I digged into varies discussions including:

  1. hardcode the mac addresses in /etc/network/interfaces config file
  2. add ethaddr=xx:xx:xx:xx:xx:xx to the uEnv.txt in the boot partition
    they all seems not resolving the mac addresses changes issues.

I now have to permantely open the box in order to access the debug UART (I cannot access the front panel UART even by changing the console=ttyS1/S0) and config the mac address in the network interface so this box cannot be turned off, use it as portable firewall.

I really appreciate any help and shredding some lights to my little problems. Thanks a lot in advance!

did you use the IPFire supplied u-boot? This version should be patched to generate a fix mac address from the SoC serial number. The serial console of u-boot is always the internal. only the kernel output can redirected with the console=…

Can you post a picture from your board? I think on you board is something different. I have seen two hardware revisions yet. (diffenrent WLAN modules)

Hi @arne_f
Thank you very much for your kind reply. I did not use the IPFire supplied u-boot as I am not aware and in fact I am totally new to IPFire and also the SBC world. I actually followed a post from IPFire:

to do the IPFire install to the NanoPi-R1. But the board came in with the eMMC corrupted so I have to erase the eMMC content and use the FriendlyWRT eflasher to reinstall the eMMC and also copied the u-boot (very old 201x version) u-boot-sunxi-with-spl.bin.

Can you advise where can I download the IPFire supplied u-boot?

I am attaching the photos (top and bottom) for your reference. It printed FRIENDLY ELEC v1.0 1809 so is this the first very old version?

I actually followed the post just mentioned and also bought the same Serial-TTL to USB-Cable but I could not get it work so I eventually open the box and use the internal port 3-pin and got the terminal working. So my question on this is does that I mean I have to always use the internal pin in the future (since I want to take it with me when I travel/work in public places).

Thanks a lot for your kind attention. (I already read a lot of your posts before I join this forum today). Thanks heaps!

This board has again a different wlan module. It should based on the same chipset but maybee it need an updated firmware.

To acces u-boot yes. (It the same for me but the output in nearly uselees)
If you use the external port you have to be patient at boot. The kernel need up to 20s to boot before it output anything.

Are all mac addresses random at you board?

Hi @arne_f
Yes, both ethernet ports mac addresses are random.

Could you point me to where can I get the IPFire u-boot? I tried a bit digging but couldn’t find any? Thank in advance.

Does that mean I can stil use the external port to boot IPFire (or other OS such as Armbian)? I actually tried but nothing appeared at all even after 10 minutes.

IPFire should switch the kernel console to the external port if you not change it back in uENV.txt

I think other distros use always the internal port. (It defined in the dtb file);a=commit;h=fe7b0cd871d282a0b0c650a9a48e0db79282db51

Hi @arne_f
I managed to cp the u-boot from /usr/share/u-boot/nanopi-r1/u-boot-sunxi-with-spl.bin. Now the boot is stuck in the starting kernel … statement.

It was like that from the very beginning when I install the IPFire core 157 on SD then boot from SD. Could this be a version issue? I tried the most earliest version I can download (core141) but still the same. I can only get around by using the FriendlyWRT uboot. Could you advise?


This looks good. This is the output of the internal serial. The kernel output should display on the external serial port now.

If you use a other u-boot you have the random mac address problem again.

I am a bit confused now since there is nothing shown on the external serial port. Bascially the screen did not update at all. If I connect the external serial port before boot the SD card, there will just be a blank screen.

It is also the same if I flash the IPFire u-boot using eMMC flash method on the IPFire blog.

I attached a photo of the external port connection for reference. I am now back to square one, that is the only combination that works is FriendlyWRT u-boot with any IPFire core version (I tried 157, 141 and 153). They are all the same, stuck in either a blank screen on external port, or the screen of starting kernel … then just wait forever. I left it once for half an hour just to be sure I am patience enough :wink:

I’m not sure whats the problem.

Is the RED led blinking? If not the kernel has not bootet, maybee there are more hardware changes but the board is still marked as version 1.0.

Have you checked the contacts? The pins on the external port are short, sometimes one of them are loose. Maybee also your external serial port is bad, in this case you can try to switch the console back to the internal port by adding console=ttyS1,115200n8 to uENV.txt

Hi, Arne,

I am very happy to report that thanks for your pointing me to the right direction, I found that the external UART port might be faulty. I add the console=ttyS1 statement to the uENV.txt and it boots normally into IPFire now. For the wireless interface, I also got it works after flashing the IPFire supplied u-boot right from the very beginning instead of flash the FriendlyWRT u-boot, then replaced by IPFire u-boot. I have to flash the FriendlyWRT u-boot first as it is the “only way” to get it boots normally via the internal port. The tricky part of the NanoPi-Ri install is it will have some boot message from the internal Debug port, then the boot message will pass to the external port. I thought it was not working, and even changing the TTY cable to the external, I cannot see the normal boot text.

It is all working fine now. Just one more issue, I cannot find the wireless client shown on the system menu. Is it because I have configured the wireless AP and activated it, so the wireless client menu is not shown? Or I have to include addon from the pakfire like the hostapd? I found one addon named “client” and not sure if that should be the one for the wireless client.

Many many thanks!!!

The wireless client will only showed if a wireless nic is selected for red

Many thanks again to Arne and I got all the connectivity issues resolved. I am happy with this truely portable firewall/IPS/Tor/OpenVPS/etc. little wonder and how scalable IPFire can be. I already tested it on a tiny machine, I would like to test it on a large machine once I got the opportunity.

Thanks again for the wonderful support and product that IPFire is offering.

1 Like