DVK-60-SIPT on Ubuntu 18.04 PC

This tutorial shows how to get the Laird DVK-60-SIPT working on a PC with Ubuntu 18.04.

Required

  • Linux PC running Ubuntu 18.04 using a kernel between 3.2 to 5.4
  • DVK-60-SIPT

This tutorial uses Sterling 60 Release 8.6.0.12 which supports Linux kernels 3.2 to 5.4. As new releases are available new kernels will be supported. To understand which kernel is supported by the Sterling 60 Release check the release notes on the Laird GitHub.

Setup

The setup for the DVK will use the USB/USB mode meaning the WiFi will interface with USB and Bluetooth will interface with USB. The DVK allows for other interface modes but this tutorial only covers USB/USB.

  • Hardware

    • Set switches (SW7, SW6, SW5) for WLAN and BT to use USB/USB mode DVK Mode Switches

    • Set SW1 to 5V, connect 12V DC to the barrel connector, and USB cable from PC to connection USB1 USB to PC, 12V DC, and 5V switch

  • Software

    • Update system and install tools:

      # ensure system is up to date
      sudo apt update
      sudo apt upgrade
      
      # install software tools needed
      sudo apt install make bison flex
      
    • Note after upgrading the system it’s good practice to reboot and then ensure the kernel didn’t get upgraded past what is supported by the Sterling 60 Release.

Install

# Download backports
wget https://github.com/LairdCP/Sterling-60-Release-Packages/releases/download/LRD-REL-8.6.0.12/backports-laird-8.6.0.12.tar.bz2

# Download firmware (USB/USB specific)
wget https://github.com/LairdCP/Sterling-60-Release-Packages/releases/download/LRD-REL-8.6.0.12/laird-sterling60-firmware-usb-usb-8.6.0.12.tar.bz2

# Extract the firmware 
sudo tar xvf laird-sterling60-firmware-usb-usb-8.6.0.12.tar.bz2 -C /

# Extract backports
tar xvf backports-laird-8.6.0.12.tar.bz2

cd laird-backport-8.6.0.12

# Set the config to use Sterling60
make defconfig-sterling60

# Compile the modules
make -j4

# Install modules
sudo make install

Reboot

Check dmesg for backports and firmware loading

# The usb port will vary depending on PC and USB port used

