Finally, I got some free time to update Raspbian Jessie to Raspbian Stretch on my Raspberry Pi. Following initial advice, I started from scratch, therefore, everything had to be set as well. I mentioned the Raspbian Stretch network interface name changes in my post, but frankly speaking, I assumed that by default, Raspbian would keep the old names for the sake of the scripts. I was wrong.
Raspbian Stretch network interface name changes
If you check your network interfaces on a new installation of Raspbian Stretch
ifconfig
instead of the familiar eth0, eth1… & wlan0, wlan1… you will find a new (and bizarre at first) name. It will be something like this: enxb827es19aa14 (I modified mine for security reasons).
The Raspbian Stretch network interface name is generated from your MAC address for that interface and it’s no longer easy to guess without knowing the MAC.
Ethernet MAC AA:BB:CC:DD:EE:FF:GG ---> enxAA:BB:CC:DD:EE:FF:GG
While this was done to please the enterprise Linux users and their behemoth alike setups, it’s game breaking for many of us – Raspberry Pi users. Each time a piece of code would refer to the interface by eth0/wlan0 – it fails miserably on the new Raspbian Stretch.
Solution
The best solution to this is to disable the Raspbian Stretch network interface name changes at the boot level. You can do this by removing the SD card and adding this line to the cmdline.txt file:
net.ifnames=0
This will disable the new way of naming things and restore the old settings. You don’t have to reinstall the Stretch again. The changes will apply after the next reboot.
You can also do this via configuration menu:
sudo raspi-congif
In the network interfaces, you will find the option to toggle the names. Names should be set to the correct names by default. If you want to enable the new naming scheme – use the option provided.
If your scripts are not working after the new update consider either changing the cmdline.txt
, or look up your new interface name and update the relevant files by replacing each instance of the wlan/eth with a new name. I wrote this, as it is easier to reference the changes in my older tutorials than writing instructions for each previously created page.