LINUX.ORG.RU

Как подружить WiFi-адаптер TP-Link Archer T3U и Android 4.4.2?

 , , , ,


0

3

Здравствуйте, господа. Имеется медиа-приставка DNS T-008 на чипе Rockchip RK3066 с Android 4.4.2 и ядром 3.0.36+. Недавно приобрёл WiFi-адаптер TP-Link Archer T3U на чипе RTL8812BU. Подскажите, пожалуйста, как подружить эти два девайса? Цель: заменить встроенный (на чипе RTL8189ES) в медиа-приставку WiFi-адаптер на более современный внешний, умеющий 802.11ac на 5 GHz.

- Android 4.4.2 SDK утянул отсюда.
- Исходники ядра 3.0.36 взял здесь.
- Исходники драйвера для чипсета RTL8812BU взял тут.

1. Ядро собралось успешно (перед сборкой добавил суффикс «+» в конец версии ядра).
2. Модуль wlan.ko собрался успешно (скопировал его с заменой в /system/lib/modules/, предварительно сделав бэкап)
3. При выполнении на медиаплеере:

rmmod wlan
insmod /system/lib/modules/wlan.ko
сообщения о каких-либо ошибках отсутствуют, однако и внешний WiFi-адаптер не работает: интерфейс wlan0 не создаётся, а dmesg выводит следующее:

[  495.750425] RTW: module init start
[  495.750455] RTW: rtl88x2bu v5.3.1_27678.20180430_COEX20180427-5959
[  495.750498] RTW: build time: Jun  6 2019 22:37:40
[  495.750523] RTW: rtl88x2bu BT-Coex version = COEX20180427-5959
[  495.750605] RTW: rtw_inetaddr_notifier_register
[  495.750998] usbcore: registered new interface driver rtl88x2bu
[  495.751033] RTW: module init ret=0
[  571.454584] RTW: module exit start
[  571.458082] usbcore: deregistering interface driver rtl88x2bu
[  571.464174] RTW: rtw_inetaddr_notifier_unregister
[  571.512956] RTW: module exit success

Подскажите, пожалуйста, в чём я неправ?

P.S. Если вернуть оригинальный wlan.ko, то после перезагрузки встроенный WiFi-адаптер работает как положено. Но хотелось бы завести и внешний адаптер.


