我想知道我的文件夹中是否有/lib/firmware/
正确使用 wifi 驱动程序的固件。
一般问题是:
root@bananapim2plus:/home/guillaume# ifconfig wlan0 up
SIOCSIFFLAGS: Operation not permitted
我怀疑固件没有正确加载。
所以,我不知道是否可以知道固件需要什么驱动程序bcmdhd
。
加载此驱动程序的一些信息:
# iwconfig
lo no wireless extensions.
tunl0 no wireless extensions.
wlan0 IEEE 802.11 Access Point: Not-Associated
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 invalid crypt:0 invalid misc:0
eth0 no wireless extensions.
p2p0 IEEE 802.11bg ESSID:off/any
Mode:Managed Access Point: Not-Associated
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
# modinfo bcmdhd
filename: /lib/modules/3.4.112-sun8i/kernel/drivers/net/wireless/bcmdhd/bcmdhd.ko
license: GPL v2
alias: sdio:c00v*d*
alias: sdio:c*v02D0dA8E7*
alias: sdio:c*v02D0d4324*
alias: sdio:c*v02D0d4334*
alias: sdio:c*v02D0d4330*
alias: sdio:c*v02D0d4319*
alias: sdio:c*v02D0d4329*
alias: sdio:c*v02D0d0493*
alias: sdio:c*v02D0d0492*
alias: sdio:c*v02D0d0000*
depends:
intree: Y
vermagic: 3.4.112-sun8i SMP preempt mod_unload modversions ARMv7 p2v8
parm: dhd_doflow:uint
parm: dhd_dpcpoll:uint
parm: clockoverride:SDIO card clock override (int)
parm: sd_msglevel:uint
parm: sd_power:uint
parm: sd_clock:uint
parm: sd_divisor:uint
parm: sd_sdmode:uint
parm: sd_hiok:uint
parm: sd_f2_blocksize:int
parm: g_assert_type:int
parm: dhd_oob_gpio_num:DHD oob gpio number (int)
parm: info_string:string
parm: op_mode:int
parm: dhd_msg_level:int
parm: iw_msg_level:int
parm: wl_dbg_level:int
parm: android_msg_level:int
parm: config_msg_level:int
parm: dhd_arp_enable:uint
parm: dhd_arp_mode:uint
parm: disable_proptx:int
parm: firmware_path:string
parm: nvram_path:string
parm: config_path:string
parm: dhd_watchdog_ms:uint
parm: dhd_console_ms:uint
parm: dhd_slpauto:uint
parm: dhd_pkt_filter_enable:uint
parm: dhd_pkt_filter_init:uint
parm: dhd_master_mode:uint
parm: dhd_watchdog_prio:int
parm: dhd_dpc_prio:int
parm: dhd_rxf_prio:int
parm: dhd_dongle_ramsize:int
parm: instance_base:int
parm: iface_name:string
parm: dhd_idletime:int
parm: dhd_poll:uint
parm: dhd_intr:uint
parm: dhd_sdiod_drive_strength:uint
parm: dhd_txbound:uint
parm: dhd_rxbound:uint
parm: dhd_deferred_tx:uint
parm: dhd_pktgen:uint
parm: dhd_pktgen_len:uint
# iwlist wlan0 scan
wlan0 Interface doesn't support scanning.
该芯片是AP6212,带有内置wifi和BT。
wifi芯片是Broadcom BCM43438
编辑:
这是dmesg
加载驱动后的情况:
[ 3554.318513] dhd_module_init: in
[ 3554.318606] ======== bcm_wlan_set_plat_data ========
[ 3554.318628] bcm_wlan_get_oob_irq enter.
[ 3554.318726] gpio [202] map to virq [10] ok
[ 3554.318737] host_oob_irq: 10
[ 3554.318747] host_oob_irq_flags=4
[ 3554.318761] dhd_wifi_platform_load: Enter
[ 3554.318798] Power-up adapter 'DHD generic adapter'
[ 3554.318881] wifi_platform_set_power = 1
[ 3554.318891] ======== PULL WL_REG_ON HIGH! ========
[ 3554.318905] [wifi_pm]: set wl_reg_on 1 !
[ 3554.620077] wifi_platform_bus_enumerate device present 1
[ 3554.620094] ======== Card detection to detect SDIO card! ========
[ 3554.620170] [mmc]: sdc1 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 3554.621769] [mmc]: sdc1 power_supply is null
[ 3554.640176] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 3554.663569] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 3554.666448] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 3554.669198] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 3554.681097] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[ 3554.683035] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 3554.684883] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 3554.688154] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[ 3554.794874] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B
[ 3554.795309] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B
[ 3554.795918] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 3554.801215] mmc1: new high speed SDIO card at address 0001
[ 3554.803707] *******************sdio init ok*******************
[ 3554.820313] bcmsdh_register: register client driver
[ 3554.820838] bcmsdh_sdmmc: bcmsdh_sdmmc_probe Enter
[ 3554.821258] bcmsdh_sdmmc: bcmsdh_sdmmc_probe Enter
[ 3554.821307] bus num (host idx)=1, slot num (rca)=1
[ 3554.821349] found adapter info 'DHD generic adapter'
[ 3554.824019] F1 signature read @0x18000000=0x1540a9a6
[ 3554.835758] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4
[ 3554.838490] DHD: dongle ram size is set to 524288(orig 524288) at 0x0
[ 3554.838903] wifi_platform_get_mac_addr
[ 3554.838947] dhd_custom_get_mac_address Enter
[ 3554.838996] dhd_custom_get_mac_address wifi_mac=
[ 3554.842332] wl_create_event_handler(): thread:wl_event_handler:48f6 started
[ 3554.842386] tsk Enter, tsk = 0xca361430
[ 3554.846837] p2p0: P2P Interface Registered
[ 3554.847434] dhd_attach(): thread:dhd_watchdog_thread:48f7 started
[ 3554.847818] dhd_attach(): thread:dhd_dpc:48f8 started
[ 3554.848101] dhd_attach(): thread:dhd_rxf:48f9 started
[ 3554.848170] dhd_deferred_work_init: work queue initialized
[ 3554.849269] dhd_custom_get_mac_address Enter
[ 3554.849327] dhd_custom_get_mac_address wifi_mac=
[ 3554.849376] Dongle Host Driver, version 1.201.34.2 (r491657)
[ 3554.849401] Compiled in drivers/net/wireless/bcmdhd on May 31 2016 at 18:59:58
[ 3554.857790] Register interface [wlan0] MAC: 00:90:4c:11:22:33
[ 3554.857945] dhd_prot_ioctl : bus is down. we have nothing to do
[ 3554.858147] bcmsdh_oob_intr_unregister: Enter
[ 3554.858190] bcmsdh_oob_intr_unregister: irq is not registered
[ 3554.858249] dhd_txglom_enable: enable 0
[ 3554.858284] dhd_bus_devreset: WLAN OFF DONE
[ 3554.858433] wifi_platform_set_power = 0
[ 3554.858470] ======== PULL WL_REG_ON LOW! ========
[ 3554.858508] [wifi_pm]: set wl_reg_on 0 !
[ 3554.858843] dhd_module_init: Exit err=0
然后,后来:
3582.385697] dhd_open: Enter eeb0f000
[ 3582.385725] Dongle Host Driver, version 1.201.34.2 (r491657)
[ 3582.385732] Compiled in drivers/net/wireless/bcmdhd on May 31 2016 at 18:59:58
[ 3582.385746] wl_android_wifi_on in 1
[ 3582.385757] wl_android_wifi_on in 2: g_wifi_on=0
[ 3582.385768] wifi_platform_set_power = 1
[ 3582.385777] ======== PULL WL_REG_ON HIGH! ========
[ 3582.385788] [wifi_pm]: set wl_reg_on 1 !
[ 3582.690095] sdio_reset_comm():
[ 3582.690121] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 3582.692314] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 3582.693424] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing LEGACY(SDR12) dt B
[ 3582.694492] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing LEGACY(SDR12) dt B
[ 3582.719356] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[ 3582.723753] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 3582.728098] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 3582.736031] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[ 3582.993042] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 3582.993574] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 3582.994313] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 3582.995842] dhd_bus_devreset: == WLAN ON ==
[ 3582.996150] F1 signature read @0x18000000=0x1540a9a6
[ 3583.003433] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4
[ 3583.005948] DHD: dongle ram size is set to 524288(orig 524288) at 0x0
[ 3583.006979] dhd_conf_read_config: Ignore config file /lib/firmware/ap6212/config.txt
[ 3583.007056] dhd_conf_set_fw_name_by_chip: firmware_path=/lib/firmware/ap6212/fw_bcm43438a0.bin
[ 3583.007111] Final fw_path=/lib/firmware/ap6212/fw_bcm43438a0.bin
[ 3583.007153] Final nv_path=/lib/firmware/ap6212/nvram.txt
[ 3583.007191] Final conf_path=/lib/firmware/ap6212/config.txt
[ 3583.009955] dhdsdio_download_code_file: Open firmware file failed /lib/firmware/ap6212/fw_bcm43438a0.bin
[ 3583.010180] _dhdsdio_download_firmware: dongle image file download failed
[ 3583.010332] dhd_net_bus_devreset: dhd_bus_devreset: -35
[ 3583.010386] dhd_prot_ioctl : bus is down. we have nothing to do
[ 3583.010436] dhd_net_bus_devreset: dhd_bus_devreset: -35
[ 3583.010591] wifi_platform_set_power = 0
[ 3583.010630] ======== PULL WL_REG_ON LOW! ========
[ 3583.010671] [wifi_pm]: set wl_reg_on 0 !
[ 3583.010715] wl_android_wifi_on: Failed
[ 3583.010756] dhd_open : wl_android_wifi_on failed (-35)
[ 3583.010803] dhd_stop: Enter eeb0f000
[ 3583.010839] wl_android_wifi_off in 1
[ 3583.010876] wl_android_wifi_off in 2: g_wifi_on=0
[ 3583.010913] wl_android_wifi_off out
[ 3583.010946] dhd_stop: Exit
[ 3583.010992] dhd_open: Exit ret=-1
[ 3583.080833] dhd_ioctl_entry: Interface is down
[ 3583.177057] dhd_ioctl_entry: Interface is down
[ 3583.177092] dhd_ioctl_entry: Interface is down
[ 3583.177108] dhd_ioctl_entry: Interface is down
[ 3583.177127] dhd_ioctl_entry: Interface is down
[ 3583.177145] dhd_ioctl_entry: Interface is down