Raspberry Pi 3B+ Archlinux - automatické připojení k wifi

Zdravím, měl bych dotaz. Chtěl bych docílit aby se raspberry pi 3B+ (dále jen rpi) samo po startu připojilo k wifi pokud je dostupná.
Na většině distribucí co jsem používal stačilo informace o síti zapsat do /etc/wpa_supplicant/wpa_supplicant.conf a povolit supplicnat po startu, zde to ale nefunguje. Zkoušeno na čistém aktualizovaném Archlinuxu pro architekturu armv7.

V případě že v systemd povolím wpa_supplicant.service tak poté mi to po restartu do logu vypíše
Kód: [Vybrat]
úno 25 22:29:58 alarmpi systemd[1]: Starting WPA supplicant...
úno 25 22:29:58 alarmpi wpa_supplicant[272]: Successfully initialized wpa_supplicant
úno 25 22:29:58 alarmpi systemd[1]: Started WPA supplicant.
Ale rozhraní je pořád down.


Pokud se pokusím připojit pomocí příkazu: wpa_supplicant -B -Dnl80211 -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -d
tak se připojím a po zavolání dhcpcd dostanu i IP adresu.
V logu dostanu toto
Kód: [Vybrat]
wpa_supplicant v2.6
Successfully initialized wpa_supplicant
Initializing interface 'wlan0' conf '/etc/wpa_supplicant/wpa_supplicant.conf' driver 'nl80211' ctrl_interface 'N/A' bridge 'N/A'
Configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' -> '/etc/wpa_supplicant/wpa_supplicant.conf'
Reading configuration file '/etc/wpa_supplicant/wpa_supplicant.conf'
ctrl_interface='/var/run/wpa_supplicant'
ctrl_interface_group='wheel'
update_config=1
country='CZ'
ap_scan=1
Priority group 0
   id=0 ssid='SiliconHill'
nl80211: Using driver-based roaming
nl80211: TDLS supported
nl80211: Supported cipher 00-0f-ac:1
nl80211: Supported cipher 00-0f-ac:5
nl80211: Supported cipher 00-0f-ac:2
nl80211: Supported cipher 00-0f-ac:4
nl80211: Supported cipher 00-0f-ac:6
nl80211: Using driver-based off-channel TX
nl80211: Supported vendor command: vendor_id=0x1018 subcmd=1
nl80211: Use separate P2P group interface (driver advertised support)
nl80211: Enable multi-channel concurrent (driver advertised support)
nl80211: use P2P_DEVICE support
nl80211: interface wlan0 in phy phy0
nl80211: Set mode ifindex 3 iftype 2 (STATION)
nl80211: Subscribe to mgmt frames with non-AP handle 0x120e220
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=0104
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=040a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=040b
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=040c
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=040d
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=090a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=090b
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=090c
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=090d
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=0409506f9a09
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=7f506f9a09
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=0801
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=040e
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=06
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=0a07
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=0a11
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=0a1a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=1101
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=1102
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=0505
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x120e220 match=0500
rfkill: initial event: idx=1 type=1 op=0 soft=0 hard=0
netlink: Operstate: ifindex=3 linkmode=1 (userspace-control), operstate=5 (IF_OPER_DORMANT)
Add interface wlan0 to a new radio phy0
nl80211: Regulatory information - country=00
nl80211: 2402-2472 @ 40 MHz 20 mBm
nl80211: 2457-2482 @ 20 MHz 20 mBm (no IR)
nl80211: 2474-2494 @ 20 MHz 20 mBm (no OFDM) (no IR)
nl80211: 5170-5250 @ 80 MHz 20 mBm (no IR)
nl80211: 5250-5330 @ 80 MHz 20 mBm (DFS) (no IR)
nl80211: 5490-5730 @ 160 MHz 20 mBm (DFS) (no IR)
nl80211: 5735-5835 @ 80 MHz 20 mBm (no IR)
nl80211: 57240-63720 @ 2160 MHz 0 mBm
nl80211: Added 802.11b mode based on 802.11g information
wlan0: Own MAC address: b8:27:eb:f4:1b:e7
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=0 set_tx=0 seq_len=0 key_len=0
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=1 set_tx=0 seq_len=0 key_len=0
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=2 set_tx=0 seq_len=0 key_len=0
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=3 set_tx=0 seq_len=0 key_len=0
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=4 set_tx=0 seq_len=0 key_len=0
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=5 set_tx=0 seq_len=0 key_len=0
wlan0: RSN: flushing PMKID list in the driver
nl80211: Flush PMKIDs
TDLS: TDLS operation supported by driver
TDLS: Driver uses internal link setup
TDLS: Driver does not support TDLS channel switching
wlan0: WPS: UUID based on MAC address: 171a15bc-4c1a-5f14-b9df-d3cab72bdf4c
ENGINE: Loading dynamic engine
ENGINE: Loading dynamic engine
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: Supplicant port status: Unauthorized
nl80211: Skip set_supp_port(unauthorized) while not associated
EAPOL: KEY_RX entering state NO_KEY_RECEIVE
EAPOL: SUPP_BE entering state INITIALIZE
EAP: EAP entering state DISABLED
ctrl_interface_group=998 (from group name 'wheel')
wlan0: Added interface wlan0
wlan0: State: DISCONNECTED -> DISCONNECTED
nl80211: Set wlan0 operstate 0->0 (DORMANT)
netlink: Operstate: ifindex=3 linkmode=-1 (no change), operstate=5 (IF_OPER_DORMANT)
nl80211: Create interface iftype 10 (P2P_DEVICE)
nl80211: New P2P Device interface p2p-dev-wlan0 (0x2) created
Initializing interface 'p2p-dev-wlan0' conf '/etc/wpa_supplicant/wpa_supplicant.conf' driver 'nl80211' ctrl_interface '/var/run/wpa_supplicant' bridge 'N/A'
Configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' -> '/etc/wpa_supplicant/wpa_supplicant.conf'
Reading configuration file '/etc/wpa_supplicant/wpa_supplicant.conf'
ctrl_interface='/var/run/wpa_supplicant'
ctrl_interface_group='wheel'
update_config=1
country='CZ'
ap_scan=1
Priority group 0
   id=0 ssid='SiliconHill'