в интернетах пишут «невазможна» :(

Вот здесь не понял

rmmod wlan
insmod /system/lib/modules/wlan.ko

Ты же модуль заменил или нет?

Модуль WiFi-адаптер TP-Link Archer T3U — он что ещё и с Bluetooth?! (гуглить сейчас нет желания) Я к тому, что эти WiFi/BT донглы и под linux довольно капризны...

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

anymouze

Ты же модуль заменил или нет?

Я модуль сперва выгрузил, затем файл модуля переименовал в wlan.ko.backup, потом скопировал собранный файл модуля и, наконец, его загрузил. Можно, конечно, модуль под другим именем собрать - тут я да, сглупил.

anymouze

WiFi-адаптер TP-Link Archer T3U — он что ещё и с Bluetooth?!

Нет, сам адаптер без синезуба.

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

Идей в общем-то нет... Попробуй собрать модуль собрать с другим именем и поискать вариант запуска. Но этот метод «тыка» скорее всего не заработает. Опять же система «не ожидает» устройства на USB (в исходниках gpio упоминают — я не вникал, возможно и не так прочитал).

Вот «драйвер» под платформу Rockchip — вдруг и правда заработает...

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

anymouze

Вот «драйвер» под платформу Rockchip — вдруг и правда заработает...

К сожалению, предложенный Вами «драйвер» собираться не хочет - ругается на отсутствие файлов rfkill-wlan.h и rfkill-wlan.c в исходниках ядра 3.0.36 (погуглил - данные файлы присутствуют в более новом ядре 3.10.37, но в плеер вряд ли его зашьёшь). На данный момент идеи тоже закончились((

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

А «параллельно» пробовали загрузить модуль для адаптера USB? Собрать его с именем отличным от wlan.ko (например wlanu.ko © :) и загрузить его, подключить адаптер? Думаю всё равно не заработает, но попробовать бы надо — вдруг какие-нибудь идеи появятся...

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

Да, попробовал. Всё именно в том порядке, как Вы расписали.

Вывод lsusb:

...
Bus 001 Device 002: ID 2357:012d

из которого следует, что адаптер определяется системой как USB-устройство.

Вывод lsmod:

wlan 853 0 - Live 0x00000000
rtl8812bu 2344086 0 - Live 0x00000000
rk29_ipp 9957 0 - Live 0x00000000 (C)
mali 152212 30 - Live 0x00000000
ump 27958 23 mali, Live 0x00000000
rk30xxnand_ko 162075 0 - Live 0x00000000

из которого следует, что модуль rtl8812bu успешно загрузился параллельно с модулем wlan.

Вывод dmesg:

[15186.972480] RTW: module init start
[15186.972512] RTW: rtl88x2bu v5.3.1_27678.20180430_COEX20180427-5959
[15186.972558] RTW: build time: Jun  9 2019 15:23:19
[15186.972584] RTW: rtl88x2bu BT-Coex version = COEX20180427-5959
[15186.972667] RTW: rtw_inetaddr_notifier_register
[15186.973004] usbcore: registered new interface driver rtl88x2bu
[15186.973039] RTW: module init ret=0
[15223.103119] usb 1-1: new high speed USB device number 2 using usb20_otg
[15223.313914] usb 1-1: New USB device found, idVendor=2357, idProduct=012d
[15223.313965] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[15223.314017] usb 1-1: Product: 802.11ac NIC
[15223.314042] usb 1-1: Manufacturer: Realtek
[15223.314065] usb 1-1: SerialNumber: 123456

Вывод ip a:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
    link/sit 0.0.0.0 brd 0.0.0.0
3: ip6tnl0: <NOARP> mtu 1452 qdisc noop state DOWN
    link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.31/24 brd 192.168.0.255 scope global wlan0
    inet6 fe80::292:bff:fe40:****/64 scope link
       valid_lft forever preferred_lft forever
5: p2p0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DORMANT qlen 1000
    link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff

Из чего следует, что дополнительного сетевого интерфейса wlan1 не появилось...

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

Вывод lsusb:

... Bus 001 Device 002: ID 2357:012d

из которого следует, что адаптер определяется системой как USB-устройство.

Уже любопытно, а команды lsusb -t и lsusb -v ничего интересного не выдают? Android ожидает (как, я думаю) флешку или всё же понимает, что это wireless adapter...

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

Вывод lsusb -t:

Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0002
Bus 002 Device 002: ID 248a:8366
Bus 001 Device 002: ID 2357:012d

Команда lsusb -v выводит тоже самое.

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

lsusb урезанная в android :(

Совсем не понятно, что за устройство в системе появилось... Ядро просто «не понимает» что ему подсунули...

:(

anymouze ★★ ()

В драйвере, который ты скачал, нет ID твоего Wi-Fi устройства, поэтому оно и не работает с собранным модулем. Попробуй сделать так - открой файл os_dep/linux/usb_intf.c, найди строку

#ifdef CONFIG_RTL8822B
и ниже добавь
{USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x012d, 0xff, 0xff, 0xff), .driver_info = RTL8822B},

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

Кажется, что-то начинает получаться...

Вывод dmesg:

...
[  117.565007] RTW: module init start
[  117.568467] RTW: rtl88x2bu v5.3.1_27678.20180430_COEX20180427-5959
[  117.574959] RTW: build time: Jun  9 2019 20:09:49
[  117.579707] RTW: rtl88x2bu BT-Coex version = COEX20180427-5959
[  117.585638] RTW: rtw_inetaddr_notifier_register
[  117.590638] usbcore: registered new interface driver rtl88x2bu
[  117.596613] RTW: module init ret=0
[  134.143750] usb 1-1: new high speed USB device number 2 using usb20_otg
[  134.354498] usb 1-1: New USB device found, idVendor=2357, idProduct=012d
[  134.354542] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  134.354590] usb 1-1: Product: 802.11ac NIC
[  134.354615] usb 1-1: Manufacturer: Realtek
[  134.354639] usb 1-1: SerialNumber: 123456
[  134.356420] RTW: usb_endpoint_descriptor(0):
[  134.356457] RTW: bLength=7
[  134.356473] RTW: bDescriptorType=5
[  134.356493] RTW: bEndpointAddress=84
[  134.356513] RTW: wMaxPacketSize=512
[  134.356532] RTW: bInterval=0
[  134.356549] RTW: RT_usb_endpoint_is_bulk_in = 4
[  134.356572] RTW: usb_endpoint_descriptor(1):
[  134.356602] RTW: bLength=7
[  134.356617] RTW: bDescriptorType=5
[  134.356635] RTW: bEndpointAddress=5
[  134.356666] RTW: wMaxPacketSize=512
[  134.356686] RTW: bInterval=0
[  134.356702] RTW: RT_usb_endpoint_is_bulk_out = 5
[  134.356726] RTW: usb_endpoint_descriptor(2):
[  134.356766] RTW: bLength=7
[  134.356781] RTW: bDescriptorType=5
[  134.356799] RTW: bEndpointAddress=6
[  134.356818] RTW: wMaxPacketSize=512
[  134.356836] RTW: bInterval=0
[  134.356852] RTW: RT_usb_endpoint_is_bulk_out = 6
[  134.356876] RTW: usb_endpoint_descriptor(3):
[  134.356906] RTW: bLength=7
[  134.356921] RTW: bDescriptorType=5
[  134.356939] RTW: bEndpointAddress=87
[  134.356958] RTW: wMaxPacketSize=64
[  134.356976] RTW: bInterval=3
[  134.356992] RTW: RT_usb_endpoint_is_int_in = 7, Interval = 3
[  134.357021] RTW: usb_endpoint_descriptor(4):
[  134.357051] RTW: bLength=7
[  134.357066] RTW: bDescriptorType=5
[  134.357084] RTW: bEndpointAddress=8
[  134.357102] RTW: wMaxPacketSize=512
[  134.357121] RTW: bInterval=0
[  134.357136] RTW: RT_usb_endpoint_is_bulk_out = 8
[  134.357161] RTW: nr_endpoint=5, in_num=2, out_num=3
[  134.357194] RTW: USB_SPEED_HIGH
[  134.357212] RTW: CHIP TYPE: RTL8822B
[  134.357473] RTW: [HALMAC]11692M
[  134.359237] RTW: rtw_hal_config_rftype RF_Type is 2 TotalTxPath is 2
[  134.359278] RTW: Chip Version Info: CHIP_8822B_Normal_Chip_UMC_D_CUT_2T2R_RomVer(3)
[  134.359329] RTW: config_chip_out_EP OutEpQueueSel(0x07), OutEpNumber(3)
[  134.359618] RTW: ERROR [HALMAC][ERR]Dump efuse in suspend
[  134.886996] RTW: is_valid_id_status: HALMAC_FEATURE_DUMP_LOGICAL_EFUSE
[  134.887085] RTW: HW EFUSE
[  134.890100] RTW: EEPROM ID = 0x8129
[  134.890119] RTW: EEPROM Version = 0
[  134.890159] RTW: EEPROM Regulatory=0x01
[  134.890180] RTW: EEPROM Board Type=0x00
[  134.890202] RTW: EEPROM Disable BT-coex, ant_num=1
[  134.890229] RTW: hal_com_config_channel_plan chplan:0x26
[  134.890380] RTW: EEPROM crystal_cap=0x3f
[  134.890600] RTW: EEPROM ThermalMeter=0x1e
[  134.890623] RTW: EEPROM Customer ID=0x00
[  134.890646] RTW: EEPROM SupportRemoteWakeup=0
[  134.890671] RTW: EEPROM PAType_2G is 0x0, ExternalPA_2G = 0
[  134.890701] RTW: EEPROM PAType_5G is 0x0, external_pa_5g = 0
[  134.890731] RTW: EEPROM LNAType_2G is 0x0, ExternalLNA_2G = 0
[  134.890766] RTW: EEPROM LNAType_5G is 0x0, external_lna_5g = 0
[  134.890798] RTW: EEPROM TypeGPA = 0x0
[  134.890819] RTW: EEPROM TypeAPA = 0x0
[  134.890839] RTW: EEPROM TypeGLNA = 0x0
[  134.890860] RTW: EEPROM TypeALNA = 0x0
[  134.890881] RTW: EEPROM rfe_type=0x3
[  134.890912] RTW: ERROR [HALMAC][ERR]Dump efuse in suspend
[  134.891119] RTW: is_valid_id_status: HALMAC_FEATURE_DUMP_PHYSICAL_EFUSE
[  134.891160] RTW: EEPROM efuse[0x3D7]=0xf0
[  134.891182] RTW: EEPROM efuse[0x3D8]=0xf2
[  134.891209] RTW: EEPROM USB Switch=1
[  134.891230] RTW: EEPROM VID = 0x2357, PID = 0x012D
[  134.906365] RTW: [HALMAC][ALWAYS]shall R reg twice!!
[  134.907868] RTW: SetHwReg: bMacPwrCtrlOn=1
[  134.907992] RTW: rtl8822b_fw_dl fw source from array
[  135.001506] RTW: LocPsPoll: 1
[  135.001532] RTW: LocBTQosNull: 2
[  135.001554] RTW: LocNullData: 3
[  135.001578] RTW: LocQosNull: 4
[  135.001603] RTW: _cfg_drv_rsvd_pg_num: request 5 pages, but allocate 8 pages
[  135.012614] RTW: rtl8822b_fw_dl Download Firmware from array success
[  135.012652] RTW: NIC FW Version:22 SubVersion:6 FW size:145104
[  135.024113] RTW: SetHwReg: bMacPwrCtrlOn=0
[  135.024141] RTW: hal_read_mac_hidden_rpt OK! (1, 20ms), fwdl:1, id:0x19
[  135.024177] RTW: EEPROM Disable BT-coex by hal_spec
[  135.024207] RTW: rtw_hal_read_chip_info in 670 ms
[  135.024259] RTW: init_channel_set((null)) ChannelPlan ID:0x26, ch num:32
[  135.024895] RTW: NR_RECVBUFF: 8
[  135.024916] RTW: MAX_RECVBUF_SZ: 32768
[  135.024945] RTW: NR_PREALLOC_RECV_SKB: 8
[  135.025203] RTW: rtw_alloc_macid((null)) if1, mac_addr:ff:ff:ff:ff:ff:ff macid:1
[  135.025246] RTW: rtw_register_early_suspend
[  135.025293] RTW: IQK FW offload:enable
[  135.025319] RTW: init_phydm_cominfo: fab_ver=1 cut_ver=3
[  135.025353] RTW: rtw_regsty_chk_target_tx_power_valid return _FALSE for band:0, path:0, rs:0, t:-1
[  135.025470] RTW: phy_ConfigBBWithPgParaFile(): No File PHY_REG_PG.txt, Load from HWImg Array!
[  135.025534] RTW: default power by rate loaded
[  135.026993] RTW: rtw_macaddr_cfg mac addr:**:**:**:**:**:**
[  135.027028] RTW: bDriverStopped:True, bSurpriseRemoved:False, bup:0, hw_init_completed:0
[  135.027719] RTW: NR_RECVBUFF: 8
[  135.027739] RTW: MAX_RECVBUF_SZ: 32768
[  135.027779] RTW: NR_PREALLOC_RECV_SKB: 8
[  135.028059] RTW: rtw_alloc_macid((null)) if2, mac_addr:ff:ff:ff:ff:ff:ff macid:1
[  135.028113] RTW: rtw_drv_add_vir_if if2 mac_addr : **:**:**:**:**:**
[  135.028193] RTW: rtw_wiphy_alloc(phy2)
[  135.028218] RTW: rtw_wdev_alloc(padapter=e3639000)
[  135.028262] RTW: rtw_wiphy_alloc(phy3)
[  135.028285] RTW: rtw_wdev_alloc(padapter=e36af000)
[  135.028313] RTW: rtw_wiphy_register(phy2)
[  135.029377] RTW: rtw_ndev_init(wlan1) if1 mac_addr=**:**:**:**:**:**
[  135.029666] RTW: rtw_ndev_notifier_call(wlan1) state:16
[  135.032232] RTW: rtw_ndev_notifier_call(wlan1) state:5
[  135.032927] RTW: rtw_wiphy_register(phy3)
[  135.033943] RTW: rtw_ndev_init(wlan2) if2 mac_addr=**:**:**:**:**:**
[  135.034237] RTW: rtw_ndev_notifier_call(wlan2) state:16
[  135.036812] RTW: rtw_ndev_notifier_call(wlan2) state:5
...

Вывод ip a:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
    link/sit 0.0.0.0 brd 0.0.0.0
3: ip6tnl0: <NOARP> mtu 1452 qdisc noop state DOWN
    link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.31/24 brd 192.168.0.255 scope global wlan0
    inet6 fe80::292:bff:fe40:****/64 scope link
       valid_lft forever preferred_lft forever
5: p2p0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DORMANT qlen 1000
    link/ether 02:92:0b:40:da:df brd ff:ff:ff:ff:ff:ff
6: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
7: wlan2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff

Осталось теперь сообразить, каким образом сделать так, чтобы основным адаптером стал внешний, для которого модуль и собирался...

Sferg ()
Ответ на: комментарий от anymouze

Благодаря AbbaT удалось добиться появления интерфейсов wlan1 и wlan2, однако:

Вывод iwlist wlan1 scan:

wlan1     No scan results

Вывод iwlist wlan2 scan:

wlan2     No scan results

При:
ip link set wlan1 up - плеер перезагружается
ip link set wlan2 up - плеер перезагружается

Sferg ()
Ответ на: комментарий от AbbaT

AbbaT

Вариант - взять дровишки отсюда.

После работы попробую.

AbbaT

И не понятно, почему 3 Wi-Fi устройства, хотя должно быть 2.

Ну, wlan0 - это встроенный WiFi-адаптер, а wlan1\wlan2 появились после загрузки собранного модуля.

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

И да, исходники править не нужно, там уже добавлен нужный ID.

Ну, wlan0 - это встроенный WiFi-адаптер, а wlan1\wlan2 появились после загрузки собранного модуля.

Вот я и говорю, почему появилось 2 адаптера, должен появиться только wlan1.

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

Быть может, 2 интерфейса появилось из-за того, что адаптер двухдиапазонный? Работает на 2.4 гГц и 5 гГц. У wlan1\wlan2 MAC-адреса немного отличаются.

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

Да по идее нет, у меня тоже 2-х диапазонный Wi-Fi свисток, интерфейс 1.

AbbaT ()
Ответ на: комментарий от Sferg

Быть может, 2 интерфейса появилось из-за того, что адаптер двухдиапазонный

Этот адаптер может одновременно работать в 2-х диапазонах?

У wlan1\wlan2 MAC-адреса немного отличаются.

В обычном линуксе адаптер не тестировал?

В dmesg проскакивает какая-то ошибка и ряд других неоднозначных сообщений

[  134.359618] RTW: ERROR [HALMAC][ERR]Dump efuse in suspend
[  134.886996] RTW: is_valid_id_status: HALMAC_FEATURE_DUMP_LOGICAL_EFUSE
...
[  135.024177] RTW: EEPROM Disable BT-coex by hal_spec
...
[  135.025353] RTW: rtw_regsty_chk_target_tx_power_valid return _FALSE for band:0, path:0, rs:0, t:-1
[  135.025470] RTW: phy_ConfigBBWithPgParaFile(): No File PHY_REG_PG.txt, Load from HWImg Array!
...
может кто-то знает: «забей» или «копать здесь» :) ?

anymouze ★★ ()

На всякий случай уточню - в драйверах, которые ты скачал, менял значение в Makefile под ARM?

AbbaT ()
Ответ на: комментарий от anymouze

anymouze

Этот адаптер может одновременно работать в 2-х диапазонах?

Ну, адаптер видит в списке доступных точек доступа как те, что работают на 2.4 гГц, так и те, что работают на 5 гГц.

anymouze

В обычном линуксе адаптер не тестировал?

Нет, пока что не тестировал. Но это неизбежно.

anymouze

В dmesg проскакивает какая-то ошибка и ряд других неоднозначных сообщений может кто-то знает: «забей» или «копать здесь» :) ?

Полагаю, на них можно «забить», ибо не фатальные.

Sferg ()
Ответ на: комментарий от AbbaT

AbbaT

На всякий случай уточню - в драйверах, которые ты скачал, менял значение в Makefile под ARM?

Да, конечно. Сборку осуществлял с параметром:

CONFIG_PLATFORM_ARM_RK3066 = y

, с указанием путей к Android SDK и к исходникам ядра 3.0.36.

Вчера мне совершенно случайно удалось запустить адаптер, а сегодня я почему-то не могу снова воспроизвести свои действия. Действовал примерно так:

mount -o remount,rw /
mount -o remount,rw /system
cp /sdcard/Download/rtl88x2bu/3.0.36+/rtl8812bu.o /system/lib/modules
mkdir -p /lib/modules/3.0.36+/
ln -s /system/lib/modules/* /lib/modules/3.0.36+/
depmod
cp /lib/modules/3.0.36+/modules.dep.bb /system/lib/modules
rm /lib/modules/3.0.36+/*
ln -s /system/lib/modules/* /lib/modules/3.0.36+/
modprobe rtl8812bu

При этом плеер намертво завис, а через несколько секунд стал перезагружаться. После перезагрузки в настройках Android у адаптера изменился MAC-адрес. Причём при выводе команды ip a он не соответствовал реальному адресу адаптера и был всего один интерфейс - wlan0, но при этом всё работало. Сегодня утром, включив ТВ, в плеере запустился встроенный адаптер вместо внешнего.

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

адаптер видит в списке доступных точек доступа как те, что работают на 2.4 гГц, так и те, что работают на 5 гГц.

О, это любопытно... «Такой маленький, а интересны-й-й» :) // я про адаптер, если что.

Нет, пока что не тестировал.

Ну как-так, а если он и в «большом линуксе» работает с особенностями*?!

Полагаю, на них можно «забить», ибо не фатальные.

Я про них упоминал, как о возможных «зацепках»... Но я не могу утверждать, что в тех сообщениях действительно есть подсказки «почему не работает».

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

Как советуют выше, действительно, лучше для начала запустить адаптер на обычном компе. И для пробы можно вообще добавить модуль встроенного адаптера в блеклист. Хотя по идее они не должны друг-другу мешать.

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

AbbaT

Как советуют выше, действительно, лучше для начала запустить адаптер на обычном компе.

Собрал модуль для компа (x86_64), добавив предварительно в файл ../os_dep/linux/usb_intf.c предложенную Вами строчку:

{USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x012d, 0xff, 0xff, 0xff), .driver_info = RTL8822B},

Сборку и установку для компа делал так:

git clone https://github.com/cilynx/rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959.git
cd rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959
VER=$(sed -n 's/\PACKAGE_VERSION="\(.*\)"/\1/p' dkms.conf)
rsync -rvhP ./ /usr/src/rtl88x2bu-${VER}
dkms add -m rtl88x2bu -v ${VER}
dkms build -m rtl88x2bu -v ${VER}
dkms install -m rtl88x2bu -v ${VER}
modprobe 88x2bu

На компе модуль завёлся исправно, без каких-либо нюансов. При этом в ifconfig -a вывелся всего один интерфейс wlan1 с реальным MAC-адресом адаптера:

wlan1     Link encap:Ethernet  HWaddr **:**:**:**:**:**
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

При подаче команд:

# ip link set wlan1 up
# iwlist wlan1 scanning | egrep 'Cell |Encryption|Quality|Last beacon|ESSID'

вывелось следующее:

Cell 01 - Address: **:**:**:**:**:**
          ESSID:"HUAWEI-5JXK5D"
          Encryption key:on
          Quality=0/100  Signal level=28/100
Cell 02 - Address: **:**:**:**:**:**
          ESSID:"Kaluga"
          Encryption key:on
          Quality=0/100  Signal level=21/100
Cell 03 - Address: **:**:**:**:**:**
          ESSID:"Atom"
          Encryption key:on
          Quality=0/100  Signal level=47/100
Cell 04 - Address: **:**:**:**:**:**
          ESSID:"Karina"
          Encryption key:on
          Quality=0/100  Signal level=20/100
Cell 05 - Address: **:**:**:**:**:**
          ESSID:"RT-WiFi-46"
          Encryption key:on
          Quality=0/100  Signal level=16/100
Cell 06 - Address: **:**:**:**:**:**
          ESSID:"Dyumini"
          Encryption key:on
          Quality=0/100  Signal level=16/100
Cell 07 - Address: **:**:**:**:**:**
          ESSID:"MTSRouter-EE25FD"
          Encryption key:on
          Quality=0/100  Signal level=14/100

из чего следует, что адаптер, как минимум работает, раз видит окружающие точки доступа.

На всякий случай прилагаю вывод dmesg, который с компа.

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

Судя по всему да, но для полноты картины я бы еще посоветовал подключиться к точке доступа - у меня была проблема с RTL8192EU, при сборке родного ядерного модуля сеть было видно, но подключиться не получалось, пришлось ставить сторонний.

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

На планшете активировал режим точки доступа Wi-Fi. Адаптер успешно подключился к точке и получил от неё IP.

Вывод iwconfig wlan1:

wlan1     IEEE 802.11bgn  ESSID:"AndroidAP"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:2.412 GHz  Access Point: **:**:**:**:**:**
          Bit Rate:72.2 Mb/s   Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:****-****-****-****-****-****-****-****   Security mode:open
          Power Management:off
          Link Quality=100/100  Signal level=50/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Вывод ifconfig -a:

wlan1     Link encap:Ethernet  HWaddr **:**:**:**:**:**
          inet addr:192.168.43.79  Bcast:192.168.43.255  Mask:255.255.255.0
          inet6 addr: fe80::523e:aaff:fedc:****/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:65 errors:0 dropped:1 overruns:0 frame:0
          TX packets:57 errors:0 dropped:8 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:10788 (10.5 KiB)  TX bytes:9147 (8.9 KiB)

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

Ну значит дрова рабочие, и сам свисток нормально работает. Осталось заставить его работать в плеере.

Кстати, я как-то сначала не обратил внимания про установку модуля Как подружить WiFi-адаптер TP-Link Archer T3U и Android 4.4.2? (комментарий).

Я не совсем понимаю, зачем такие манипуляции с файлами модулей, разве нельзя закинуть директорию с уже собранным модулем и оттуда просто выполнить make install, чтобы файлы раскидало автоматически? И это случаем не опечатка в третьей строчке, про копирование файла, т.к. расширение файла должно быть *.ko

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

AbbaT

Осталось заставить его работать в плеере.

Да уж, с этим-то как раз и проблема. Подключаю адаптер к плееру, затем копирую собранный rtl88x2bu.ko в /system/lib/modules плеера, потом выполняю insmod /system/lib/modules/rtl88x2bu.ko. В итоге появляются интерфейсы wlan1 и wlan2. Но стоит только извлечь адаптер из разъёма или подать команду:

ip link set wlan1 up

или

ip link set wlan2 up

, как плеер зависает и через какое-то время уходит в перезагрузку.

AbbaT

и оттуда просто выполнить make install, чтобы файлы раскидало автоматически?

К сожалению, так не получится. Модуль для WiFi-адаптера я пытался собирать на компе, а не на медиаплеере, поскольку на плеере полноценную среду для сборки добиться не получится - там максимум busybox. Ещё не уверен: возможно я что-то неправильно указал в файле makefile до компиляции модуля. Или чего-то нужного не указываю.

1. В файле /rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959/os_dep/linux/usb_intf.c добавил строчку:

{USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x012d, 0xff, 0xff, 0xff), .driver_info = RTL8822B}, /* TP-Link Archer T3U */

