LINUX.ORG.RU
решено ФорумMobile

После прошивки ядра не работают wifi и bluetooth

 , , , ,


1

3

Прошил телефон ядром собранным из исходников вендора, defconfig взял из аппарата, в стоковом ядре были 3 модуля wifi.ko plat.ko pn547.ko, после прошивки нового ядра я заменил их на такие же новособранные модули (+ xt_HL.ko), после загрузки все они автоматически подгружаются как и раньше, но работает только отвечающий за nfc pn547.ko, wifi и bluetooth качельки не работают, включение из adb тоже не дает никакого эффекта. Буду признателен любой конструктивной помощи.

Может не подгружаются фирмвари? Или подгружаются но несовместимые?

cvv ★★★★★
()
Ответ на: комментарий от cvv

действительно похоже на то, что не подгружаются. с новым ядром dmesg выдает многократно:

[ 123.751068] [pid:6869,cpu2,bluetooth@1.0-s]plat:E]firmware_read_cfg]open file /bfgx_and_wifi_cfg fail, fp=fffffffffffffffe [ 123.751098] [pid:6869,cpu2,bluetooth@1.0-s]plat:E]firmware_cfg_init]get cfg file [/bfgx_and_wifi_cfg] fail [ 123.751098] [pid:6869,cpu2,bluetooth@1.0-s]plat:E]firmware_download_function]firmware_cfg_init failed, ret:-1! [ 123.751159] [pid:6869,cpu2,bluetooth@1.0-s]plat:E]bfgx_dev_power_on]bfgx download firmware fail! [ 135.126647] [pid:7019,cpu3,HwBinder:6927_1]plat:E]firmware_read_cfg]open file /bfgx_and_wifi_cfg fail, fp=fffffffffffffffe [ 135.126678] [pid:7019,cpu3,HwBinder:6927_1]plat:E]firmware_cfg_init]get cfg file [/bfgx_and_wifi_cfg] fail [ 135.126678] [pid:7019,cpu3,HwBinder:6927_1]plat:E]firmware_download_function]firmware_cfg_init failed, ret:-1! [ 135.126739] [pid:7019,cpu3,HwBinder:6927_1]plat:E]bfgx_dev_power_on]bfgx download firmware fail!

а со старым:

[ 27.798461] [pid:584,cpu1,wifi@1.1-servic]plat:I]firmware_download_function]enter firmware_download_function [ 27.867156] [pid:584,cpu5,wifi@1.1-servic]plat:I]firmware_download_function]firmware_download begin [ 27.867187] [pid:584,cpu5,wifi@1.1-servic]plat:I]firmware_download]start download firmware, ul_index = [0] [ 27.867187] [pid:584,cpu5,wifi@1.1-servic]plat:I]firmware_download]sdio max transmit size is [261632] [ 27.867187] [pid:584,cpu5,wifi@1.1-servic]plat:I]firmware_download]try to malloc firmware download file buf len is [261632] [ 27.867187] [pid:584,cpu5,wifi@1.1-servic]plat:I]firmware_download]download firmware file buf len is [261632] [ 27.890045] [pid:584,cpu4,wifi@1.1-servic]plat:I]exec_file_type_cmd]download firmware:/vendor/firmware/cr4_asic.bin [ 27.915100] [pid:584,cpu5,wifi@1.1-servic]plat:I]exec_file_type_cmd]download firmware:/vendor/firmware/CPU_RAM_SCHED.bin [ 27.951751] [pid:584,cpu0,wifi@1.1-servic]plat:I]exec_file_type_cmd]download firmware:/vendor/firmware/CPU_RAM_WBS.bin [ 28.002227] [pid:584,cpu4,wifi@1.1-servic]plat:I]firmware_download]finish download firmware [ 28.002258] [pid:584,cpu4,wifi@1.1-servic]plat:I]firmware_download_function]firmware_download success

cat /vendor/firmware/bfgx_and_wifi_cfg

@BFGX and WiFi patch info @hi1102_version=Hi1102 V100R001C03B05SP02 PARA_VERSION=Hi1102V100; PARA_SETPM=1; PARA_WRITEM=2,0x50000140,6; @double ANT PARA_WRITEM=2,0x5000034C,0; PARA_WRITEM=2,0x50007030,0; PARA_WRITEM=2,0x50007004,2; PARA_WRITEM=2,0x50007000,2; ADDR_FILE_FILES=1,0x70000,/vendor/firmware/cr4_asic.bin; ADDR_FILE_FILES=1,0x300E4000,/vendor/firmware/CPU_RAM_SCHED.bin; @PARA_CALI_COUNT=0x300E4000; @PARA_JUMP=0x000E0401; ADDR_FILE_FILES=1,0x30168000,/vendor/firmware/CPU_RAM_WBS.bin; PARA_CALI_BFGX_DATA=0x30170000; PARA_WRITEM=2,0x60001044,0x1; @buck output 1.35v PARA_WRITEM=2,0x50002280,0x5414; @buck_frq_sel=4'b1010(1.8MHZ) PARA_WRITEM=2,0x50002284,0xAC00; @RFLDO output 1.20v rfldo1_ictr=3'b110 PARA_WRITEM=2,0x50002210,0x3518; @rfldo2_ictr=3'b110 PARA_WRITEM=2,0x50002214,0x3018; PARA_WRITEM=2,0x50000074,0x1; @PARA_WRITEM=2,0x50000c04,0; @PARA_WRITEM=2,0x50000094,1; SHUTDOWN_BFGX; QUIT; @device_version=20180620165602

здесь как раз погружаются 3 фирмвари, с новым ядром этот файл фейлится, а со старым успешно рапортуется о загрузке.

вроде теперь понятна природа проблемы, но непонятно как ее решить, откуда взять валидные фирмвари?

mustafadjan
() автор топика
Ответ на: комментарий от mustafadjan

Скорее всего фирвари ищутся в новой initramfs, если таковая используется, а не там где ты их видишь. Если используется - то попробуй взять со старой. Или поищи на сайте производителя. Ну еще пути перепроверь. Не так давно большое количество фирмварей переименовали и положили по другим путям. Перепроверь.

cvv ★★★★★
()
Последнее исправление: cvv (всего исправлений: 1)
Ответ на: комментарий от cvv

В моем аппарате kernel и ramdisk лежат в разных блоках, boot вообще нет, при распаковке образа kernel получаю само ядро и пустую папку ramdisk, поэтому при прошивке kernel с новым ядром initramfs остается старым в ramdisk. Проблема действительно оказалась в путях, это на самом деле можно было понять еще из выхлопа dmesg, который я писал раньше: open file /bfgx_and_wifi_cfg fail, только сначала я думал, что путь там указывается относительный, но покурив исходники понял, что абсолютный, т.е. ядро пытается получить доступ к файлу из корня, когда он на самом деле лежит в /vendor/firmware. Покопавшись в исходниках, стало ясно, что нужный путь можно получить даже не меняя их, а выставив пару флагов при сборке, в menuconfig и README про них ни слова.

Проблема решена, все заработало! Благодарю за оказанную помощь и готов дополнительно выразить благодарность в виде символичной суммы на телефон, если он будет указан)

mustafadjan
() автор топика
Ответ на: комментарий от mustafadjan

Я живу в Польше, поэтому или BTC или обойдусь письменной благодарностью :-)

cvv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.