Marvell 的无线驱动程序无法识别

Marvell 的无线驱动程序无法识别

我刚拿到 Surface Pro,经过一番折腾,终于成功安装了 Ubuntu - 目前使用的是 12.10。除了无线适配器之外,开箱后一切运行正常。它是 Marvell 的 88W8797。

我听说过有人使用 ndiswrapper,但我不知道如何使用它,而且我无法找到驱动程序。

答案1

在 Doug 手动修复问题的基础上,我实际上能够非常轻松地实现该过程的自动化。我写这篇文章是为了那些刚接触这个帖子的人,所以请耐心等待我重复一些你们可能已经知道的事情。

首先,我们需要获取 wpa_gui 应用程序以替换 NetworkManager 服务。

sudo apt-get install wpagui

然后我们需要编辑 /etc/network/interfaces 文件。

sudo gedit /etc/network/interfaces

将此文件中的所有内容替换为:

    auto lo
    auto mlan0
    iface lo inet loopback
    iface mlan0 inet manual
            wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp

“auto mlan0”行在这里至关重要,因为它会在启动时自动启动 wpa_supplicant 守护进程。就像 Doug 的修复一样,我们仍然将手动配置设置为我们的 mlan0,但现在只需将其指向 wpa_supplicant.conf 配置。最后一个重要部分是,我们希望我们的互联网自动从路由器获取 dhcp,所以这就是最后一行的作用。

然后我们进入 /etc/wpa_supplicant/ 来编辑配置文件。

sudo gedit /etc/wpa_supplicant/wpa_supplicant.conf

此配置文件很重要,因为它将包含网络密码。我们希望首先编辑此文件,然后将任何未来的编辑都严格地放在 GUI 上。为此,请将以下内容添加到文件中。

    update_config=1
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

现在在终端中,运行以下代码,首先将您的用户添加到“netdev”组,然后锁定此配置文件。

sudo adduser YOUR_USER_NAME netdev
chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf

下一步工作是防止 NetworkManager 在启动时运行。

sudo mv /etc/init/network-manager.conf /etc/init/network-manager.conf-disabled
sudo mv /etc/xdg/autostart/nm-applet.desktop /etc/xdg/autostart/nm-applet.desktop.disabled

最后,我们希望 WPA_gui 在启动时启动。由于此应用程序没有服务,我们只需从 Ubuntu 自己的启动应用程序工具中执行此操作。只需在 Dash Home 中搜索它,单击“添加”,在命令部分写入“wpa_gui -t”并将其命名为 WPA GUI(或您想要的任何名称)。-t 选项很重要,因为它会在托盘中启动 wpa_gui。保存并重新启动。

通过图标启动 gui 工具。mlan0 现在应该在适配器列表下可见。单击“扫描”,选择您选择的网络,输入您的密码并观察它自动连接。完成更改设置后,转到文件->保存配置以保存所有内容。从现在开始,您的 Surface Pro 将自动连接到您的 WiFi。

感谢 XRunHProf 关于在 Debian 上配置 WPA 的精彩帖子。 http://xrunhprof.wordpress.com/2009/09/19/setup-wpa_gui-and-roaming-on-debian/

答案2

我能够让驱动程序与 chili555 提供的新固件一起工作,但必须禁用 NetworkManager 才能做到这一点。我在 /etc/network/interfaces 文件中输入了 uap0 和 mlan0 以禁用 NetworkManager 管理它们:

iface mlan0 inet manual
iface uap0 inet manual

然后我重新启动并关闭了网络管理器服务:

service network-manager stop

然后我创建了一个 /etc/wpa_supplicant.conf 文件:

ctrl_interface_group=0
ctrl_interface=/var/run/wpa_supplicant
network={
    scan_ssid=1
    ssid="mySid"
    key_mgmt=WPA-PSK
    psk="passwordGoesWhere?"
}

我在命令行中使用调试模式运行了 wpa_supplicant 以使其正常工作:

/sbin/wpa_supplicant -dd -imlan0 -c/etc/wpa_supplicant.conf -Dwext,nl80211

连接后,我运行 dhcp 来获取我的 IP 地址:

/sbin/dhclient mlan0

它不是自动化的,我相信还有其他更好的方法可以做到这一点,但它证实了我的网卡可以工作并连接。

答案3

我相信它连接到主板上的 USB 总线。请运行:

lsusb

您有 1286:2043 或 1286:2044 吗?如果是,它使用内核中已有的驱动程序 mwifiex_usb。但是,根据 modinfo,它需要 linux-firmware 包中当前未包含的固件:

$ modinfo mwifiex_usb
filename:       /lib/modules/3.5.0-23-generic/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
firmware:       mrvl/usb8797_uapsta.bin
license:        GPL v2
version:        1.0
<snip>

固件包包含在我提取的 Raring (13.04) linux-firmware 包中。你可以在这里获取它:https://dl.dropbox.com/u/58267392/mrvl.zip

将软件包拖放到桌面。右键单击它并选择“在此处提取”。现在,在终端中执行以下操作:

cd Desktop
sudo cp mrvl/* /lib/firmware/mrvl

现在我们卸载驱动程序并重新加载,以便它看到崭新的固件:

sudo modprobe -r mwifiex_usb && sudo modprobe mwifiex_usb

你的无线网络现在应该可以正常工作了。

相关内容