# UNO Q — Wireless (Wi-Fi & Bluetooth) The **WCBN3536A** module gives dual-band **Wi-Fi 5 (2.4/5 GHz)** and **Bluetooth 5.1**, with onboard antennas. The radio is owned by the **Linux/MPU side**, so networking is configured in Debian (via `nmcli` or the desktop). The MCU reaches the network **through the Bridge**, not directly. ## Wi-Fi from Linux (the normal way) Use the network icon in the top-right of the desktop, or NetworkManager on the CLI (great over SSH): ```bash sudo nmcli d wifi connect password # connect sudo nmcli d disconnect wlan0 # disconnect sudo nmcli connection delete # forget a network nmcli d wifi list # scan (handy) ``` ## WPA2-Enterprise (university / corporate, e.g. eduroam) NetworkManager handles 802.1X. **eduroam (PEAP/MSCHAPv2):** ```bash nmcli con add \ type wifi \ connection.id Eduroam \ wifi.ssid eduroam \ wifi.mode infrastructure \ wifi-sec.key-mgmt wpa-eap \ 802-1x.eap peap \ 802-1x.phase2-auth mschapv2 \ 802-1x.identity ``` **TTLS + PAP variant:** ```bash nmcli con add \ type wifi \ connection.id ExampleNetwork \ wifi.ssid \ wifi.mode infrastructure \ wifi-sec.key-mgmt wpa-eap \ 802-1x.eap ttls \ 802-1x.phase2-auth pap \ 802-1x.domain-suffix-match example.com \ 802-1x.identity ``` Bring a connection up and be prompted for the password interactively: ```bash nmcli --ask con up ``` This matters for workshops on campus/enterprise networks where a plain SSID+password won't work. ## Reaching the network from the MCU (via the Bridge) The sketch doesn't have its own IP stack for Wi-Fi; it borrows the Linux side's connectivity through the Bridge. App Lab provides bridged network client classes, e.g. a TCP client: ```cpp BridgeTCPClient<> client(Bridge); void setup() { if (!Bridge.begin()) { while (true) {} } Serial.begin(9600); } void loop() { if (client.connect("time.nist.gov", 13) < 0) { // Daytime protocol Serial.println("Connection failed!"); delay(5000); return; } String line; while (client.connected() || client.available()) { if (client.available()) { char c = client.read(); if (c == '\n') break; if (c != '\r') line += c; } } Serial.print("Server says: "); Serial.println(line); client.stop(); delay(10000); } ``` Takeaway: get the board online **on the Linux side first**, then the MCU can make network calls over the Bridge. ## Bluetooth (Linux side) Manage from the top-right Bluetooth icon in SBC mode, or via CLI: ```bash bluetoothctl power on bluetoothctl power off ``` Inside the `bluetoothctl` prompt: ``` power on scan on # discover devices scan off connect # pair/connect ``` Use it to link phones, computers, or BT sensors to the board.