para - el módulo kernel no puede encontrar el archivo de firmware en el dispositivo Android; ¿Dónde debería estar?
kernel informatica (3)
Tengo problemas para colocar el firmware correctamente en un dispositivo Android, sigo recibiendo:
<3>[ 3590.997375] usb 3-1.4: ath9k_htc: Firmware - htc_7010.fw not found
Si en una máquina linux estándar con Ubuntu, pongo htc_7010.fw en / lib / firmware, entonces no obtengo este error.
Sin embargo, si coloco este firmware en / lib / firmware en Android, sigo recibiendo el error. He intentado todos los directorios siguientes y todavía recibo el error:
/lib/firmware
/etc/firmware
/system/lib/modules
/system/lib/firmware
/system/etc
No hay suerte ... ¿qué dicta dónde debería estar el firmware y cómo podría determinar qué directorios está escaneando para el firmware?
El kernel ejecuta un script de espacio de usuario para cargar el firmware. Compruebe si tiene el script en la ubicación correcta.
- Verifique en qué ubicación el kernel busca el script. / # cat / proc / sys / kernel / hotplug. La ubicación predeterminada es "/ sbin / hotplug".
- Compruebe si tiene la secuencia de comandos, el núcleo está buscando, en esta ubicación. En Android, la secuencia de comandos debe ser "/ system / busybox / sbin / mdev", por lo que puede establecer "/ proc / sys / kernel / hotplug" en este, si no es así.
En Android (ICS de todos modos) tiene su propio daemon / servicio (o lo que sea que quiera llamarlo) para administrar eventos hotplug, incluidas las solicitudes de firmware. En <android>/system/core/init/devices.c
, hay dos #define
s que especifican las ubicaciones donde se comprobará el firmware:
#define FIRMWARE_DIR1 "/etc/firmware"
#define FIRMWARE_DIR2 "/vendor/firmware"
En mi versión inicial del sistema de archivos ICS, /etc/firmware
no existía (y el directorio etc. parece ser un enlace simbólico creado en el arranque / hora de inicio). El directorio en el que tuve que colocar el firmware en mi rootfs montado NFS era <mount point>/system/etc/firmware
Después de hacer esto, request_firmware () las llamadas de mi módulo se completaron con éxito.
Tuve un problema similar con mi firmware llamado: down3.bin
(De antemano, tuve insertar mi módulo "io_ti.ko"
con # insmod
por supuesto)
Cuando conecté mi dispositivo (convertidor USB-RS232, adaptador de puerto Digi International EdgeportTI1 ) en mi tableta Android ( Samsung Galaxy Tab 2 ), no pudo encontrar su firmware en "directorios adaptados a Android de Linux". Entonces, como usted, traté de poner mi "down3.bin"
en:
/lib/firmware
/etc/firmware
/system/lib/modules
/system/lib/firmware
/system/etc
con: # dmesg
Todavía tenía un error:
<6>[00000.00000] io_ti 1-1:1.0 : Edgeport TI 1 port adapter converter detected <6>[00000.00000] Failed to load image "edgeport/down3.bin" err-2 <6>[00000.00000] io_ti:probe of 1-1:1.0 failed with error -5
err -2 = [ENOENT] = No such file or directory.
De hecho, como usted mencionó:
En
<android>/system/core/init/devices.c
, hay dos#define
s que especifican las ubicaciones donde se comprobará el firmware:
#define FIRMWARE_DIR1 "/etc/firmware" #define FIRMWARE_DIR2 "/vendor/firmware"
- Entonces tienes que poner tu firmware en uno de estos directorios. Funcionó bien para mí, con suerte.