PandaBoard A4 wifi module not found


#1

Hello, I’ve followed the very helpful guide on setting up Linux on a pandaboard a while back. Since then there’s been an issue concerning the Wifi module. When typing the ifconfig lo and eth0 popup. I’ve installed the drivers as recommended in the guide. When checking journalctl for wlan0 this is the output:

Oct 16 19:28:20 arm wpa_supplicant[578]: Could not read interface wlan0 flags: No such device
Oct 16 19:28:20 arm wpa_supplicant[578]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Oct 16 19:28:20 arm wpa_supplicant[578]: Could not read interface wlan0 flags: No such device
Oct 16 19:28:20 arm wpa_supplicant[578]: Could not read interface wlan0 flags: No such device
Oct 16 19:28:20 arm wpa_supplicant[578]: WEXT: Could not set interface ‘wlan0’ UP
Oct 16 19:28:20 arm wpa_supplicant[578]: wlan0: Failed to initialize driver interface
Oct 16 19:28:20 arm ifup[482]: Failed to bring up wlan0.
Nov 01 20:24:46 arm wpa_supplicant[553]: Could not read interface wlan0 flags: No such device
Nov 01 20:24:46 arm wpa_supplicant[553]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Nov 01 20:24:46 arm wpa_supplicant[553]: Could not read interface wlan0 flags: No such device
Nov 01 20:24:46 arm wpa_supplicant[553]: Could not read interface wlan0 flags: No such device
Nov 01 20:24:46 arm wpa_supplicant[553]: WEXT: Could not set interface ‘wlan0’ UP
Nov 01 20:24:46 arm wpa_supplicant[553]: wlan0: Failed to initialize driver interface
Nov 01 20:24:46 arm ifup[456]: Failed to bring up wlan0.
Nov 02 17:33:18 arm wpa_supplicant[562]: Could not read interface wlan0 flags: No such device
Nov 02 17:33:18 arm wpa_supplicant[562]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Nov 02 17:33:18 arm wpa_supplicant[562]: Could not read interface wlan0 flags: No such device
Nov 02 17:33:18 arm wpa_supplicant[562]: Could not read interface wlan0 flags: No such device
Nov 02 17:33:18 arm wpa_supplicant[562]: WEXT: Could not set interface ‘wlan0’ UP
Nov 02 17:33:18 arm wpa_supplicant[562]: wlan0: Failed to initialize driver interface
Nov 02 17:33:18 arm ifup[460]: Failed to bring up wlan0.
Nov 02 18:32:09 arm wpa_supplicant[565]: Could not read interface wlan0 flags: No such device
Nov 02 18:32:09 arm wpa_supplicant[565]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Nov 02 18:32:09 arm wpa_supplicant[565]: Could not read interface wlan0 flags: No such device
Nov 02 18:32:09 arm wpa_supplicant[565]: Could not read interface wlan0 flags: No such device
Nov 02 18:32:09 arm wpa_supplicant[565]: WEXT: Could not set interface ‘wlan0’ UP
Nov 02 18:32:09 arm wpa_supplicant[565]: wlan0: Failed to initialize driver interface
Nov 02 18:32:09 arm ifup[471]: Failed to bring up wlan0.
Feb 20 20:15:16 arm wpa_supplicant[577]: Could not read interface wlan0 flags: No such device
Feb 20 20:15:16 arm wpa_supplicant[577]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Feb 20 20:15:16 arm wpa_supplicant[577]: Could not read interface wlan0 flags: No such device
Feb 20 20:15:16 arm wpa_supplicant[577]: Could not read interface wlan0 flags: No such device
Feb 20 20:15:16 arm wpa_supplicant[577]: WEXT: Could not set interface ‘wlan0’ UP
Feb 20 20:15:16 arm wpa_supplicant[577]: wlan0: Failed to initialize driver interface
Feb 20 20:15:16 arm ifup[488]: Failed to bring up wlan0.
Feb 20 22:34:37 arm wpa_supplicant[555]: Could not read interface wlan0 flags: No such device
Feb 20 22:34:37 arm wpa_supplicant[555]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Feb 20 22:34:37 arm wpa_supplicant[555]: Could not read interface wlan0 flags: No such device
Feb 20 22:34:37 arm wpa_supplicant[555]: Could not read interface wlan0 flags: No such device
Feb 20 22:34:37 arm wpa_supplicant[555]: WEXT: Could not set interface ‘wlan0’ UP
Feb 20 22:34:37 arm wpa_supplicant[555]: wlan0: Failed to initialize driver interface
Feb 20 22:34:37 arm ifup[464]: Failed to bring up wlan0.
Feb 21 18:36:00 arm wpa_supplicant[566]: Could not read interface wlan0 flags: No such device
Feb 21 18:36:00 arm wpa_supplicant[566]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Feb 21 18:36:00 arm wpa_supplicant[566]: Could not read interface wlan0 flags: No such device
Feb 21 18:36:01 arm wpa_supplicant[566]: Could not read interface wlan0 flags: No such device
Feb 21 18:36:01 arm wpa_supplicant[566]: WEXT: Could not set interface ‘wlan0’ UP
Feb 21 18:36:01 arm wpa_supplicant[566]: wlan0: Failed to initialize driver interface
Feb 21 18:36:01 arm ifup[468]: Failed to bring up wlan0.

