10

I want to determine the MAC-address of my Wi-Fi interface on a Raspberry Pi Z W running Raspbian Lite.

Is there a command that I can run to tell me this? Is there a device in the /proc tree that will disclose it?

Bex
  • 2,919
  • 3
  • 24
  • 34

3 Answers3

10

Enter in terminal/console ifconfig wlan0 At the end of the first line should be the hardware address aka MAC.

Here a sample output (German locale):

pi@RasPi0w-1:~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  Hardware Adresse b8:27:eb:xx:xx:xx
...
LotPings
  • 366
  • 1
  • 13
9

The following is a fragment of a bash script I use to determine the MAC of Ethernet, or if this does not exist of WiFi (for Pi Zero W).

It does not rely on ifconfig or any other method of detecting allocated IP, and just needs the system to detect the networking hardware.

This works for Jessie, Stretch or Buster

# Find MAC of eth0, or if not exist wlan0
if [ -e /sys/class/net/eth0 ]; then
    MAC=$(cat /sys/class/net/eth0/address)
elif [ -e /sys/class/net/enx* ]; then
    MAC=$(cat /sys/class/net/enx*/address)
else
    MAC=$(cat /sys/class/net/wlan0/address)
fi

Basically you could use MAC=$(cat /sys/class/net/wlan0/address) to find the MAC of inbuilt WiFi on Pi3 or Pi Zero W.

MAC=$(cat /sys/class/net/wlx*/address) should work on WiFi dongles on Stretch, but you could easily adapt the above to work on both Jessie or Stretch for WiFi and Ethernet.

Milliways
  • 54,718
  • 26
  • 92
  • 182
  • Very good answer. Thank you! Does Raspbian Stretch use predictable network interface names? Do they affect the naming of the structure under `/sys/class/net`? – Bex Aug 30 '17 at 07:26
  • 1
    @Bex It depends; a fresh install uses predictable network interface names by default, I do not know about upgrades. It is simple to restore former behaviour, see [How do I set up networking/WiFi/Static IP](http://raspberrypi.stackexchange.com/a/37921/8697) for detail. Whatever name is selected by the hardware enumeration process should be shown. There are several methods of modifying this process. – Milliways Aug 30 '17 at 07:44
7

Many distros is replacing ifconfig with ip so I would discourage the use of ifconfig.

To show the wlan0 interface:

ip link show wlan0

or

cat /sys/class/net/wlan0/address

Ref: https://www.linux.com/learn/replacing-ifconfig-ip

MatsK
  • 2,478
  • 3
  • 12
  • 20
  • I'm pretty sure `ifconfig` will still be available for many years. Removing it will save a measly 800 kB, breaking a lot of old scripts. – Dmitry Grigoryev Aug 29 '17 at 15:22
  • Problem is, that person would want a salary. – Dmitry Grigoryev Aug 29 '17 at 15:26
  • 1
    To continue to use a deprecated command in new implementations is sad. I have seen this in work related situations, and its like pushing the problem in front of you, and at a point in time it will get to big! Start dealing with it instead! – MatsK Aug 29 '17 at 16:29
  • I'm pretty sure the OP has plenty of time to run `ifconfig` before Raspbian gets rid of it ;) Not that I'm against `ip` of course, it's just that you said that many distros are ditching `ifconfig`, but AFAIK all distros compatible with the RPi still have it. – Dmitry Grigoryev Aug 29 '17 at 16:36
  • @DmitryGrigoryev, Fun that you mention OP, he is NOT asking for ifconfig, check the original question.... – MatsK Aug 29 '17 at 17:17
  • 2
    In this case, `ip link show` is probably more appropriate than `ip addr show`. – Bob Aug 30 '17 at 00:40
  • 1
    In my desktop system I run Debian Stretch, that does not seem to have `ifconfig` by default anymore, Raspbian Stretch seem to have it. I prefer `ip` over `ifconfig`, though I think Bob is right in saying that `link` is probably more appropriate than `addr` in this context. The solution I did go for, though, was to read it from `/sys/class/net/wlan0/address` - no additional parsing necessary. Additionally, I write it as `cat /sys/class/net/wl*/address` in a naïve attempt to make it save for the coming "predicable network interface names". – Bex Aug 30 '17 at 07:20
  • @Bex CentOS 7, Debian 9 (Stretch) have dropped ifconfig in stock, but you can install it afterwards. – MatsK Aug 30 '17 at 09:31
  • @Bob I agree that link is more appropriate. I will change the answer accordingly. – MatsK Aug 30 '17 at 09:31