前回、MAC80211とATH10Kのビルドに成功。原因はbackportsが新しすぎたためか?(分析はできていない)。ビルドしたドライバ一式をインストール(insmod)してみたところ途中までは成功したが、最後のath10k_pci.koドライバロード時にファームが所定の場所にないというエラーが出た。

【関連記事】
【組込ボードで無線LAN】②(無線LANカードN-6300を組込ボードに接続するには?)
【組込ボードで無線LAN】⑧(iwのビルド:後編-1)【組込ボードで無線LAN】⑰(QCA9377-5を挿してみた)
【組込ボードで無線LAN】㉓(backportをビルドしてみる‐2)
【組込ボードで無線LAN】㉘(backportをインストールする-2)
  • 前回の振り返り
ホームディレクトリに置いたドライバたちをインストール(insmod)したところ、こんなエラーが出た。ファームがないと言われてる感じ。とりあえずリブートした。
# insmod ./compat.ko
Loading modules backported from Linux version v4.4.2-0-g1cb8570
Backport generated by backports.git v4.4.2-1-0-gbec4037
# insmod ./cfg80211.ko
# insmod ./mac80211.ko
# insmod ./ath.ko
# insmod ./ath10k_core.ko
# insmod ./ath10k_pci.ko
PCI: enabling device 0000:01:00.0 (0140 -> 0142)
ath10k_pci 0000:01:00.0: pci irq msi interrupts 1 irq_mode 0 reset_mode 0
# ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA9377/hw1.0/firmware-5.bin': -2
ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA9377/hw1.0/firmware-4.bin': -2
ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA9377/hw1.0/firmware-3.bin': -2
ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA9377/hw1.0/firmware-2.bin': -2
ath10k_pci 0000:01:00.0: could not fetch firmware (-2)
ath10k_pci 0000:01:00.0: could not fetch firmware files (-2)
ath10k_pci 0000:01:00.0: could not probe fw (-2)

  • ath10kのファームウェアをダウンロード
【組込ボードで無線LAN】⑲(ath10kを組み込むためyocto環境を復活させリベンジ)でダウンロードしたQCA9377ファームウェアの内容を確認。前回could not fetch firmware file 'ath10k/QCA9377/hw1.0/firmware-5.bin': -2というエラーが出ていたのを思い出した。たぶん青字のファイルがファームだろう。
QCA9377
 hw1.0
  CNSS.TF.1.0
   notice.txt_CNSS.TF.1.0-00267-QCATFSWPZ-1
  WLAN.TF.1.0
   .priority
   firmware-5.bin_WLAN.TF.1.0-00002-QCATFSWPZ-5
   firmware-5.bin_WLAN.TF.1.0-00023-QCATFSWPZ-1
   notice.txt_WLAN.TF.1.0-00002-QCATFSWPZ-5
   notice.txt_WLAN.TF.1.0-00023-QCATFSWPZ-1
  WLAN.TF.2.1
   .priority
   firmware-6.bin_WLAN.TF.2.1-00014-QCARMSWP-1
   firmware-6.bin_WLAN.TF.2.1-00016-QCARMSWP-1
   firmware-6.bin_WLAN.TF.2.1-00021-QCARMSWP-1
   notice.txt_WLAN.TF.2.1-00014-QCARMSWP-1
   notice.txt_WLAN.TF.2.1-00016-QCARMSWP-1
   notice.txt_WLAN.TF.2.1-00021-QCARMSWP-1
  board-2.bin
  board.bin
  untested
   notice.txt_WLAN.TF.1.1.1-00061-QCATFSWPZ-1.txt