I don’t know if this will prove to be helpful or not, but any recommendations on how to activate wlan0?


#2

@dcruzer231, which kernel version are you running on the Panda? Does it work when you do a full power reset. (Aka unplug the hardware then plug power back in)?

Regards,


#3

I’m running version 4.14. I’ve turned it off and on multiple times while working with it however that hasn’t seemed to fix the issue. I’ve also tried sudo depmod -a to no avail.


#4

@dcruzer231, so I’ve been also testing v4.19.x on the PandaBoard A4 (WiFi also doesn’t work here). (right now v4.19.x-head doesn’t boot)… I tested the PandaBoards ES a few weeks back, and the WiFi was working, I wonder if this is the old missing 32khz clock signal bug again. I’ll dig into it more tomorrow.

Regards,


#5

Sounds good, I should reiterate that I can get connectivity through ethernet, its just an issue with the WIFI module that linux doesn’t want to recognize. I’ve used multiple A4 Pandaboards on the same SD card and all of them have the same issue. I wonder if it’s an issue exclusive to the A versions.


#6

@dcruzer231, i just got it working with this change:

 diff --git a/arch/arm/boot/dts/twl6030.dtsi b/arch/arm/boot/dts/twl6030.dtsi
index c45f97f37563..5ad5f8b993a3 100644
--- a/arch/arm/boot/dts/twl6030.dtsi
+++ b/arch/arm/boot/dts/twl6030.dtsi
@@ -83,6 +83,11 @@
 		regulator-always-on;
 	};
 
+	clk32kg: regulator-clk32kg {
+		compatible = "ti,twl6030-clk32kg";
+		regulator-always-on;
+	};
+
 	twl_usb_comparator: usb-comparator {
 		compatible = "ti,twl6030-usb";
 		interrupts = <4>, <10>;
diff --git a/drivers/regulator/twl6030-regulator.c b/drivers/regulator/twl6030-regulator.c
index 219cbd910dbf..00b1e23e27ed 100644
--- a/drivers/regulator/twl6030-regulator.c
+++ b/drivers/regulator/twl6030-regulator.c
@@ -317,6 +317,13 @@ static struct regulator_ops twl6030fixed_ops = {
 	.get_status	= twl6030reg_get_status,
 };
 
+static struct regulator_ops twl6030_fixed_resource = {
+	.enable	= twl6030reg_enable,
+	.disable	= twl6030reg_disable,
+	.is_enabled	= twl6030reg_is_enabled,
+	.get_status	= twl6030reg_get_status,
+};
+
 /*
  * SMPS status and control
  */
@@ -585,6 +592,19 @@ static const struct twlreg_info TWLSMPS_INFO_##label = { \
 		}, \
 	}
 
