web-dev-qa-db-ja.com

Ralink 148f:760b mt7601ドライバーは、パッチを適用しても12.04でビルドされません

仲間のUbuntuniansこんにちは;)

Ubuntuで慣れているように魔法のように機能すると考えて、この安価なRalink wifiアダプターを購入しました。 ;)しかし、このドライバーのインストールは、予想以上に多くのトラブルを引き起こしています。ボードを数時間かけてすべてを試してきました。まあ...私はこれが正しいアプローチであることを最初から知っていました(答えを意味します):

Ralink MT7601U(148f:7601)Wi-Fiアダプターのインストール

しかし、パッチを適用しても、次の結果が得られます。

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 wrapper approach を使用しようとしましたが、unshieldはWindowsドライバーの実行可能ファイルを抽出できず、.sys/.infコンボがどこにも見つからなかったため、アイデアは捨てられました。

任意の助けに感謝します。これはユーザー名前空間の問題であることは知っていますが、カーネルコーディングは行っていませんが、それでも私はコーダーなので、自分でこれを解決することはできません。

ああ、必要に応じて私のシステム情報のごく一部:Ubuntu 12.04(正確)、カーネル:3.2.0-70-generic(#105-Ubuntu SMP Wed Sep 24 19:49:16 UTC 2014)、GCCバージョン:4.6(x86_64 -linux-gnu)、Gnome 3.4.2

事前に感謝します!

2
Ahti Komu

自分に答えます。

私はパッチを適用したくありませんでした。パッチを適用せずに、ドライバーをコンパイルしました。ただし、間違ってマップするか、148f:760b(<-1の代わりにbに注意)usbアダプターで動作しないようです。デバイスリストを変更して新しいエイリアスを追加しましたが、ドライバーまたはそれに関連する他のデータをロードした後でも、アダプターは認識されませんでした。

しかし、Windows 7でドライバーをインストールしたとき(Windows XPでは動作しなかったようです)、インストールプロセスがC:/ ProgramData/Mediatek Driver/RT2870 Wireless LAN Card/Driver /にあるドライバーフォルダーにUbuntuにコピーされた後、 ndisラッパーとndiswrapper-dkmsパッケージでロードすると、アダプターはすぐに機能しました。実際、Windows側では、何らかの理由でwlanがまったく認識されませんでしたが、Ubuntuではワンクリックですぐにワイヤレスでオンラインになりました。

そのため、あちこちで奇妙な振る舞いをしましたが、最終的には機能しています。

2
Ahti Komu

おそらくUbuntu 12.04はもう使用していませんが、いずれにしても、パッチを適用したときに発生したコンパイルエラーの解決策は次のとおりです。

パッチは、Linuxカーネル> = .5ですぐに使用できます。 Ubuntuの12.04カーネルで動作させるには.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)

今すぐコンパイルしてみてください、それは動作するはずです:)

0
MestreLion