2. В файле /rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959\Makefile строчку:

CONFIG_PLATFORM_I386_PC = y

заменил на:

CONFIG_PLATFORM_I386_PC = n

далее строчку:

CONFIG_PLATFORM_ARM_RK3066 = n

заменил на:

CONFIG_PLATFORM_ARM_RK3066 = y

наконец в:

ifeq ($(CONFIG_PLATFORM_ARM_RK3066), y)
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_RK3066
EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
endif
EXTRA_CFLAGS += -fno-pic
ARCH := arm
CROSS_COMPILE := /home/sferg/rockchip/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
#CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3066sdk/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
KSRC := /rk3066-kernel-KK3.0.36/kernel
MODULE_NAME :=wlan
endif

заменил правильные пути для CROSS_COMPILE и KSRC. А для MODULE_NAME указал rtl8812bu.

AbbaT

И это случаем не опечатка в третьей строчке, про копирование файла, т.к. расширение файла должно быть *.ko

Да, Вы правы. Это опечатка.

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

Вот я и не понимаю, почему появляется 2 wlan устройства, на компе всё нормально, а на плеере нет. А если добавить модуль ядра встроенного адаптера в blacklist?

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

Как blacklist'ить на Android я, к сожалению, не знаю. Пробовал удалить\переименовать файл /system/lib/modules/wlan.ko. В таком случае встроенный (wlan0) адаптер исчезает. После выполнения insmod /system/lib/modules/rtl8x22bu.ko появляются те же 2 интерфейса, но уже с нумерацией wlan0 и wlan1. Wi-Fi не работает.