+#define TWL6030_FIXED_RESOURCE(label, offset, turnon_delay) \
+static struct twlreg_info TWLRES_INFO_##label = { \
+	.base = offset, \
+	.desc = { \
+	.name = #label, \
+	.id = TWL6030_REG_##label, \
+	.ops = &twl6030_fixed_resource, \
+	.type = REGULATOR_VOLTAGE, \
+	.owner = THIS_MODULE, \
+	.enable_time = turnon_delay, \
+	}, \
+	}
+
 /* VUSBCP is managed *only* by the USB subchip */
 /* 6030 REG with base as PMC Slave Misc : 0x0030 */
 /* Turnon-delay and remap configuration values for 6030 are not
@@ -614,6 +634,7 @@ TWL6030_FIXED_LDO(VDAC, 0x64, 1800, 0);
 TWL6030_FIXED_LDO(VUSB, 0x70, 3300, 0);
 TWL6030_FIXED_LDO(V1V8, 0x16, 1800, 0);
 TWL6030_FIXED_LDO(V2V1, 0x1c, 2100, 0);
+TWL6030_FIXED_RESOURCE(CLK32KG, 0x8C, 0);
 TWL6032_ADJUSTABLE_SMPS(SMPS3, 0x34);
 TWL6032_ADJUSTABLE_SMPS(SMPS4, 0x10);
 TWL6032_ADJUSTABLE_SMPS(VIO, 0x16);
@@ -645,6 +666,7 @@ static u8 twl_get_smps_mult(void)
 #define TWL6030_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6030, label)
 #define TWL6032_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6032, label)
 #define TWLFIXED_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLFIXED, label)
+#define TWLRES_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLRES, label)
 #define TWLSMPS_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLSMPS, label)
 
 static const struct of_device_id twl_of_match[] = {
@@ -672,6 +694,7 @@ static const struct of_device_id twl_of_match[] = {
 	TWLFIXED_OF_MATCH("ti,twl6030-vusb", VUSB),
 	TWLFIXED_OF_MATCH("ti,twl6030-v1v8", V1V8),
 	TWLFIXED_OF_MATCH("ti,twl6030-v2v1", V2V1),
+	TWLRES_OF_MATCH("ti,twl6030-clk32kg", CLK32KG),
 	TWLSMPS_OF_MATCH("ti,twl6032-smps3", SMPS3),
 	TWLSMPS_OF_MATCH("ti,twl6032-smps4", SMPS4),
 	TWLSMPS_OF_MATCH("ti,twl6032-vio", VIO),
wlan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 08:00:28:28:de:5b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

debian@arm:~$ dmesg | grep wlcore
[   10.763366] wlcore: WARNING Detected unconfigured mac address in nvs, derive from fuse instead.
[   10.765655] wlcore: WARNING Your device performance is not optimized.
[   10.783081] wlcore: WARNING Please use the calibrator tool to configure your device.
[   10.790985] wlcore: WARNING Fuse mac address is zero. using random mac
[   10.797698] wlcore: WARNING NIC part of the MAC address wraps around!
[   10.943328] wlcore: loaded

Will push it out shortly…

Regards,


#7

Much obliged!
How would I be able to make this change without doing a complete reinstall of the O.S.?


#8

@dcruzer231, okay finished the bisect on the boot config issue, both the patch and config change are now pushed to the repo:

git clone https://github.com/RobertCNelson/armv7-multiplatform
cd armv7-multiplatform/
git checkout origin/v4.19.x -b tmp
./build_kernel.sh

Then just copy the kernel image, device tree binaries and modules as shown here:

https://www.digikey.com/eewiki/display/linuxonarm/PandaBoard#PandaBoard-CopyKernelImage

and update the uname_r variable in /boot/uEnv.txt

Regards,