четверг, 19 мая 2016 г.

Планшет от DEPO или секс с AzureWave AW-AH691A (Broadcom BCM43241)



Итак у нас есть задача: завести WiFi от модуля AzureWave AW-AH691A. Поиск по названию модуля не дает ровным счетом ничего (: есть только один сайт что-либо просняющий:

http://www.embeddedworks.net/wlan523.html

на страничке нет абсолютно ничего, кроме упоминания чипсета на котором это все построено, а именно Broadcom BCM43241.

Итак что нам надо? В первую очередь накатываем Debian, да не простой а с non-free. ( нам нужны драйвера броадкома )
После установки мы увидим что модуль у нас не определился, но это не беда (:
Необходимо проверить что установлен пакет firmware-brcm80211

в консоль пишем:

# dmesg | grep brcm

и ищем что-то похожее наbrcmfmac_sdio mmc1:0001:1: firmware: failed to load brcm/brcmfmac43340-sdio.bin

как видим не загружается файл связанный с brcmfmac43340-sdio.bin
К слову у меня это был brcmfmac43241b4-sdio.
недостающий файл мы можем взять из nvram файла. для этого сделаем следующие шаги:

# mount -t efivarfs efivarfs /sys/firmware/efi/efivars

и в зависимости от того чего не хватает выполним

# cp /sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113 /lib/firmware/brcm/brcmfmac43241b4-sdio.txt

или

# cp /sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113 /lib/firmware/brcm/brcm/brcmfmac43340-sdio.txt

есть еще вариант взять файлик тут: https://github.com/jfwells/linux-asus-t100ta/blob/master/nvram/lib/firmware/brcm/brcmfmac43241b4-sdio.txt
после перегружаем модуль драйвера:

# modprobe -r brcmfmac # sudo modprobe brcmfmac

ИИИИ ничего не работает....

Точнее работает, но не так как нам бы хотелось (:

Если в течении 6-8 секунд перегрузить модуль, поднять интерфейс и просканировать сеть - то мы получим результаты сканирования и даже сможем подключиться. А если не успеть - модуль уснет. Нам это не подходит (:


поэтому колхозим небольшой костыль:


добавим сервис

# nano /etc/systemd/system/wifi_fix.service

[Unit]
Description=SCRIPT TO FIX WIFI
After=syslog.target
[Service]
ExecStart=/usr/script/wifi_fix.sh
Type=oneshot
[Install]
WantedBy=multi-user.target



и сделаем сам скрипт для изменения управления питанием с auto на on:# mkdir /usr/script


# nano /usr/script/wifi_fix.sh

#!/bin/sh
modprobe -r brcmfmac brcmutil
echo on > /sys/bus/platform/drivers/sdhci-acpi/INT33BB\:00/power/control
modprobe brcmfmac 

добавим разрешение на исполнение файла:
chmod +x /usr/script/wifi_fix.sh

теперь добавим скрипт в sysctl:

# systemctl daemon-reload
# systemctl enable wifi_fix.service

После перезагружаемся и все должно работать (: