Raspberry Pi — Networking
Raspberry Pi Network Hardware Support
The Raspberry Pi is a small single-board computer
capable of running a variety of operating systems.
See the
hardware and background page
for details on its physical characteristics.
Here you see an earlier Raspberry Pi with an SDCard and a
Buffalo WLAN interface installed in the first picture.
The module at the center at one end of the board
is a dual USB port,
an Ethernet port is at an adjacent corner of the board.
802.3 Ethernet
The on-board Ethernet is actually a built-in USB Ethernet interface combined with the USB controller. The Ethernet controller appears as device number 3 on USB.
Both USB and Ethernet support are provided by
a LAN9512 chip detected and run by the
smsc95xx
kernel module.
It supports 10 and 100 Mbps, both half and full duplex, and auto-negotiates the combination of speed and mode with the switch.
If it does not correctly auto-negotiate the speed and
duplex settings, this can be adjusted with the
ethtool
command.
First, use ethtool
to see the
capabilities of the Raspberry Pi Ethernet interface
and its current settings:
pi@raspberrypi ~ $ lsusb Bus 001 Device 004: ID 413c:2107 Dell Computer Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub pi@raspberrypi ~ $ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M |__ Port 3: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M pi@raspberrypi ~ $ sudo ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbag Wake-on: d Current message level: 0x00000007 (7) drv probe link
You could then add a few lines to the end of
/etc/rc.local
to correctly set the Ethernet parameters and then restart
the network
service.
Or, more adventuresomely, create your own
/etc/init.d/ethtool
boot script and start it just before network
in run levels 2 and 3 (full multi-user with text and
graphics console, respectively).
However, you would only need to do all this in an unusual situation where your switch cannot reliably auto-negotiate speeds and duplex modes.
802.11 WLAN
Raspberry Pi Model 3 includes an on-board WLAN interface
pi@raspberrypi ~ $ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether b8:27:eb:03:6b:37 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether b8:27:eb:56:3e:62 brd ff:ff:ff:ff:ff:ff
Make sure that your devices are detected.
In the above command output, unlike what you see
in the picture further up the page,
I have plugged an Asus USB-N10 WLAN device
into one of the USB ports.
I have highlighted the network devices above.
This situation provides two network devices:
eth0
wired Ethernet and
wlan0
802.11 WLAN.
Use the iwlist
command to detect wireless networks.
Here is the portion of the output showing my
wireless access point, which is running WPA2-PSK
only on 802.11bg channel 6.
It's in a large list of nearby WiFi access points:
root@raspberrypi:~# iwlist scan wlan0 Scan completed : Cell 01 - .... Cell 06 - Address: 00:1D:7E:2E:97:86 Channel:6 Frequency:2.437 GHz (Channel 6) Quality=70/70 Signal level=-36 dBm Encryption key:on ESSID:"FBI_van4" Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 24 Mb/s; 36 Mb/s; 54 Mb/s Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s Mode:Master Extra:tsf=0000000000000000 Extra: Last beacon: 70ms ago IE: Unknown: 00084642495F76616E34 IE: Unknown: 010882848B962430486C IE: Unknown: 030106 IE: Unknown: 2A0104 IE: Unknown: 2F0104 IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : CCMP Pairwise Ciphers (1) : CCMP Authentication Suites (1) : PSK IE: Unknown: 32040C121860 IE: Unknown: DD09001018020014000000 Cell 07 - .... Cell 26 - ....
Network Configuration
Raspbian is a derivative of Debian. This means that all the networking suggestions on this page should work the same way on any variation of Ubuntu Linux.
As with Ubuntu and many other Linux distribution families,
a networkmanager
daemon is available.
My experience is that the network manager daemon causes
far more problems than it solves, and the proper
way to reconfigure and control IP networking is
as follows:
pi@raspberrypi ~ $ sudo vim /etc/resolv.conf pi@raspberrypi ~ $ sudo vim /etc/network/interfaces pi@raspberrypi ~ $ sudo /etc/rc.d/network restart
The constant typing of sudo
quickly becomes
tiresome, and you learn to do administrative work this way:
pi@raspberrypi ~ $ sudo bash root@raspberrypi:# vim /etc/resolv.conf root@raspberrypi:# vim /etc/network/interfaces root@raspberrypi:# /etc/rc.d/network restart root@raspberrypi:# ^D
Static IP Network Configuration
Almost everything is done in /etc/network/interfaces
except for DNS resolution:
pi@raspberrypi ~ $ cat /etc/resolv.conf domain example.com search example.com nameserver 10.1.2.3
In the interfaces
file, a line starting with "#"
is a comment.
"End-of-line comments" are not supported,
comments must be dedicated lines of their own.
Here is an annotated example for IPv4 only.
A later section shows you
how to set up 802.11i/WPA2
so the wlan0
interface can securely associate
with the wireless network.
pi@raspberrypi ~ $ cat /etc/network/interfaces # Define the interfaces to bring up automatically auto lo eth0 wlan0 # Standard 127.0.0.1/8 iface lo inet loopback # eth0 gets 10.1.1.232/24 routing via 10.1.1.254 iface eth0 inet static address 10.1.1.232 netmask 255.255.255.0 gateway 10.1.1.254 # eth0 gets 192.168.0.101/24 routing via 192.168.0.254 iface wlan0 inet static # Comments *can* be indented! # But there can be no content earlier in the line. # You don't have to indent the stanza for each # interface the way I have done it here, but # it does make the file easier to read. address 192.168.0.101 netmask 255.255.255.0 gateway 192.168.0.254
You can be more modern and use address/netmask
instead of a separate line for the netmask as dotted quad:
pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo eth0 wlan0 iface lo inet loopback iface eth0 inet staticaddress 10.1.1.232/24
gateway 10.1.1.254 iface wlan0 inet staticaddress 192.168.0.101/24
gateway 192.168.0.254
Let's say you wanted to have multiple virtual interfaces, so this one machine appears to be multiple IP hosts on the same LAN:
pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo eth0 eth0:0 eth0:1 wlan0 iface lo inet loopback iface eth0 inet static address 10.1.1.232/24 gateway 10.1.1.254 # Only the address/netmask is needed for the virtual interface(s). # The default route follows from the primary (physical) interface. ifaceeth0:0
inet staticaddress 10.1.1.233/24
ifaceeth0:1
inet staticaddress 10.1.1.234/24
ifaceeth0:2
inet staticaddress 10.1.1.235/24
iface wlan0 inet static address 192.168.0.101/24 gateway 192.168.0.254
If, on the other hand, you want to run IPv6:
pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo eth0 wlan0 iface loinet6
loopback iface eth0inet6
staticaddress 2001:1800:1234:90::71/64
gateway 2001:1800:1234:90::1
iface wlan0inet6
staticaddress 2001:1800:1234:91::71/64
gateway 2001:1800:1234:91::1
Finally, you can have multiple IPv4 and multiple
IPv6 addresses all at the same time.
You just have to wait until after all the eth0
IP addresses have been assigned to set the default route
for that interface.
pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo eth0 eth0:0 eth0:1 eth0:2 wlan0 iface lo inet6 loopback iface eth0 inet staticaddress 10.1.1.232/24
up /sbin/ifconfig eth0 inet6 add 2001:1800:1234:90::71/64
up /sbin/ifconfig eth0 inet6 add 2001:1800:1234:90::72/64
up /sbin/ifconfig eth0 inet6 add 2001:1800:1234:90::73/6
ifaceeth0:0
inet staticaddress 10.1.1.233/24
ifaceeth0:1
inet staticaddress 10.1.1.234/24
ifaceeth0:2
inet staticaddress 10.1.1.235/24
ifaceeth0
inet staticup /sbin/route add default gw 10.1.1.254
iface wlan0inet
staticaddress 192.168.0.101/24
gateway 192.168.0.254
Let's check the results.
As an ordinary user, /sbin
isn't in our path.
The first three IPv6 addresses were statically assigned
and are globally routable.
The fourth is automatically configured based on the last
three octets of the MAC address, and is link-local,
not forwarded by an IPv6 router.
pi@raspberrypi ~ $ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:69:be:bb inet addr:10.1.1.232 Bcast:10.1.1.255 Mask:255.255.255.0 inet6 addr: 2001:1800:1234:90::73/64 Scope:Global inet6 addr: 2001:1800:1234:90::72/64 Scope:Global inet6 addr: 2001:1800:1234:90::71/64 Scope:Global inet6 addr: fe80::ba27:ebff:fe69:bebb/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:22943 errors:0 dropped:0 overruns:0 frame:0 TX packets:10662 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:20160989 (19.2 MiB) TX bytes:1791605 (1.7 MiB) eth0:0 Link encap:Ethernet HWaddr b8:27:eb:69:be:bb inet addr:10.1.1.233 Bcast:10.1.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth0:1 Link encap:Ethernet HWaddr b8:27:eb:69:be:bb inet addr:10.1.1.234 Bcast:10.1.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth0:2 Link encap:Ethernet HWaddr b8:27:eb:69:be:bb inet addr:10.1.1.235 Bcast:10.1.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:55548 errors:0 dropped:0 overruns:0 frame:0 TX packets:55548 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:14936316 (14.2 MiB) TX bytes:14936316 (14.2 MiB) wlan0 Link encap:Ethernet HWaddr 08:60:6e:63:7b:80 inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::a60:6eff:fe63:7b80/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:20454 errors:0 dropped:137 overruns:0 frame:0 TX packets:21550 errors:0 dropped:2 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6502212 (6.2 MiB) TX bytes:4679310 (4.4 MiB) pi@raspberrypi ~ $ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.1.1.254 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 wlan0 10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 pi@raspberrypi ~ $ /sbin/route -n -A inet6 Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If 2001:1800:1234:90::/64 :: U 256 0 0 eth0 fe80::/64 :: U 256 0 0 wlan0 fe80::/64 :: U 256 0 0 eth0 ::/0 :: !n -1 1 11 lo ::1/128 :: Un 0 9 44264 lo 2001:1800:1234:90::71/128 :: Un 0 1 0 lo 2001:1800:1234:90::72/128 :: Un 0 1 0 lo 2001:1800:1234:90::73/128 :: Un 0 1 0 lo fe80::a60:6eff:fe63:7b80/128 :: Un 0 1 0 lo fe80::ba27:ebff:fe69:bebb/128 :: Un 0 1 0 lo ff00::/8 :: U 256 0 0 wlan0 ff00::/8 :: U 256 0 0 eth0 ::/0 :: !n -1 1 11 lo
DHCP for Automatic IP Network Configuration
This is very simple.
DHCP will handle changes to /etc/resolv.conf
,
just put the following in the interfaces
file:
pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo eth0 wlan0 iface lo inet loopback iface eth0 inetdhcp
iface wlan0 inetdhcp
To ensure that the DHCP server consistently assigns a desired IP address, specify that IP address for the interface's MAC address. Here is the change to make on the DHCP server:
user@dhcp-server ~ $ cat /etc/dhcpd.conf option domain-name "example.com"; option domain-name-servers 10.1.1.100; default-lease-time 21600; max-lease-time 43200; ddns-update-style none; subnet 10.1.1.0 netmask 255.255.255.0 { # This is the server for this subnet. authoritative; # Default gateway and netmask: option routers 10.1.1.100; option subnet-mask 255.255.255.0; # 24 hours by default, 48 hours max: default-lease-time 86400; max-lease-time 172800 # Make one client appear at a fixed address. host raspberrypi { hardware ethernet b8:27:eb:69:be:bb; fixed-address 10.1.1.232; } }
802.11i — 802.11 WLAN plus WPA2 Security
Let's set up WPA2-PSK security!
Add a stanza to the specification for the wlanN
device:
pi@raspberrypi ~ $ cat /etc/network/interfaces
auto lo eth0 wlan0
iface lo inet loopback
iface eth0 inet dhcp
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Then specify the ESSID, key management, protocol and
pre-shared key in the referenced file, which must be
readable only by root
:
root@raspberrypi:~# ls -l /etc/wpa_supplicant total 44 -rwxr-xr-x 1 root root 945 Nov 12 22:33 action_wpa.sh -rwxr-xr-x 1 root root 25907 Nov 12 22:33 functions.sh -rwxr-xr-x 1 root root 4696 Nov 12 22:33 ifupdown.sh -rw------- 1 root root 171 Apr 19 13:44 wpa_supplicant.conf root@raspberrypi:~# cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="your essid here
" key_mgmt=WPA-PSK proto=WPA2 psk="your passphrase here
" }
I found this a little confusing, as the
iwconfig
command uses the parameter
essid
while the
wpa_supplicant.conf
file must leave off
the "E" for ssid.
Notice that WPA-PSK
means WPA generically,
you then specify the WPA2
parameter
to limit the interface to using WPA2 only.
Otherwise, the interface will prefer WPA2 but silently
roll back to WPA if that is all
that the access point supports.
Of course, that's quite likely what you want.
Watch both the console output and the syslog messages carefully to spot your confusion over the precise form of these parameters! Syslog caught some errors for me that I wasn't seeing on the command line.
See man wpa_supplicant.conf
for
details on other key management schemes,
including WPA-EAP and IEEE 802.1x.
Bringing it up, we see this on the console:
root@raspberrypi:~# ifup wlan0 Internet Systems Consortium DHCP Client 4.2.2 Copyright 2004-2011 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/wlan0/08:60:6e:63:7b:80 Sending on LPF/wlan0/08:60:6e:63:7b:80 Sending on Socket/fallback DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPOFFER from 192.168.0.1 DHCPACK from 192.168.0.1 bound to 192.168.0.101 -- renewal in 781090135 seconds.
At the same time, the following is sent to Syslog.
Notice that it starts dhclient
but then 9 seconds
pass in this case before wpa_supplicant
negotiates
the WPA2-PSK association with the access point.
Then another 10 seconds pass until dhclient
tries
again and this time immediately gets an IP assignment.
That's the result of the varying intervals between
the DHCP transmissions.
Apr 19 13:44:51 raspberrypi wpa_supplicant[12160]: nl80211: Could not configure driver to use managed mode Apr 19 13:44:53 raspberrypi dhclient: Internet Systems Consortium DHCP Client 4.2.2 Apr 19 13:44:53 raspberrypi dhclient: Copyright 2004-2011 Internet Systems Consortium. Apr 19 13:44:53 raspberrypi dhclient: All rights reserved. Apr 19 13:44:53 raspberrypi dhclient: For info, please visit https://www.isc.org/software/dhcp/ Apr 19 13:44:53 raspberrypi dhclient: Apr 19 13:44:53 raspberrypi dhclient: Listening on LPF/wlan0/08:60:6e:63:7b:80 Apr 19 13:44:53 raspberrypi dhclient: Sending on LPF/wlan0/08:60:6e:63:7b:80 Apr 19 13:44:53 raspberrypi dhclient: Sending on Socket/fallback Apr 19 13:44:53 raspberrypi dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7 Apr 19 13:45:00 raspberrypi dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12 Apr 19 13:45:02 raspberrypi wpa_supplicant[12165]: wlan0: Trying to associate with 00:1b:11:43:c4:f0 (SSID='FBI_van4' freq=2422 MHz) Apr 19 13:45:02 raspberrypi wpa_supplicant[12165]: wlan0: Association request to the driver failed Apr 19 13:45:02 raspberrypi wpa_supplicant[12165]: wlan0: Associated with 00:1b:11:43:c4:f0 Apr 19 13:45:02 raspberrypi wpa_supplicant[12165]: wlan0: WPA: Key negotiation completed with 00:1b:11:43:c4:f0 [PTK=CCMP GTK=CCMP] Apr 19 13:45:02 raspberrypi wpa_supplicant[12165]: wlan0: CTRL-EVENT-CONNECTED - Connection to 00:1b:11:43:c4:f0 completed (auth) [id=0 id_str=] Apr 19 13:45:02 raspberrypi ifplugd(wlan0)[1581]: Link beat detected. Apr 19 13:45:02 raspberrypi ifplugd(wlan0)[1581]: Executing '/etc/ifplugd/ifplugd.action wlan0 up'. Apr 19 13:45:02 raspberrypi ifplugd(wlan0)[1581]: client: /sbin/ifup: interface wlan0 already configured Apr 19 13:45:02 raspberrypi ifplugd(wlan0)[1581]: Program executed successfully. Apr 19 13:45:12 raspberrypi dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8 Apr 19 13:45:12 raspberrypi dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67 Apr 19 13:45:12 raspberrypi dhclient: DHCPOFFER from 192.168.0.1 Apr 19 13:45:12 raspberrypi dhclient: DHCPACK from 192.168.0.1 Apr 19 13:45:12 raspberrypi dhclient: bound to 192.168.0.101 -- renewal in 781090135 seconds. Apr 19 13:45:13 raspberrypi sshd[12104]: Received signal 15; terminating. Apr 19 13:45:13 raspberrypi sshd[12250]: Server listening on 0.0.0.0 port 22. Apr 19 13:45:13 raspberrypi ntpd[3301]: Listen normally on 17 wlan0 192.168.0.101 UDP 123 Apr 19 13:45:13 raspberrypi ntpd[3301]: peers refreshed
Then, every ten minutes, we see something like this:
Apr 19 13:47:24 raspberrypi wpa_supplicant[12165]: wlan0: WPA: Group rekeying completed with 00:1b:11:43:c4:f0 [GTK=CCMP] Apr 19 13:57:24 raspberrypi wpa_supplicant[12165]: wlan0: WPA: Group rekeying completed with 00:1b:11:43:c4:f0 [GTK=CCMP] Apr 19 14:07:24 raspberrypi wpa_supplicant[12165]: wlan0: WPA: Group rekeying completed with 00:1b:11:43:c4:f0 [GTK=CCMP] Apr 19 14:17:24 raspberrypi wpa_supplicant[12165]: wlan0: WPA: Group rekeying completed with 00:1b:11:43:c4:f0 [GTK=CCMP]
You can verify the settings with the ifconfig
,
iwconfig
and wpa_cli
commands,
be aware that iwconfig
cannot handle the WPA/WPA2
information and will claim that the mode is "open" meaning
no encryption.
The output of wpa_cli
corrects this:
root@raspberrypi:~# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 08:60:6e:63:7b:80
inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10918 errors:0 dropped:37 overruns:0 frame:0
TX packets:10325 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4052552 (3.8 MiB) TX bytes:4156283 (3.9 MiB)
root@raspberrypi:~# iwconfig wlan0
wlan0 IEEE 802.11bg ESSID:"FBI_van4" Nickname:"rtl_wifi"
Mode:Managed Frequency:2.422 GHz Access Point: 00:1B:11:43:C4:F0
Bit Rate:54 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=100/100 Signal level=100/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
root@raspberrypi:~# wpa_cli status
Selected interface 'wlan0'
bssid=00:1b:11:43:c4:f0
freq=2427
ssid=FBI_van4
id=0
mode=station
wifi_generation=4
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.0.101
address=08:60:6e:63:7b:80
uuid=931a67c6-9a69-536a-a243-3d6ae3974543