Sferg ()
Ответ на: комментарий от AbbaT

Попробовал запитать плеер через БП помощнее. Увы, без изменений: те же 2 интерфейса появляются. Ещё хуже стало: теперь при выполнении insmod /system/lib/modules/rtl8812bu.ko плеер сразу зависает и перезагружается. После нескольких попыток подключить модуль, вообще слетели все настройки установленных программ (сами программы остались на месте).

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

Нужно достать логи системы, чтобы понять, почему происходит перезагрузка, может это KernelPanic или ещё что. К сожалению, тут подсказать не могу, Android не ковырял.

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

Да, там Kernel Panic... Только вот не пойму, откуда уши растут.
Прилагаю файл last_kmsg (в архиве), куда пишутся сообщения ядра.

Sferg ()
Ответ на: комментарий от AbbaT

В общем, решил пересобрать ядро 3.0.36+ с другой конфигурацией. До этого собирал так:

export ARCH=arm
export CROSS_COMPILE=/rk3066-kernel-KK3.0.36/toolchain/arm-eabi-4.6/bin/arm-eabi-
make rk30_sdk_defconfig
make -j4

сегодня ядрышко собрал так:

export ARCH=arm
export CROSS_COMPILE=/rk3066-kernel-KK3.0.36/toolchain/arm-eabi-4.6/bin/arm-eabi-
make rk3066_sdk_android-4.4_defconfig
make -j4