nl80211: Using driver-based roaming
nl80211: TDLS supported
nl80211: Supported cipher 00-0f-ac:1
nl80211: Supported cipher 00-0f-ac:5
nl80211: Supported cipher 00-0f-ac:2
nl80211: Supported cipher 00-0f-ac:4
nl80211: Supported cipher 00-0f-ac:6
nl80211: Using driver-based off-channel TX
nl80211: Supported vendor command: vendor_id=0x1018 subcmd=1
nl80211: Use separate P2P group interface (driver advertised support)
nl80211: Enable multi-channel concurrent (driver advertised support)
nl80211: use P2P_DEVICE support
nl80211: interface p2p-dev-wlan0 in phy phy0
nl80211: Set mode ifindex 0 iftype 10 (P2P_DEVICE)
nl80211: Failed to set interface 0 to mode 10: -22 (Invalid argument)
nl80211: Subscribe to mgmt frames with non-AP handle 0x1223620
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=0104
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=040a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=040b
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=040c
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=040d
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=090a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=090b
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=090c
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=090d
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=0409506f9a09
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=7f506f9a09
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=0801
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=040e
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=06
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=0a07
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=0a11
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=0a1a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=1101
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=1102
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=0505
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x1223620 match=0500
nl80211: Use (wlan0) to initialize P2P Device rfkill
rfkill: initial event: idx=1 type=1 op=0 soft=0 hard=0
nl80211: Start P2P Device p2p-dev-wlan0 (0x2): Success
Add interface p2p-dev-wlan0 to existing radio phy0
nl80211: Regulatory information - country=CZ (DFS-ETSI)
nl80211: 2400-2483 @ 40 MHz 20 mBm
nl80211: 5150-5250 @ 80 MHz 23 mBm (no outdoor)
nl80211: 5250-5350 @ 80 MHz 20 mBm (no outdoor) (DFS)
nl80211: 5470-5725 @ 160 MHz 26 mBm (DFS)
nl80211: 57000-66000 @ 2160 MHz 40 mBm
nl80211: Added 802.11b mode based on 802.11g information
p2p-dev-wlan0: Own MAC address: 56:f8:91:8c:c9:4f
p2p-dev-wlan0: RSN: flushing PMKID list in the driver
nl80211: Flush PMKIDs
p2p-dev-wlan0: State: DISCONNECTED -> INACTIVE
p2p-dev-wlan0: WPS: UUID from the first interface: 171a15bc-4c1a-5f14-b9df-d3cab72bdf4c
ENGINE: Loading dynamic engine
ENGINE: Loading dynamic engine
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: Supplicant port status: Unauthorized
nl80211: Skip set_supp_port(unauthorized) while not associated
EAPOL: KEY_RX entering state NO_KEY_RECEIVE
EAPOL: SUPP_BE entering state INITIALIZE
EAP: EAP entering state DISABLED
Using existing control interface directory.
ctrl_interface_group=998 (from group name 'wheel')
P2P: Add operating class 81
P2P: Channels - hexdump(len=13): 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
P2P: Add operating class 115
P2P: Channels - hexdump(len=4): 24 28 2c 30
P2P: Add operating class 116
P2P: Channels - hexdump(len=2): 24 2c
P2P: Add operating class 117
P2P: Channels - hexdump(len=2): 28 30
P2P: Add operating class 128
P2P: Channels - hexdump(len=4): 24 28 2c 30
P2P: Add operating class 130
P2P: Channels - hexdump(len=4): 24 28 2c 30
P2P: Own listen channel: 81:1
P2P: Random operating channel: 81:6
P2P: initialized
P2P: channels: 81:1,2,3,4,5,6,7,8,9,10,11,12,13 115:36,40,44,48 116:36,44 117:40,48 128:36,40,44,48 130:36,40,44,48
P2P: cli_channels:
p2p-dev-wlan0: Added interface p2p-dev-wlan0
p2p-dev-wlan0: State: INACTIVE -> DISCONNECTED
nl80211: Set p2p-dev-wlan0 operstate 0->0 (DORMANT)
netlink: Operstate: ifindex=0 linkmode=-1 (no change), operstate=5 (IF_OPER_DORMANT)
p2p-dev-wlan0: Determining shared radio frequencies (max len 2)
p2p-dev-wlan0: Shared frequencies (len=0): completed iteration
P2P: Add operating class 81
P2P: Channels - hexdump(len=13): 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
P2P: Add operating class 115
P2P: Channels - hexdump(len=4): 24 28 2c 30
P2P: Add operating class 116
P2P: Channels - hexdump(len=2): 24 2c
P2P: Add operating class 117
P2P: Channels - hexdump(len=2): 28 30
P2P: Add operating class 128
P2P: Channels - hexdump(len=4): 24 28 2c 30
P2P: Add operating class 130
P2P: Channels - hexdump(len=4): 24 28 2c 30
P2P: Update channel list
P2P: channels: 81:1,2,3,4,5,6,7,8,9,10,11,12,13 115:36,40,44,48 116:36,44 117:40,48 128:36,40,44,48 130:36,40,44,48
P2P: cli_channels:
Daemonize..

