Hello à toutes et à tous :)
Voici un problème qui me prend la tête depuis plus d'une semaine ^
Pour un projet, j'utilise comme support un clearfog base ( marque : solidrun).
L'os est fait maison gràce à Buildroot.
Le kernel est custom également.
Je débute et me fais les dents ainsi :)
Rie de mieux que la pratique pour apprendre :)
J'ai installé une carte wifi pcie ( utilisant les drivers ath10k et le firmware : QCA988X).
Le problème :
lorsque j'allume mon Clearfog, la carte ne remonte pas :
# dmesg | grep 'ath'
[ 1.745947] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
[ 1.752432] ath10k_pci 0000:01:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 r eset_mode 0
[ 1.989357] ath10k_pci 0000:01:00.0: Failed to find firmware-N.bin (N between 2 and 6) from ath10k/QCA988X/hw2.0: -2
[ 1.999921] ath10k_pci 0000:01:00.0: could not fetch firmware files (-2)
[ 2.006653] ath10k_pci 0000:01:00.0: could not probe fw (-2)
# QCA988X
Le firmware est dans le bon dossier, à savoir : /lib/firmware/ath10k/QCA988X/hw2.0/
Cependant, lorsque je fais un chmod 777 du firmware, et que je lance un soft reboot,
le firmware est reconnu et la carte wifi remonte.
# dmesg | grep 'ath'
[ 1.749532] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
[ 1.755996] ath10k_pci 0000:01:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
[ 2.018995] ath10k_pci 0000:01:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043202ff sub 0000:0000
[ 2.028257] ath10k_pci 0000:01:00.0: kconfig debug 1 debugfs 1 tracing 1 dfs 0 testmode 1
[ 2.037036] ath10k_pci 0000:01:00.0: firmware ver 10.2.4-1.0-00047 api 5 features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 35bd9258
[ 2.083049] ath10k_pci 0000:01:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
[ 3.246972] ath10k_pci 0000:01:00.0: unsupported HTC service id: 1536
[ 3.273389] ath10k_pci 0000:01:00.0: htt-ver 2.1 wmi-op 5 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1
[ 3.395395] ath: EEPROM regdomain: 0x0
[ 3.395398] ath: EEPROM indicates default country code should be used
[ 3.395399] ath: doing EEPROM country->regdmn map search
[ 3.395403] ath: country maps to regdmn code: 0x3a
[ 3.395405] ath: Country alpha2 being used: US
[ 3.395407] ath: Regpair used: 0x3a
[ 20.128472] ath10k_pci 0000:01:00.0: unsupported HTC service id: 1536
[ 20.154994] ath10k_pci 0000:01:00.0: pdev param 0 not supported by firmware
[ 27.578837] ath10k_pci 0000:01:00.0: unsupported HTC service id: 1536
[ 27.605438] ath10k_pci 0000:01:00.0: pdev param 0 not supported by firmware
Lorsque j'éteins électriquement le Clearfog et le rallume, la carte wifi ne remonte pas et je suis obligé de refaire un chmod 777 et de lancer un soft reboot :(
J'ai créé un script dans /etc/init.d pour qu'il automatise le chmod 777 sur le firmware, en vain :(
quelqu'un aurait une idée?
Merci d'avance
# J'ai des questions
Posté par cg . Évalué à 3. Dernière modification le 17 juin 2021 à 23:13.
Quels sont les droits du fichier de firmware quand ça marche pas ?
Est-ce que si tu charges le module ath à la main (avec
modprobe
) sans faire lechmod
, la carte fonctionne ?Est-ce que si tu charges le module ath à la main, mais en faisant le
chmod
avant, la carte fonctionne ?Est-ce que si fais seulement le
chmod
puis que tu montes l'interface (genreifconfig wlan0 up
) ça fonctionne ?Es-tu certain que ton script init se lance au boot (lui faire créer un petit fichier dans
/tmp
pour vérifier, genredate > /tmp/chmodtest
) ?Si le système d'init de ta distrib est du type SysV (ce que suggère la présence de
/etc/init.d/
), tu peux essayer de faire un script qui s'exécute à l'extinction aussi (dans/etc/rc0.d
et/etc/rc6.d
) ?Le répertoire /lib/firmware est-il sur un système de fichier avec un overlay par dessus ?
[^] # Re: J'ai des questions
Posté par doudootiana . Évalué à 1.
Hello,
Tout d'abord, je te remercie pour ta réponse :).
pour répondre à tes questions :
Est-ce que si tu charges le module ath à la main, mais en faisant le chmod avant, la carte fonctionne ?
Je ne lance pas le module à la main, j'ai "intégrer le driver" dans le kernel, qui se lance automatiquement au boot.
J'ai essayé ce conseil mais l'interface ne remonte pas :
```
chmod 777 -R /lib/firmware/ath10k/
ifconfig wlan up
ifconfig: SIOCGIFFLAGS: No such device
ifup wlan0
Cannot find device "wlan0"
Cannot find device "wlan0"
```
Yes,j'en suis sûr, j'ai testé avec des echo et je les vois bien au boot
J'y avais pensé.
Mais le fait de faire un chmod puis de débrancher la prise électrique et de rallumer après, le firmware ne se lance pas.
Il se lance seulement après un soft reboot, précédé du chmod 777.
Dans buildroot, j'utilise en effet un overlay
merci encore pour ton aide
[^] # Re: J'ai des questions
Posté par cg . Évalué à 3.
C'est assez curieux, on est d'accord que le soft reboot recharge le kernel ? Ce serait comme si le système ne perd pas ses fichiers/ne démonte pas ses partitions entre deux reboot, c'est quand même peut probable :-/.
Sinon, des pistes un peu en vrac, je connais un tout petit peu openwrt et pas du tout buildroot, mais sait-on jamais.
Je suspecte que le firmware n'est pas sur la partition disponible au moment du boot (sous l'overlay) mais qu'il est sur l'overlay, qui est monté après que le driver se charge et échoue.
Un moyen possible de vérifier serait de mettre le driver ath10k en module, pour qu'il se charge plus tard. Aussi tu peux essayer de démonter l'overlay (ou monter l'image de la partition sur un autre PC) pour voir si le fichier de firmware y est bien, et quels sont ses droits (dans ta réponse il est en 0777, mais c'est après que ton script soit passé j'imagine).
Aussi, voir dans les options de buildroot s'il n'y a pas une option subtile dans un menu, qui permet de placer le firmware dans l'initrd par exemple.
Bon courage en tout cas !
[^] # Re: J'ai des questions
Posté par NeoX . Évalué à 2.
je suppose aussi un souci du genre
le pilote reseau se charge tot (1sec et des poussières) donc probablement avant l'overlay
si c'est du sysV (/etc/init.d) il suffirait peut-etre de changer l'ordre des scripts de chargement dans /etc/rc3.d/
pour charger le wifi à la toute fin (sauf s'il y a besoin du reseau pour monter un partage de fichier par exemple, mais auquel cas tu as 1- montage des FS locaux, 2- activation du reseau, 3- montage des FS distants)
[^] # Re: J'ai des questions
Posté par benja . Évalué à 2.
https://www.kernel.org/doc/html/latest/driver-api/firmware/built-in-fw.html
[^] # Re: J'ai des questions
Posté par cg . Évalué à 1.
Top, je savais pas que ça existait ce mécanisme.
Donc la premiere réponse sur SO semble être une bonne piste, faut juste refaire avec le firmware ath10k.
[^] # Re: J'ai des questions
Posté par cg . Évalué à 2.
ça me turlupine ce détail… Est-ce que pour le reboot,
kexec
(ou une variante) est utilisé ? C'est à dire que les systèmes de fichiers ne sont pas forcément démontés entre deux reboot soft ?[^] # Re: J'ai des questions
Posté par doudootiana . Évalué à 1.
Re.
Je te dirai ça en rentrant ce soir. ^
Je debute dans Buildroot et les Kernel custom, il y a de fortes chances que j'ai mal configuré ce genre de détails .
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.