После этого собрал модуль для адаптера на основе пересобранного ядра. В результате загрузки модуля на плеер, никаких зависаний и Kernel Panic пока что не выявлено. Появляются те же 2 сетевых интерфейса wlan0 и wlan1. Но теперь при выполнении:

iwlist wlan0 scan

или

iwlist wlan1 scan

выводится список доступных к подключению точек доступа. Осталось разобраться с тем, каким образом теперь подключиться к точке доступа, поскольку в Android в настройках хоть включай Wi-Fi, хоть не включай - подключение не происходит и список доступных точек доступа не отображается. Список можно получить лишь из командной строки.

Sferg ()
Ответ на: комментарий от AbbaT

AbbaT

В общем всему виной неправильный конфиг ядра :)

Хочется ответить словами великого классика:

«О сколько нам открытий чудных
Готовят просвещенья дух
И Опыт, сын ошибок трудных,
И Гений, парадоксов друг,
И Случай, Бог-изобретатель.»

AbbaT

А выбор есть конечно - wpa_supplicant или, например, iwconfig.

Всё оказалось проще: добавил при помощи Kernel Adiutor в автозагрузку следующие строчки:

rmmod wlan
insmod /system/lib/modules/8812bu.ko
Теперь при перезагрузке встроенный модуль отключается, а внешний подключается.

