how to manually load wlan module in Android gingerbread on Nexus S

Thuy Dang picture Thuy Dang · Nov 4, 2011 · Viewed 8.5k times · Source

I'm trying to use command line to connect to ad-hoc network without Wifi in Settings activated. When loading with 'insmod /system/modules/ bcm4329.ko' my nexus S just hangs. 'dmesg' shows that firmware not found; fw_bcm4329.bin is actually in /system/vendor/firmware/ fw_bcm4329.bin:

<4>[  354.173186] DHD: dongle ram size is set to 294912(orig 294912)
<4>[  354.174251] _dhdsdio_download_firmware: dongle image file
download failed
<4>[  354.174441] dhd_bus_start: dhdsdio_probe_download failed.
firmware = /system/etc/firmware/fw_bcm4329.bin nvram = /proc/
calibration 
<4>[  354.174600] dhdsdio_probe: failed
<4>[  365.941444] dhd_module_init: sdio_register_driver timeout

Linking the firmware to desired location doesn't help. Question: Can anyone help me understand how Nexus S loads this module?

The file /hardware/libhardware_legacy/wifi/wifi.c has following lines:

static const char IFACE_DIR[]           = "/data/system/
wpa_supplicant";
static const char DRIVER_MODULE_NAME[]  = WIFI_DRIVER_MODULE_NAME;
static const char DRIVER_MODULE_TAG[]   = WIFI_DRIVER_MODULE_NAME " ";
static const char DRIVER_MODULE_PATH[]  = WIFI_DRIVER_MODULE_PATH;
static const char DRIVER_MODULE_ARG[]   = WIFI_DRIVER_MODULE_ARG;
static const char FIRMWARE_LOADER[]     = WIFI_FIRMWARE_LOADER;
static const char DRIVER_PROP_NAME[]    = "wlan.driver.status";

Question: is the Path to wifi module redefined somewhere?

Thanks

Answer

Thuy Dang picture Thuy Dang · Apr 25, 2012

I found the answer with the help from android_platform group. This works for CM7 on nexus s:

busybox insmod /system/modules/bcm4329.ko firmware_path=/system/vendor/ firmware/fw_bcm4329.bin nvram_path=/system/vendor/firmware/ nvram_net.txt