intel-ax-wifi-scan-connect-6.ino

BIOSSTAR BIWCL-PAT : SBC industrielle 3,5" Intel Wildcat Lake · Fichier : intel-ax-wifi-scan-connect-6.ino · Langage : python · Usage : Scan et connexion Wi-Fi via le module M.2 E-Key intégré.

Script Python pilotant Nmcli et iw pour scanner et se connecter aux réseaux Wi-Fi via l'interface réseau intégrée.

Matériel : Module Wi-Fi (type Intel AX210/AX211) inséré dans le slot M.2 E-Key de la BIWCL-PAT, antennes connectées. Prérequis : Ubuntu 24.04 avec NetworkManager et iw-tools installés (sudo apt install network-manager iw). Ce script ne nécessite pas de compilation. Il liste d'abord les SSID visibles via nmcli, puis se connecte à un réseau fourni en arguments. Adapté pour l'automatisation d'initialisation réseau en mode bord (edge).

intel-ax-wifi-scan-connect-6.ino

#!/usr/bin/env python3
import subprocess
import sys
import time

def run_cmd(cmd):
    try:
        result = subprocess.run(cmd, check=True, capture_output=True, text=True)
        return result.stdout
    except subprocess.CalledProcessError as e:
        print(f"Erreur commande {cmd}: {e.stderr}")
        sys.exit(1)

def scan_networks():
    print("Scan des réseaux Wi-Fi (biwcl e-key module)...\n")
    # iw dev <iface> scan
    # Remplacer 'wlan0' par le nom de l'interface réel (ip link show)
    output = run_cmd(["iw", "dev", "wlan0", "scan"])
    
    networks = []
    current_ssid = None
    for line in output.split('\n'):
        if 'SSID:' in line:
            current_ssid = line.split('SSID:')[1].strip()
        elif 'signal:' in line and current_ssid:
            # Format: signal: -50.00 dBm
            # Simple parsing to avoid external libs
            pass
    
    # Alternative plus robuste pour lister les SSID visibles
    print("Réseaux détectés (nom seulement) :")
    run_cmd(["nmcli", "device", "wifi", "list"])

def connect_to_wifi(ssid, password):
    print(f"Connexion à {ssid}...")
    # Utilisation de NetworkManager CLI
    cmd = ["nmcli", "device", "wifi", "connect", ssid, "password", password]
    run_cmd(cmd)
    time.sleep(2)
    print("Statut de la connexion :")
    run_cmd(["nmcli", "connection", "show", "active"])

if __name__ == "__main__":
    if len(sys.argv) < 2:
        scan_networks()
        print("\nPour se connecter : python wifi_tool.py <SSID> <MotDePasse>")
    else:
        connect_to_wifi(sys.argv[1], sys.argv[2])

← Retour à la fiche