Драйвер Ralink 148f:760b mt7601 не собирается на 12.04 даже после патча

Драйвер Ralink 148f:760b mt7601 не собирается на 12.04 даже после патча

Привет, собратья-убунцы ;)

Я купил этот дешевый адаптер Ralink Wi-Fi, думая, что он будет работать как по волшебству, как я привык с Ubuntu. ;) Однако эта установка драйвера доставила мне гораздо больше проблем, чем я ожидал. Я рылся в платах несколько часов, пробуя все подряд. Ну... Я с самого начала знал, что это будет правильным подходом (я имею в виду ответ):

Установка Wi-Fi адаптера Ralink MT7601U (148f:7601)

Но даже с установленным патчем я получаю следующее:

ahti@ahti:~/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913$ make
make -C tools
make[1]: Siirrytään hakemistoon "/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools"
gcc -g bin2h.c -o bin2h
make[1]: Poistutaan hakemistosta "/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools"
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools/bin2h
cp -f os/linux/Makefile.6 /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/Makefile
make -C /lib/modules/3.2.0-70-generic/build SUBDIRS=/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux modules
make[1]: Siirrytään hakemistoon "/usr/src/linux-headers-3.2.0-70-generic"
  CC [M]  /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o
In file included from /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rtmp_os.h:44:0,
                 from /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rtmp_comm.h:75,
                 from /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rt_config.h:33,
                 from /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c:28:
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/os/rt_linux.h:282:2: virhe: unknown type name ”kuid_t”
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/os/rt_linux.h:283:2: virhe: unknown type name ”kgid_t”
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c: Funktio ”announce_802_3_packet”:
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c:331:16: varoitus: käyttämätön muuttuja ”pAd” [-Wunused-variable]
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c: Funktio ”STA_MonPktSend”:
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c:399:9: varoitus: format ”%d” expects argument of type ”int”, but argument 3 has type ”long unsigned int” [-Wformat]
make[2]: *** [/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o] Virhe 1
make[1]: *** [_module_/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux] Virhe 2
make[1]: Poistutaan hakemistosta "/usr/src/linux-headers-3.2.0-70-generic"
make: *** [LINUX] Virhe 2

Извините, что мой консольный вывод на финском языке (Как мне, кстати, изменить этот чертов консольный вывод на английский? В основном для apt и инструментов сборки, если невозможно использовать английскую локаль для всего в терминальной сессии? Это невозможно?)

Но да, это, по сути, то, где я сейчас нахожусь.

Я также пытался использоватьподход ndis-обертки, но unshield не смог извлечь исполняемый файл драйвера Windows, и я нигде не смог найти комбинацию .sys/.inf, поэтому эта идея была отброшена.

Любая помощь приветствуется. Я знаю, что это проблема пространства имен пользователя, но я не занимался кодированием ядра, тем не менее я кодер, поэтому не могу решить это самостоятельно.

О, и немного информации о моей системе, если нужно: Ubuntu 12.04 (точная), ядро: 3.2.0-70-generic (#105-Ubuntu SMP Ср Сен 24 19:49:16 UTC 2014), версия GCC: 4.6 (x86_64-linux-gnu), Gnome 3.4.2

Спасибо заранее!

решение1

Отвечаю сам себе.

Я слишком хотел применить патч. Без применения патча драйвер скомпилировался. Однако, похоже, он либо неправильно отображает, либо просто не работает с моим usb-адаптером 148f:760b (<- обратите внимание на b вместо 1). Я даже изменил список устройств, чтобы добавить новый псевдоним, но даже после загрузки драйвера или кучи других вещей, связанных с ним, адаптер просто не распознавался.

Но когда я установил драйвер в Windows 7 (в Windows XP он, похоже, не работал) и после процесса установки скопировал папку драйвера, расположенную в C:/ProgramData/Mediatek Driver/RT2870 Wireless LAN Card/Driver/, в Ubuntu и загрузил ее с помощью ndis wrapper и пакета ndiswrapper-dkms, адаптер сразу же заработал. На самом деле, на стороне Windows он по какой-то причине вообще не распознал мой wlan, но на Ubuntu это было всего одним щелчком мыши, и я сразу же оказался в сети по беспроводной сети.

Итак, иногда возникают странности в поведении, но в итоге все работает.

решение2

Вы, вероятно, уже не используете Ubuntu 12.04, но в любом случае, вот решение ошибки компиляции, которая возникла при применении патчей:

Патчи работают «из коробки» только с ядром Linux >=3.5. Чтобы заставить его работать с ядром Ubuntu 12.043.2Вам придется сделать небольшую поправку:

В include/os/rt_linux.h, найдите следующий блок. В моей версии он начинается со строки 280, но ваша версия может немного отличаться в зависимости от того, откуда вы взяли исходники:

typedef struct _OS_FS_INFO_
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)
    uid_t               fsuid;
    gid_t               fsgid;
#else
    kuid_t              fsuid;
    kgid_t              fsgid;
#endif
    mm_segment_t    fs;
} OS_FS_INFO;

Получите эту строку (в моем случае 282):

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)

И измените его на

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)

Попробуйте скомпилировать сейчас, должно заработать :)

Связанный контент