Вывод iwconfig:

wlan0     IEEE 802.11bgn  ESSID:"Atom"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:2.437 GHz  Access Point: **:**:**:**:**:**
          Bit Rate:300 Mb/s   Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:****-****-****-****-****-****-****-****   Security mode:open
          Power Management:off
          Link Quality=100/100  Signal level=-39 dBm  Noise level=0 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

wlan1     unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated
          Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=0/100  Signal level=0 dBm  Noise level=0 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

В настройках Wi-Fi, если зайти через меню, корректно отображаются точки доступа. Правда, MAC-адрес там указан от встроенного модуля, тогда как в командной строке фигурирует уже другой.

Собственно говоря, цель достигнута. Хочу выразить благодарность всем тем, кто принимал участие в сей дискуссии за подсказки и советы.

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

цель достигнута.

Адаптер работает под android? Через wifi ac? Возможно, стоит более подробно расписать как «оно работает» — «для потомков» :)

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

anymouze

Адаптер работает под android?

Точно так.

anymouze

Через wifi ac?

Ну, адаптер умеет работать в режиме 802.11ac, но в настоящее время он подключается к точке доступа, которая работает только в режиме 802.11n (2.4 GHz). Думаю, на следующих выходных запущу другую точку доступа, которая будет работать в режиме 802.11ac, и тогда попробую адаптер подключить в новом режиме.

