Модуль ядра не может найти файл прошивки на устройстве Android; где это должно быть?
У меня проблемы с размещением прошивки на устройстве Android, я получаю:
<3>[ 3590.997375] usb 3-1.4: ath9k_htc: Firmware - htc_7010.fw not found
Если на стандартной машине Linux с Ubuntu я помещаю htc_7010.fw в /lib/firmware, я не получаю эту ошибку.
Однако, если я помещаю эту прошивку в /lib/firmware на Android, я все равно получаю сообщение об ошибке. Я перепробовал все следующие каталоги и все еще получаю сообщение об ошибке:
/lib/firmware
/etc/firmware
/system/lib/modules
/system/lib/firmware
/system/etc
Нет такой удачи... что определяет, где должна быть прошивка, и как я могу определить, какие каталоги она сканирует для прошивки?
3 ответа
На Android (ICS в любом случае) у него есть собственный демон / служба (или как вы хотите это называть) для управления событиями горячей замены, включая запросы прошивки. В <android>/system/core/init/devices.c
, есть два #define
s, которые указывают места, где будет проверяться прошивка:
#define FIRMWARE_DIR1 "/etc/firmware"
#define FIRMWARE_DIR2 "/vendor/firmware"
На моей первоначальной сборке файловой системы ICS, /etc/firmware
не существует (и каталог etc кажется символической ссылкой, созданной во время загрузки / инициализации). Каталог, в котором я должен был установить прошивку на моем смонтированном NFS rootfs, был <mount point>/system/etc/firmware
После этого запросы request_firmware() из моего модуля успешно завершены.
У меня была похожая проблема с моей прошивкой с именем: down3.bin
(Ранее я должен был вставить свой модуль "io_ti.ko"
с # insmod
конечно)
Когда я подключил свое устройство (конвертер USB-RS232, адаптер порта Digi International EdgeportTI1) к своему планшету Android (Samsung Galaxy Tab 2), он не смог найти свою прошивку в "каталогах, адаптированных для Linux и Android". Итак, как и вы, я попытался поставить "down3.bin"
в:
/lib/firmware
/etc/firmware
/system/lib/modules
/system/lib/firmware
/system/etc
с: # dmesg
У меня все еще была ошибка:
<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.
На самом деле, как вы упомянули:
В
<android>/system/core/init/devices.c
, есть два#define
s, которые указывают места, где будет проверяться прошивка:#define FIRMWARE_DIR1 "/etc/firmware" #define FIRMWARE_DIR2 "/vendor/firmware"
- Таким образом, вы должны поместить свою прошивку в один из этих каталогов. Надеюсь, у меня все получилось.
Ядро выполняет сценарий пользовательского пространства для загрузки прошивки. Проверьте, есть ли у вас сценарий в нужном месте.
- Проверьте, в каком месте ядро ищет скрипт. / # cat / proc / sys / kernel / hotplug. Расположение по умолчанию "/ sbin / hotplug".
- Проверьте, есть ли у вас скрипт, который ищет ядро, в этом месте. На андроиде скрипт должен быть "/ system / busybox / sbin / mdev", поэтому вы можете установить "/ proc / sys / kernel / hotplug" на это, если это не так.