Solution: Activating WLAN WiFi on openSUSE Leap 42.2 / Raspberry Pi-3 aarch64

If you have installed one of the openSUSE Tumbleweed aarch64 (64-bit architecture) versions on a Raspberry Pi-3, you may have found that the WiFi service doesn’t work. This note may help you activate it, or at least suggest some settings to review. This procedure is known to work for Leap 42.2 JeOS and XFCE distributions dated 2017.02.02, kernel 4.4.46-11. Per Alex Graf ( https://lists.opensuse.org/opensuse-arm/2017-02/msg00011.html ), the required drivers have not been integrated into 4.9, so this will not work with openSUSE Tumbleweed.

openSUSE on the RPi is relatively new, and some components appear to not install correctly or at least not install consistently across Leap and Tumbleweed distributions. In particular, several people found that the WiFi service, which uses the integral Broadcom WiFi of the RPi-3, doesn’t work upon initial install.

Michal Kubecek outlined a solution for Leap 42.2 on the opensuse-arm mailing list in November, 2016: https://lists.opensuse.org/opensuse-arm/2016-11/msg00018.html . More recent releases of Leap 42.2 appear to have changed the packaging of the code in this area, and a modified version of Kubecek’s approach is required. Credit for the solution here goes to Michal Kubecek and Malcolm Lewis (apologies if I’ve missed anyone else).

The following process works for Leap 42.2, for the release dated 2007.02.02, specifically the file openSUSE-Leap42.2-ARM-XFCE-raspberrypi3.aarch64-2017.02.02-Build1.10.raw.xz and its JeOS alternative, available here: http://download.opensuse.org/ports/aarch64/distribution/leap/42.2/appliances/. This procedure may not be needed at all for future releases – the packaging may have been changed so that WiFi works upon initial install. And again, it will not work for Tumbleweed 4.9 kernels, at least at the time this is being written (17 Feb 2017).

But if, upon initial install, the WiFi system does not appear to load (YaST, ifconfig, iwconfig don’t show the wlan0 device and you can’t activate the device to connect to your SSID), then this procedure may solve your problem and allow you to make the connection. If WiFi doesn’t work and this procedure doesn’t activate it, the procedure below may at least suggest some things to look at to see if you can resolve it yourself.

The following starts from scratch to install openSUSE on a microSD card then get WiFi active. Follow the procedure outlined at the openSUSE download site to download the distribution image onto another computer and copy it to a microSD. The WiFi activation procedure is based upon Michael Kubecek’s approach, modified and verified 2017-02-16 on Leap 42.2:

  1. Requirements: a Linux/Mac computer with an Internet connection; if that computer does not have a microSD slot, you’ll need a USB adapter that accepts a microSD card, so that the computer can access a microSD disk; a microSD disk with a capacity of at least 8GB (at least 16GB preferable); Raspberry Pi-3 (will not work for models 0, 1, or 2) with keyboard, mouse, and display; WiFi access point to which you have access (know the SSID and password). If you’re using Windows, you’ll need to find tools to both decompress a .xz image file and to do an image copy (“dd”) to a raw device.
  2. On a computer with an Internet connection, go to the openSUSE Raspberry Pi download site (https://en.opensuse.org/HCL:Raspberry_Pi3), pick a distribution, and download it to your computer. (Notice the “general download” link in the text below the menu bar for each distribution: you may want to review those and pick one from that list. You’ll want the .raw.xz file to download.) Unless you’re highly experienced and have special requirements, you should probably choose one of the Leap distributions since they’re more stable and have been more thoroughly tested. Follow the instructions on that site to copy that image to your microSD drive. When that has finished, you now have a bootable openSUSE disk for your RPi-3.
  3. Remove the microSD drive from the Linux/Mac computer and insert it into the microSD slot of the RPi; connect your RPi into the network with the Ethernet jack; power up the RPi. It will expand the file system to use all of the available drive, then reboot, and present a login prompt. Login as “root”, password “linux” Depending upon your chosen distribution, you’ll be left in a terminal window or brought to a GUI screen (where you may have to log in again).
  4. Ensure that you have the correct locale and time – these are critical. Click on the sequence menubar/openSUSE/settings/YaST/Date and Time. Set your region and time zone and exit. Verify that your settings are right (“date” command in a terminal screen). If not, verify that your Ethernet network connection is working and that the NTP service (YaST application again) is working and connects correctly to an NTP server.
  5. Update your software if needed: open a terminal screen and type “sudo zypper up”. If you do a “sudo zypper dup”, to update the distribution, make sure you append “–no-allow-vendor-change” to that command line.
  6. Unless you’re facile with vi, you may want to “zypper in nano” or “zypper in emacs” or … editor of your choice at this point to make subsequent editing easier.
  7. Open a terminal screen. Install the bcm43xx-firmware (WiFi device) package: “sudo zypper in bcm43xx-firmware” . This step may not be necessary – that package may already be installed – but this command will ensure that it is.
  8. Run “/usr/sbin/install-brcmfmac” . In earlier releases, this gave a warning message about a null character in a string in the shell script. If you get that message, it may still work. But best to work in a release that executes with no warning messages in this step.
  9. Edit the file /etc/dracut.conf.d/raspberrypi_modules.conf : delete “sdhci_iproc” from first line (add_drivers directive); then, in the same file, uncomment last line (omit_drivers). When you’re finished, the file should look like this [INDENT=2]add_drivers+=" bcm2835-sdhost bcm2835_dma mmc_block "

Workaround for Wifi

omit_drivers+=" sdhci-iproc"
[/INDENT]

  1. Run " sudo mkinitrd" . Earlier versions of this procedure used “sudo mkinitrd -f”: omit that “-f” now.
  2. Reboot
  3. When the system comes back up, log in, and type “sudo ifconfig”. If you do not see “wlan0” listed as a device, the procedure has not succeeded at this point. Try “mkinitrd --verbose” and examine the processing log to look for obvious errors (typos in the .conf file you edited) or missing modules that should be added to that .conf file.
  4. When the wlan0 device has instantiated at boot time, you’re now ready to connect to your WiFi access point. Run YaST. Run YaST from the command line if using a window manager, click menu bar/openSUSE/settings/Yast and authenticate as root). Select “Network Settings”, highlight BCM43430 in the device box, and click edit.
  5. Fill in the blanks and select the options that apply to your access point: whether to use DHCP or assign an IP/gateway/dns (may be safer to default to DHCP when first trying to get your Pi connected), etc. Click on “scan network” to create a list of APs near your location, but you’ll have to go back and click on the drop down list to see what the system found. Pay particular attention to getting the encryption method (WEP/WAP) used by your AP correct and getting your AP password correct. Navigate through the “Next” button at the lower right corner. Finally, the Network Settings app will write the configuration file and attempt to connect to the network.
  6. If you’re successful, typing “ifconfig” or “iwconfig” in a terminal window will show an IP address for the wlan0 device. If not, verify that you still see the wlan0 device (even if it has no IP address), then go back through the YaST/Network Settings screens to verify that your information is correct. Again, check especially for using DHCP, having the correct encryption, and having the correct password.
Once complete, reboot (and this might be a good idea if you haven't been able to make a connection after several tries -- resets clear the debris).

Good luck!

Hi
Moving to our HowTo forum, temporarily closed for the move.

Hi
Moved and reopened