$ dmesg | grep -e 'ieee80211 ' -e 'usb 1-2' -e 'backport'
[    1.712218] usb 1-2: new high-speed USB device number 2 using xhci_hcd
[    1.866891] usb 1-2: New USB device found, idVendor=1286, idProduct=2052, bcdDevice=40.00
[    1.866894] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    1.866895] usb 1-2: Product: Marvell Wireless Device
[    1.866896] usb 1-2: Manufacturer: Marvell
[    1.866897] usb 1-2: SerialNumber: 0000000000000000
[    2.946340] Loading modules backported from Summit Linux version LRD-REL-8.6.0.12-0-gd89840b36573
[    2.946340] Backport generated by backports.git v8.6.0.12
[    3.075882] ieee80211 phy0: priv->pcmd_buf = 00000000d778d804
[    3.078388] ieee80211 phy0: lrdmwl: found firmware image <lrdmwl/88W8997_usb.bin>
[    3.078482] ieee80211 phy0: start to download FW...
[    3.358464] ieee80211 phy0: info: FW download over, size 378808 bytes, ret 0
[    3.358466] ieee80211 phy0: Firmware download complete, port will reset with new interface...
[    4.701357] usb 1-2: USB disconnect, device number 2
[    5.016097] usb 1-2: new high-speed USB device number 4 using xhci_hcd
[    5.174286] usb 1-2: New USB device found, idVendor=1286, idProduct=204e, bcdDevice=32.01
[    5.174288] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.174289] usb 1-2: Product: Bluetooth and Wireless LAN Composite Device
[    5.174289] usb 1-2: Manufacturer: Marvell
[    5.174290] usb 1-2: SerialNumber: 0000000000000000
[    5.180423] ieee80211 phy1: priv->pcmd_buf = 000000001db83880
[    5.180562] ieee80211 phy1: lrdmwl: found firmware image <lrdmwl/88W8997_usb.bin>
[    5.180563] ieee80211 phy1: Skipping FW download, continuing with initialization...
[    5.192178] ieee80211 phy1: OTP data len = 0
[    5.194165] ieee80211 phy1: Adjusting combo 0's number of supported interfaces to 2
[    5.194205] ieee80211 phy1: mwl_reg_notifier set=0 core 00
[    5.194629] ieee80211 phy1: Sending regulatory hint for US
[    5.194631] ieee80211 phy1: Radio Type ST60 (0x0)
[    5.194632] ieee80211 phy1: Num mac 2 : OTP Version (1)
[    5.194634] ieee80211 phy1: Firmware version: 5.6.41.5
[    5.194634] ieee80211 phy1: Firmware OTP region: 10, country: US
[    5.194635] ieee80211 phy1: Deep Sleep is disabled
[    5.194636] ieee80211 phy1: 2G enabled, 5G enabled
[    5.194637] ieee80211 phy1: 2 TX antennas, 2 RX antennas. (00000003)/(00000003)
[    5.194782] usb 1-2: Direct firmware load for lrdmwl/regpwr.db failed with error -2
[    5.194784] ieee80211 phy1: /lib/firmware/lrdmwl/regpwr.db not found.
[    5.194785] ieee80211 phy1: Sending regulatory hint for US
[    5.194793] ieee80211 phy1: mwl_reg_notifier set=1 driver US
[    5.194802] ieee80211 phy1: mwl_reg_notifier set=1 driver US
[    5.201755] usb 1-2 wlxc0ee40503358: renamed from wlan0
[    5.276369] ieee80211 phy1: WMM Turbo=1
[    8.280411] ieee80211 phy1: mwl_reg_notifier set=1 country element US

Check WiFi

$ iw dev
phy#1
	Interface wlxc0ee40503358
		ifindex 3
		wdev 0x1
		addr c0:ee:40:50:33:58
		type managed
		txpower 0.00 dBm

Check Bluetooth

$ bluetoothctl
[NEW] Controller C0:EE:40:50:33:5B nuc [default]
Agent registered
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# scan on
Discovery started
[CHG] Controller C0:EE:40:50:33:5B Discovering: yes
[NEW] Device 47:FE:1A:4A:AE:D3 47-FE-1A-4A-AE-D3
[NEW] Device 84:2A:FD:29:6F:FB 84-2A-FD-29-6F-FB
[NEW] Device 49:12:50:98:64:30 49-12-50-98-64-30
[NEW] Device 6A:20:51:3E:E6:37 6A-20-51-3E-E6-37
[NEW] Device 7E:97:4C:AC:BA:8A 7E-97-4C-AC-BA-8A
[NEW] Device 7F:2C:8C:7D:A2:64 7F-2C-8C-7D-A2-64

Kernel Lockdown

If the kernel module fails to load and the following shows up in dmesg then the kernel is in lockdown and easiest way around this is to disable secure boot in the PC BIOS.

[  839.299271] usb 1-4: new high-speed USB device number 15 using xhci_hcd
[  839.448101] usb 1-4: New USB device found, idVendor=1286, idProduct=2052, bcdDevice=40.00
[  839.448108] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  839.448113] usb 1-4: Product: Marvell Wireless Device
[  839.448116] usb 1-4: Manufacturer: Marvell
[  839.448120] usb 1-4: SerialNumber: 0000000000000000
[  839.460273] Lockdown: systemd-udevd: unsigned module loading is restricted; see man kernel_lockdown.7

For more info see: https://man7.org/linux/man-pages/man7/kernel_lockdown.7.html https://wiki.debian.org/SecureBoot#Secure_Boot_limitations

References