Pokud ale upravím wpa_supplicant.service tak že ExecStart=/usr/bin/wpa_supplicant -B -Dnl80211 -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -d
tak poté se wifi nepřipojí a v logu mám:
Kód: [Vybrat]
úno 25 22:24:53 alarmpi systemd[1]: Starting WPA supplicant...
úno 25 22:24:53 alarmpi wpa_supplicant[270]: wpa_supplicant v2.6
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Successfully initialized wpa_supplicant
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Initializing interface 'wlan0' conf '/etc/wpa_supplicant/wpa_supplicant.conf' driver 'nl80211' ctrl_interface 'N/A' bridge>
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' -> '/etc/wpa_supplicant/wpa_supplicant.conf'
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Reading configuration file '/etc/wpa_supplicant/wpa_supplicant.conf'
úno 25 22:24:53 alarmpi wpa_supplicant[270]: ctrl_interface='/var/run/wpa_supplicant'
úno 25 22:24:53 alarmpi wpa_supplicant[270]: ctrl_interface_group='wheel'
úno 25 22:24:53 alarmpi wpa_supplicant[270]: update_config=1
úno 25 22:24:53 alarmpi wpa_supplicant[270]: country='CZ'
úno 25 22:24:53 alarmpi wpa_supplicant[270]: ap_scan=1
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Priority group 0
úno 25 22:24:53 alarmpi wpa_supplicant[270]:    id=0 ssid='SiliconHill'
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Could not read interface wlan0 flags: No such device
úno 25 22:24:53 alarmpi wpa_supplicant[270]: nl80211: Driver does not support authentication/association or connect commands
úno 25 22:24:53 alarmpi wpa_supplicant[270]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
úno 25 22:24:53 alarmpi wpa_supplicant[270]: nl80211: Remove monitor interface: refcount=0
úno 25 22:24:53 alarmpi wpa_supplicant[270]: netlink: Operstate: ifindex=0 linkmode=0 (kernel-control), operstate=6 (IF_OPER_UP)
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Could not read interface wlan0 flags: No such device
úno 25 22:24:53 alarmpi wpa_supplicant[270]: nl80211: Set mode ifindex 0 iftype 2 (STATION)
úno 25 22:24:53 alarmpi wpa_supplicant[270]: nl80211: Failed to set interface 0 to mode 2: -19 (No such device)
úno 25 22:24:53 alarmpi wpa_supplicant[270]: wlan0: Failed to initialize driver interface
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Failed to add interface wlan0
úno 25 22:24:53 alarmpi wpa_supplicant[270]: wlan0: Cancelling scan request
úno 25 22:24:53 alarmpi wpa_supplicant[270]: wlan0: Cancelling authentication timeout
úno 25 22:24:53 alarmpi wpa_supplicant[270]: Off-channel: Clear pending Action frame TX (pending_action_tx=(nil)
úno 25 22:24:53 alarmpi systemd[1]: wpa_supplicant.service: Main process exited, code=exited, status=255/EXCEPTION
úno 25 22:24:53 alarmpi systemd[1]: wpa_supplicant.service: Failed with result 'exit-code'.
úno 25 22:24:53 alarmpi systemd[1]: Failed to start WPA supplicant.
Z mého laického pohledu to vypadá jako kdyby se wpa_supplicant pokoušel připojit k wifi ještě dříve než kernel najde síťovou kartu. Ale je to jen laický odhad. Vím že si můžu udělat vlastní skript co se mi pustí po naběhnutí systemu a připojí se k wifi protože poté už wpa_supplicant funguje, ale já hledám nějaké čistější řešení.
Za každou radu díky


Informace co by se mohli hodit:

/etc/wpa_supplicant/wpa_supplicant.conf
Kód: [Vybrat]
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
update_config=1
country=CZ

ap_scan=1

network={
  ssid="SiliconHill"
  scan_ssid=1
  key_mgmt=WPA-EAP
  identity="jmeno"
  password="heslo"
  eap=PEAP
  phase1="peaplabel=0"
  phase2="auth=MSCHAPV2"
}

uname -a
Kód: [Vybrat]
Linux alarmpi 4.19.23-2-ARCH #1 SMP PREEMPT Sat Feb 23 19:03:59 UTC 2019 armv7l GNU/Linux

lsmod
Kód: [Vybrat]
Module                  Size  Used by
btsdio                 16384  0
bluetooth             364544  2 btsdio
ecdh_generic           28672  1 bluetooth
brcmfmac              212992  0
brcmutil               16384  1 brcmfmac
bcm2835_codec          36864  0
bcm2835_v4l2           45056  0
cfg80211              643072  1 brcmfmac
v4l2_mem2mem           24576  1 bcm2835_codec
bcm2835_mmal_vchiq     28672  2 bcm2835_codec,bcm2835_v4l2
v4l2_common            16384  1 bcm2835_v4l2
videobuf2_vmalloc      16384  1 bcm2835_v4l2
videobuf2_dma_contig    20480  1 bcm2835_codec
videobuf2_memops       16384  2 videobuf2_dma_contig,videobuf2_vmalloc
videobuf2_v4l2         24576  3 bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem
raspberrypi_hwmon      16384  0
videobuf2_common       45056  4 bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem,videobuf2_v4l2
hwmon                  16384  1 raspberrypi_hwmon
videodev              180224  6 bcm2835_codec,v4l2_common,videobuf2_common,bcm2835_v4l2,v4l2_mem2mem,videobuf2_v4l2
media                  32768  2 videodev,v4l2_mem2mem
vc_sm_cma              20480  1 bcm2835_mmal_vchiq
bcm2835_rng            16384  0
rng_core               16384  1 bcm2835_rng
uio_pdrv_genirq        16384  0
fixed                  16384  0
uio                    20480  1 uio_pdrv_genirq
sch_fq_codel           20480  2
snd_bcm2835            32768  0
snd_pcm                90112  1 snd_bcm2835
snd_timer              32768  1 snd_pcm
snd                    65536  3 snd_timer,snd_bcm2835,snd_pcm
ip_tables              24576  0
x_tables               32768  1 ip_tables
ipv6                  446464  42


Re:Raspberry Pi 3B+ Archlinux - automatické připojení k wifi
« Odpověď #1 kdy: 27. 02. 2019, 09:58:50 »
Tak jsem ten problem vyřešil. Zatímco v ostatních distribucích je pro připojení spustit wpa_supplicant.service tak v archlinuxu pokud potřebujete např. připojit wlan0 k wifi tak je potřeba spustit službu wpa_supplicant@wlan0.service. Tato služba se spustí už správně - tedy po inicializaci síťové karty kernelem a připojení proběhne správně.