念のため/lib/firmware/を確認。ath10kというディレクトリはない。
# ls /lib/firmware
TIInit_7.2.31.bts    wl127x-fw-4-mr.bin   wl128x-fw-4-plt.bin
ti-connectivity      wl127x-fw-4-plt.bin  wl128x-fw-4-sr.bin
vpu                  wl127x-fw-4-sr.bin   wl128x-fw-5-mr.bin
wl1251-fw.bin        wl127x-fw-5-mr.bin   wl128x-fw-5-plt.bin
wl1251-nvs.bin       wl127x-fw-5-plt.bin  wl128x-fw-5-sr.bin
wl1271-fw-2.bin      wl127x-fw-5-sr.bin   wl128x-fw-ap.bin
wl1271-fw-ap.bin     wl127x-fw-plt-3.bin  wl128x-fw-plt-3.bin
wl1271-fw.bin        wl127x-nvs.bin       wl128x-fw.bin
wl1271-nvs.bin       wl128x-fw-3.bin      wl128x-nvs.bin
wl127x-fw-3.bin      wl128x-fw-4-mr.bin   wl12xx-nvs.bin
というわけで、ath10kというディレクトリを作り、ファームが格納されたディレクトリ(QCA9377)を/lib/firmwareにコピー。/lib/firmware/ath10k/QCA9377/hw1.0/WLAN.TF.1.0/firmware-5.bin_WLAN.TF.1.0-00002-QCATFSWPZ-5を/lib/firmware/ath10k/QCA9377/hw1.0/firmware-5.binにコピー(firmware-5.binは***00002***と***00023***の2種類あるが、バージョンが低そうな***00022***を選んだ)。
# mkdir /lib/firmware/ath10k
# cp -r ~/QCA9377 /lib/firmware/ath10k
# cd /lib/firmware/ath10k/QCA9377/hw1.0
# cp WLAN.TF.1.0/firmware-5.bin_WLAN.TF.1.0-00002-QCATFSWPZ-5 /lib/firmware/ath10k/QCA9377/hw1.0/firmware-5.bin
# ls -la
drwxr-x---    6 root     root          1024 Nov  7 12:08 .
drwxr-x---    3 root     root          1024 Nov  6 10:03 ..
drwxr-x---    2 root     root          1024 Nov  6 10:07 CNSS.TF.1.0
drwxr-x---    2 root     root          1024 Nov  6 10:08 WLAN.TF.1.0
drwxr-x---    2 root     root          1024 Nov  6 10:06 WLAN.TF.2.1
-rwxr-x---    1 root     root        304308 Nov  6 10:03 board-2.bin
-rwxr-x---    1 root     root          8124 Nov  6 10:03 board.bin
-rwxr-x---    1 root     root        783336 Nov  7 12:08 firmware-5.bin
drwxr-x---    2 root     root          1024 Nov  6 10:03 untested
ホームディレクトリに戻りlsmod。前回エラーが発生したときにリブートしてるのでath10kドライバは綺麗に消えている。
# cd
# lsmod
Module                  Size  Used by
ov5640_camera_mipi     53356  0
mxc_v4l2_capture       24972  1 ov5640_camera_mipi
ipu_bg_overlay_sdc      4175  1 mxc_v4l2_capture
ipu_still               1719  1 mxc_v4l2_capture
ipu_prp_enc             4791  1 mxc_v4l2_capture
ipu_csi_enc             2969  1 mxc_v4l2_capture
adv7180_tvin            8323  0
ipu_fg_overlay_sdc      5059  1 mxc_v4l2_capture
v4l2_int_device         1796  3 ov5640_camera_mipi,adv7180_tvin,mxc_v4l2_capture
snd_soc_fsl_asrc       23760  0
再びインストール。ファームは見つかったみたいだが、微妙なメッセージ***(0140 -> 0142)が出た上でファームウェアロードに失敗というメッセージ。うーん...。
# insmod compat.ko
Loading modules backported from Linux version v4.4.2-0-g1cb8570
Backport generated by backports.git v4.4.2-1-0-gbec4037
# insmod cfg80211.ko
# insmod mac80211.ko
# insmod ath.ko
# insmod ath10k_core.ko
# insmod ath10k_pci.ko
PCI: enabling device 0000:01:00.0 (0140 -> 0142)
ath10k_pci 0000:01:00.0: pci irq msi interrupts 1 irq_mode 0 reset_mode 0
root@nitrogen6x:~# ath10k_pci 0000:01:00.0: failed to receive control response completion, polling..
ath10k_pci 0000:01:00.0: ctl_resp never came in (-110)
ath10k_pci 0000:01:00.0: failed to connect to HTC: -110
ath10k_pci 0000:01:00.0: could not init core (-110)
ath10k_pci 0000:01:00.0: could not probe fw (-110)

