Marvell's wireless driver not recognized
Solution 1:
Building up on Doug's manual fix to the problem, I was actually able to automate the process pretty easily. I'm writing this for people who are new to this thread so bear with me while I repeat some things that some of you may already know.
First of all, we need to grab the wpa_gui application in order to replace the NetworkManager service.
sudo apt-get install wpagui
Then we need to edit the /etc/network/interfaces file.
sudo gedit /etc/network/interfaces
Replace everything in this file with:
auto lo
auto mlan0
iface lo inet loopback
iface mlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
The "auto mlan0" line is crucial here because it's what starts the wpa_supplicant daemon automatically at startup. Just like Doug's fix, we still set manual configuration to our mlan0 but instead now just point it to the wpa_supplicant.conf configuration. And the final important bit is that we want our internet to automatically acquire the dhcp from the router, so that's what the last line is doing.
We then go into /etc/wpa_supplicant/ to edit the configuration file.
sudo gedit /etc/wpa_supplicant/wpa_supplicant.conf
This configuration file is a big deal because it will contain network passwords. We want to edit this file initially, and then just relegate any future edits to strictly the GUI. To do that, add the following into the file.
update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
Now in the terminal, run the following code to first add your user to the 'netdev' group and then lock this config file down.
sudo adduser YOUR_USER_NAME netdev
chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
The next order of business is to prevent NetworkManager from running on startup.
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
Finally, we want WPA_gui to start on boot. Since this app doesn't have a service, we just do this from Ubuntu's own Startup Applications tool. Just search for it in Dash Home, click 'Add', write 'wpa_gui -t' into the command section and call it WPA GUI (or anything you want). The -t option is important because it starts wpa_gui in the tray. Save and restart.
Start the gui tool through the icon. mlan0 should be visible under the Adapter list now. Click on 'Scan', select your network of choice, enter your password and watch it connect automatically. Once you're done changing settings, go to File->Save Configuration to save everything. Your Surface Pro will connect to your WiFi automatically from now on.
Thanks go out to XRunHProf's excellent post on configuring WPA on Debian for this. http://xrunhprof.wordpress.com/2009/09/19/setup-wpa_gui-and-roaming-on-debian/
Solution 2:
I was able to get the driver working with the new firmware that chili555 provided, but had to disable NetworkManager to do it. I entered uap0 and mlan0 in the /etc/network/interfaces file to disable NetworkManager from managing them:
iface mlan0 inet manual
iface uap0 inet manual
Then I restarted, and turned off the network manager service:
service network-manager stop
Then I created an /etc/wpa_supplicant.conf file:
ctrl_interface_group=0
ctrl_interface=/var/run/wpa_supplicant
network={
scan_ssid=1
ssid="mySid"
key_mgmt=WPA-PSK
psk="passwordGoesWhere?"
}
I ran wpa_supplicant in command line with debug mode to get things working:
/sbin/wpa_supplicant -dd -imlan0 -c/etc/wpa_supplicant.conf -Dwext,nl80211
And once that connected, I ran dhcp to get my IP address:
/sbin/dhclient mlan0
It's not automated, and I'm sure there are other ways to do this better, but it confirmed that my network card works and connects.
Solution 3:
I believe this is attached to a USB bus on the motherboard. Please run:
lsusb
Do you have either 1286:2043 or 1286:2044? If so, it uses the driver mwifiex_usb already in the kernel. However, according to modinfo, it requires firmware not currently included in the linux-firmware package:
$ 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>
The firmware package is included in the Raring (13.04) linux-firmware package which I've extracted. You can get it here: https://dl.dropbox.com/u/58267392/mrvl.zip
Drag and drop the package to your desktop. Right-click it and select 'Extract Here.' Now, in a terminal, do:
cd Desktop
sudo cp mrvl/* /lib/firmware/mrvl
Now we unload the driver and reload it so it sees the shiny new firmware:
sudo modprobe -r mwifiex_usb && sudo modprobe mwifiex_usb
Your wireless should now be working.