LINUX.ORG.RU

Допилить драйвер для Wi-Fi MT7630

 , , ,


0

1

Добрый день, лор! Недавно приобрел ноутбук и тут же выяснил, что тут какой-то экзотический модуль Wi-Fi MediaTek Corp. Device 7630. В интернете я нашел для него драйвер, но только под ядро 3.5, что мне не очень устраивает. При компиляции на ядре, к примеру, 3.14, появляются ошибки в одной функции. Сможет кто-нибудь помочь мне допилить драйвер? В C я не очень шарю, поэтому без чужой помощи ничего не выйдет :с Заранее спасибо!

Ответ на: комментарий от dimon555

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

Alexeev
() автор топика

Просто используй под 3.5.x. Ну или возьми с гита, что там есть и сам допили поддержку нужного ядра.

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

Это в job, врядли тебе просто так от лени кто-то модуль к более свежему ядру подгонять будет.
Тем более скорей там скорей всего обертка/окружение для проприетарной firmware, и поддержка только 3.5, там не просто так. (не смотрел, просто ввел в гугл и заглянул на главную страницу гитхаба.)

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

ни разу такого не видел, но скорее всего
Device drivers -> Network device support -> Wireless LAN -> RaLink driver support -> Ralink rt27xx/rt28xx/rt30xx (PCI/PCIe/PCMCIA) support

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

во всех :)

это когда сам собираешь ядро (например, 3.14), make menuconfig

metawishmaster ★★★★★
()

Друзья, извините за неправильную подачу проблемы.

Дело в том, что в архиве драйвера лежит load.sh следующего содержания:

insmod /lib/modules/3.5.0-24-generic/kernel/drivers/misc/eeprom/eeprom.ko
insmod /lib/modules/3.5.0-24-generic/kernel/drivers/misc/eeprom/eeprom_93cx6.ko
insmod /lib/modules/3.5.0-24-generic/kernel/lib/crc-ccitt.ko
insmod /lib/modules/3.5.0-24-generic/kernel/net/wireless/cfg80211.ko
insmod /lib/modules/3.5.0-24-generic/kernel/net/mac80211/mac80211.ko
insmod ./rt2x00lib.ko;
insmod ./rt2x00pci.ko;
insmod ./rt2800lib.ko;
insmod ./rt2800pci.ko;
Видно, автор пьян или говнокодер, но суть не в пути до модулей ядра. Все эти модули лежат в ядре (включая последние, которые нужно компилировать), но! когда я подключаю их через modprobe ничего не происходит! Может быть это я неправильно понимаю принцип работы modprobe или вообще модулей ядра? Спасибо!

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

Да, я делал

$ sudo modprobe rt2x00pci
$ sudo modprobe rt2800pci

$ lsmod | grep rt
rt2800pci               5785  0 
rt2800mmio              7270  1 rt2800pci
rt2800lib              76675  2 rt2800pci,rt2800mmio
rt2x00mmio              2961  2 rt2800pci,rt2800mmio
eeprom_93cx6            2217  1 rt2800pci
crc_ccitt               1363  1 rt2800lib
rt2x00pci               2624  1 rt2800pci
rt2x00lib              38983  5 rt2x00pci,rt2800lib,rt2800pci,rt2800mmio,rt2x00mmio
mac80211              510355  3 rt2x00lib,rt2x00pci,rt2800lib
cfg80211              459335  2 mac80211,rt2x00lib
iTCO_vendor_support     1929  1 iTCO_wdt
led_class               3611  2 rt2x00lib,hp_accel

Но в устройствах не появилось wlan0

$ sudo ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether a0:48:1c:12:6d:bc brd ff:ff:ff:ff:ff:ff

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

сделал самостоятельно insmod rt2800pci и появилась зацепка:

insmod: ERROR: could not insert module /lib/modules/3.14.2-1-ARCH/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko.gz: Unknown symbol in module
И в dmesg:
[ 8538.887964] rt2800pci: Unknown symbol rt2x00mmio_uninitialize (err 0)
[ 8538.888022] rt2800pci: Unknown symbol rt2x00mmio_flush_queue (err 0)
[ 8538.888059] rt2800pci: Unknown symbol rt2800mmio_stop_queue (err 0)
[ 8538.888090] rt2800pci: Unknown symbol rt2800mmio_enable_radio (err 0)
[ 8538.888129] rt2800pci: Unknown symbol rt2800mmio_start_queue (err 0)
[ 8538.888159] rt2800pci: Unknown symbol rt2800mmio_init_registers (err 0)
[ 8538.888188] rt2800pci: Unknown symbol rt2800mmio_kick_queue (err 0)
[ 8538.888222] rt2800pci: Unknown symbol rt2800mmio_rxdone_tasklet (err 0)
[ 8538.888298] rt2800pci: Unknown symbol rt2x00mmio_regbusy_read (err 0)
[ 8538.888328] rt2800pci: Unknown symbol rt2800mmio_fill_rxdone (err 0)
[ 8538.888375] rt2800pci: Unknown symbol rt2800mmio_txstatus_tasklet (err 0)
[ 8538.888421] rt2800pci: Unknown symbol rt2800mmio_toggle_irq (err 0)
[ 8538.888463] rt2800pci: Unknown symbol rt2800mmio_queue_init (err 0)
[ 8538.888507] rt2800pci: Unknown symbol rt2800mmio_pretbtt_tasklet (err 0)
[ 8538.888540] rt2800pci: Unknown symbol rt2800mmio_get_txwi (err 0)
[ 8538.888591] rt2800pci: Unknown symbol rt2800mmio_interrupt (err 0)
[ 8538.888681] rt2800pci: Unknown symbol rt2800mmio_autowake_tasklet (err 0)
[ 8538.888711] rt2800pci: Unknown symbol rt2x00mmio_initialize (err 0)
[ 8538.888744] rt2800pci: Unknown symbol rt2800mmio_write_tx_desc (err 0)
[ 8538.888773] rt2800pci: Unknown symbol rt2800mmio_clear_entry (err 0)
[ 8538.888802] rt2800pci: Unknown symbol rt2800mmio_tbtt_tasklet (err 0)
[ 8538.888845] rt2800pci: Unknown symbol rt2800mmio_get_entry_state (err 0)

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

Логично, что нехватало некоторых модулей, посмотрел все зависимости, исправил их, получился такой load.sh:

insmod /lib/modules/`uname -r`/kernel/drivers/misc/eeprom/eeprom.ko.gz;
insmod /lib/modules/`uname -r`/kernel/drivers/misc/eeprom/eeprom_93cx6.ko.gz;
insmod /lib/modules/`uname -r`/kernel/lib/crc-ccitt.ko.gz;
insmod /lib/modules/`uname -r`/kernel/net/wireless/cfg80211.ko.gz;
insmod /lib/modules/`uname -r`/kernel/net/mac80211/mac80211.ko.gz;

insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko.gz;
insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko.gz;
insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko.gz;

insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko.gz;
insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko.gz;
insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko.gz;
Выполнился без ошибок, в dmesg ничего интересного.
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether a0:48:1c:12:6d:bc brd ff:ff:ff:ff:ff:ff

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