anymouze

Возможно, стоит более подробно расписать как «оно работает» — «для потомков» :)

На первый взгляд - работает нормально, но нужно дальнейшее тестирование «в боевых» условиях. Встроенный в медиаплеер адаптер страдал изрядной глухотцой. С новым же - чувствительность подросла где-то в 1.5 раза.

Sferg ()
Ответ на: комментарий от anymouze

Подключил я адаптер на медиаплеере в режиме 802.11ac. Работает исправно - у медиаплеера будто открылось новое дыхание. Скорость подключения составляет 867 Mbps. Измерил скорости с помощью приложения Speedtest до своего провайдера (у меня по тарифу скорость 50 Mbps - провайдер щедрый):

Скорость Download: 85.8 Mbps
Скорость Upload  : 93.3 Mbps
Значение Ping    : 2 ms
В целом я результатом доволен.

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

Рад что у Вас всё получилось!

Прошу прощения за столь запоздалую реплику...

Встроенный в медиаплеер адаптер страдал изрядной глухотцой. С новым же - чувствительность подросла где-то в 1.5 раза.

У встроенного адаптера, вероятно, антенна «символическая» да и размещена она, скорее всего не самым оптимальным образом (впрочем уже не важно).

Подключил я адаптер на медиаплеере в режиме 802.11ac. Работает исправно

