10

I built an embedded Linux using Buildroot and I have some trouble to stay connected to my AP. Cannot get an IP address more than once.

I use wpa_supplicant to connect to my AP using WPA2-PSK. It works with other AP such as my smartphone in AP mode.

When I use iwconfig wlan0 I see that I'm associated with my AP

wlan0     IEEE 802.11bgn  ESSID:"ZyXEL_B3B5"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: 90:EF:68:D3:B3:B5   
          Bit Rate=58.5 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=53/70  Signal level=-57 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:1   Missed beacon:0

But I cannot get an IP address with ifup wlan0

udhcpc (v1.22.1) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing

I should say that I'm able to get an IP address only once. If I reboot this is not possible anymore.

I managed to install dhclient instead of using the default DHCP client of Busybox but nothing happens (I stay blocked indefinitely)

dhclient wlan0

According to my kernel messages, it seems that I'm not continuously associated

[  355.459738] wlan0: authenticate with 90:ef:68:d3:b3:b5 (try 1)
[  355.461366] wlan0: authenticated
[  355.461416] wlan0: associate with 90:ef:68:d3:b3:b5 (try 1)
[  355.469353] wlan0: RX AssocResp from 90:ef:68:d3:b3:b5 (capab=0x431 status=0 aid=1)
[  355.469364] wlan0: associated
[  365.547863] wlan0: deauthenticating from 90:ef:68:d3:b3:b5 by local choice (reason=3)
[  365.672765] cfg80211: Calling CRDA to update world regulatory domain
[  367.169736] wlan0: authenticate with 90:ef:68:d3:b3:b5 (try 1)
[  367.171421] wlan0: authenticated
[  367.194859] wlan0: associate with 90:ef:68:d3:b3:b5 (try 1)
[  367.198561] wlan0: RX AssocResp from 90:ef:68:d3:b3:b5 (capab=0x431 status=0 aid=1)
[  367.198584] wlan0: associated
[  377.277864] wlan0: deauthenticating from 90:ef:68:d3:b3:b5 by local choice (reason=3)
[  377.412822] cfg80211: Calling CRDA to update world regulatory domain
[  378.899738] wlan0: authenticate with 90:ef:68:d3:b3:b5 (try 1)
[  378.901668] wlan0: authenticated
[  378.924732] wlan0: associate with 90:ef:68:d3:b3:b5 (try 1)
[  378.928437] wlan0: RX AssocResp from 90:ef:68:d3:b3:b5 (capab=0x431 status=0 aid=1)
[  378.928461] wlan0: associated
[  389.008120] wlan0: deauthenticating from 90:ef:68:d3:b3:b5 by local choice (reason=3)
[  389.182888] cfg80211: Calling CRDA to update world regulatory domain
[  390.689735] wlan0: authenticate with 90:ef:68:d3:b3:b5 (try 1)
[  390.691415] wlan0: authenticated
[  390.714734] wlan0: associate with 90:ef:68:d3:b3:b5 (try 1)
[  390.720847] wlan0: RX AssocResp from 90:ef:68:d3:b3:b5 (capab=0x431 status=0 aid=1)
[  390.720870] wlan0: associated
[  400.811246] wlan0: deauthenticating from 90:ef:68:d3:b3:b5 by local choice (reason=3)
...

The logs of my AP

338     Nov 16 15:50:53 udhcpd[2404]: Received DISCOVER
339     Nov 16 15:50:53 udhcpd[2404]: unicasting packet to client yiaddr
340     Nov 16 15:50:56 udhcpd[2404]: Received DISCOVER
341     Nov 16 15:50:56 udhcpd[2404]: unicasting packet to client yiaddr
342     Nov 16 15:50:59 udhcpd[2404]: Received DISCOVER
343     Nov 16 15:50:59 udhcpd[2404]: unicasting packet to client yiaddr

The logs when it works (only once)

325     Nov 16 15:48:37 udhcpd[2404]: Received DISCOVER
326     Nov 16 15:48:37 udhcpd[2404]: unicasting packet to client yiaddr
327     Nov 16 15:48:37 udhcpd[2404]: Received REQUEST
328     Nov 16 15:48:37 udhcpd[2404]: lease = 11854360
329     Nov 16 15:48:37 udhcpd[2404]: requested = b2a8eb7f
330     Nov 16 15:48:37 udhcpd[2404]: server_id = c0a80101
331     Nov 16 15:48:37 udhcpd[2404]: unicasting packet to client yiaddr

How to solve it?

  • have you tried killing the wpa_supplicant by hand? Have you tried a different kernel? I would also define the country in the configuration file. – Rui F Ribeiro Nov 16 '15 at 10:46
  • yes I've tried to kill wpa_supplicant but I don't have another wifi manager so it does nothing (except deassociated from the AP). I haven't a different kernel to test and it works with other AP. – didil Nov 16 '15 at 11:21
  • Are other devices such as smartphones do connect to your AP successfully? Did you check logs/dmesg on AP itself? – user140866 Nov 16 '15 at 13:12
  • Yes, both my smartphone (Android) and my notebook (Ubuntu 15.10) do connect to my AP any time (even after a reboot). logs on my AP stay empty. – didil Nov 16 '15 at 13:24
  • I added the logs of my AP in my question. – didil Nov 16 '15 at 14:52
6

I changed the "Auto channel" option to a fixed channel and the "Channel width" option to 20 MHz in my AP and it solved my problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.