ath10kドライバのインストール状態を見る。インストール自体はされているがath10k_pci.koはファームロードに失敗しているからゾンビ状態である。
# lsmod
Module                  Size  Used by
ath10k_pci             31020  0
ath10k_core           248318  1 ath10k_pci
ath                    17622  1 ath10k_core
mac80211              363953  1 ath10k_core
cfg80211              213383  3 ath,mac80211,ath10k_core
compat                 14986  4 cfg80211,mac80211,ath10k_pci,ath10k_core

ov5640_camera_mipi     53356  0
mxc_v4l2_capture       24972  1 ov5640_camera_mipi
ipu_bg_overlay_sdc      4175  1 mxc_v4l2_capture
ipu_still               1719  1 mxc_v4l2_capture
ipu_prp_enc             4791  1 mxc_v4l2_capture
ipu_csi_enc             2969  1 mxc_v4l2_capture
adv7180_tvin            8323  0
ipu_fg_overlay_sdc      5059  1 mxc_v4l2_capture
v4l2_int_device         1796  3 ov5640_camera_mipi,adv7180_tvin,mxc_v4l2_capture
snd_soc_fsl_asrc       23760  0
ゾンビ状態のath10k_pciをアンインストール(rmmod)し、2つあったfirmware-5.binのうち、新しいバージョン***00023***にする。そして再びホームディレクトリのath10k_pci.koをインストール。微妙なメッセージ***(0140 -> 0142)は出なくなったが、そのあとは前回と全く同じエラー。
# rmmod ath10k_pci
# cd /lib/firmware/ath10k/QCA9377/hw1.0/WLAN.TF.1.0
# cp firmware-5.bin_WLAN.TF.1.0-00023-QCATFSWPZ-1 ../firmware-5.bin
# cd
# insmod ath10k_pci.ko
ath10k_pci 0000:01:00.0: pci irq msi interrupts 1 irq_mode 0 reset_mode 0
root@nitrogen6x:~# ath10k_pci 0000:01:00.0: failed to receive control response completion, polling..
ath10k_pci 0000:01:00.0: ctl_resp never came in (-110)
ath10k_pci 0000:01:00.0: failed to connect to HTC: -110
ath10k_pci 0000:01:00.0: could not init core (-110)
ath10k_pci 0000:01:00.0: could not probe fw (-110)

dmesgをfirmwareでgrep。ath10kは出てこない。
# dmesg | grep firmware
imx-sdma 20ec000.sdma: loaded firmware 3.1
usbserial: USB Serial support registered for Keyspan - (without firmware)
egalax_ts 2-0004: Failed to read firmware version
ili210x_i2c 2-0041: Failed to get firmware version, err: -5
lspci -kをやったところ、【組込ボードで無線LAN】⑳(ath10kのQCA9377はBD-SABRE-LITEの標準カーネル3.14でサポートされてない?)では出てこなかったドライバ名称が出てきた(青字の行)。
# lspci -k
00:00.0 PCI bridge: Synopsys, Inc. Device abcd (rev 01)
        Kernel driver in use: pcieport
01:00.0 Network controller: Qualcomm Atheros Device 0042 (rev 31)
        Subsystem: AzureWave Device 2a51
        Kernel driver in use: ath10k_pci
pci irq msi interrupts 1 irq_mode 0 reset_mode 0でgoogle検索。ubuntu14.04 - 私のWiFiは機能していませんがヒットしたが、なんか違う感じ。

続いてath10k_pci 0000:01:00.0: failed to receive control response completion, polling..でgoogle検索。Qualcomm QCA6174 - Ubuntu Forumsがヒットしたが、これも違う感じ。

うーん...。困ったね。

続く
IMG_20171028_134817849




スポンサードリンク