Поздравляю! (что ещё сказать). Переключение режимов wifi через консоль осуществляете? (возможно стоит это описать подробнее, для возможных «других страждущих»)

anymouze ★★ ()
Ответ на: Рад что у Вас всё получилось! от anymouze

anymouze

Рад что у Вас всё получилось!

Спасибо Вам (а также всем тем, кто принимал участие в данной дискуссии) большое за помощь, поддержку и консультации.

anymouze

Прошу прощения за столь запоздалую реплику...

Ничего страшного, всё в порядке. У всех бывают дела.

anymouze

У встроенного адаптера, вероятно, антенна «символическая» да и размещена она, скорее всего не самым оптимальным образом (впрочем уже не важно).

Я тоже так считаю. Впрочем, чего ещё ожидать от бюджетной китайской поделки...

anymouze

Переключение режимов wifi через консоль осуществляете? (возможно стоит это описать подробнее, для возможных «других страждущих»)

Да. Как я уже писал выше, при помощи Kernel Adiutor добавил в автозагрузку следующие строчки:

rmmod wlan
insmod /system/lib/modules/8812bu.ko
и при загрузке медиаплеера происходит переключение с внутреннего адаптера на внешний.

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

при загрузке медиаплеера происходит переключение с внутреннего адаптера на внешний

А как выбирается режим wifi: ac или n? Или это не «управляется»?

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

anymouze

А как выбирается режим wifi: ac или n? Или это не «управляется»?

На стороне медиаплеера это никак не управляется. Режим работы задаётся на стороне точки доступа.

Sferg ()
30 ноября 2020 г.
Ответ на: комментарий от Sferg

Usb Wifi

Подскажите, а можно ли таким же образом подружить андроид тв TCL 50P615 с АС адаптером. Устройство на андроид 9.0

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