модуль ядра не может найти файл прошивки на устройстве Android; где это должно быть? - PullRequest
4 голосов
/ 16 мая 2011

У меня проблемы с размещением прошивки на устройстве 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 ]

6 голосов
/ 09 августа 2012

В Android (в любом случае ICS) у него есть собственный демон / служба (или как вы хотите это называть) для управления событиями горячей замены, включая запросы прошивки. В <android>/system/core/init/devices.c есть два #define, которые указывают места, где будет проверяться прошивка:

#define FIRMWARE_DIR1   "/etc/firmware"
#define FIRMWARE_DIR2   "/vendor/firmware"

В моей первоначальной сборке файловой системы ICS /etc/firmware не существовало (и каталог etc представляется символической ссылкой, созданной во время загрузки / инициализации). Каталог, в котором я должен был разместить прошивку на моем смонтированном NFS rootfs, был <mount point>/system/etc/firmware

После этого успешно завершаются запросы request_firmware () из моего модуля.

2 голосов
/ 04 апреля 2013

У меня была похожая проблема с моей прошивкой с именем: 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 с которые указывают места, где будет проверяться прошивка:

#define FIRMWARE_DIR1   "/etc/firmware"
#define FIRMWARE_DIR2   "/vendor/firmware"

- Таким образом, вы должны поместить свою прошивку в один из этих каталогов. Это Надеюсь, у меня сработало нормально.


1 голос
/ 27 июня 2011

Ядро выполняет сценарий пользовательского пространства для загрузки прошивки.Проверьте, есть ли у вас сценарий в нужном месте.

  1. Проверьте, в каком месте ядро ​​ищет сценарий./ # cat / proc / sys / kernel / hotplug.Расположение по умолчанию "/sbin/hotplug".
  2. Проверьте, есть ли у вас сценарий, который ищет ядро, в этом месте.На андроиде сценарий должен быть "/ system / busybox / sbin / mdev", поэтому вы можете установить "/ proc / sys / kernel / hotplug" на это, если это не так.
...