Piero V.

Edimax EW-7811UTC e Linux

Nel precedente articolo avevo descritto un po’ la mia prima esperienza con il wireless a 5GHz su Linux.

Avevo deciso di chiedere il reso per la chiavetta che avevo comprato, ed eventualmente aspettare fino a quando non avrei trovato un prodotto migliore con prezzo inferiore alla soglia psicologica dei 20€, dovuta al fatto che non mi è così indispensabile il wireless AC.

Tuttavia ho fatto lo stesso delle ricerche e sul forum della Raspberry Pi avevo trovato che la Edimax EW-7811UTC è supportata molto bene, e consente anche la creazione di Access Point. Così, visto che costava 20,09€ su Amazon, e che avevo avuto il rimborso totale di quella vecchia, ho deciso di comprarla.

Questa mattina è arrivata e ho subito proceduto a fare alcune prove con il mio computer.

La chiavetta è basata, secondo WikiDevi, sul chip Realtek RTL8811AU. Sebbene ci siano dei driver per Linux completamente Open Source e non richiedono neppure un firmware binario, il tree ufficiale non li include.

La confezione, che peraltro si presenta abbastanza bene, contiene un mini CD con i driver per Windows, Mac e Linux, tuttavia, come nel caso della Proster basata sul chip MediaTek, i driver del produttore non sono fatti benissimo e probabilmente non compilerebbero con la mia versione di kernel Linux. Infatti sono stati rilasciati alcuni anni fa e il kernel è un progetto molto dinamico, che non può mantenere le API interne stabili nel tempo. In ogni caso bisogna dire che Edimax si è impegnata per noi utenti Linux: seppure con qualche imprecisione, nel manuale di istruzioni si possono trovare i passi che avremmo dovuto seguire nel caso avessimo usato i loro driver, con tanto di screenshot presi da Ubuntu 12.04.

Fortunatamente una terza opzione ci arriva da alcuni utenti di Git Hub, che mantengono dei repository con i driver originali aggiornati e migliorati. La versione da me usata è quella che attualmente è seconda per numero di stelle: quella di Diederik de Haas. In particolare serve il branch driver-4.3.22-beta, poiché include una patch che rende il driver consapevole di tutte le varie specifiche di 802.11AC supportate dal chip, omesse invece dal driver originale. Questa patch è necessaria affinché hostapd possa creare un access point che goda della velocità massima, ed è il motivo per cui non ho usato i driver di Ole Petter Bang, nonostante siano quelli con più stelle su Git Hub.

La compilazione è abbastanza semplice. Richiede git (o che scarichiate lo zip da Git Hub), i tool di sviluppo C (build-essential su Debian e derivate) e gli header del vostro Kernel Linux. Da utente bisogna dare questi comandi:

git clone https://github.com/diederikdehaas/rtl8812AU.git
cd rtl8812AU
git checkout driver-4.3.22-beta
make

Dopodiché vanno installati e azionati da root:

make install
modprobe 8812au
# Oppure, per eseguirli senza installarli
insmod .../rtl8812AU/8812au.ko

A questo punto, senza neanche bisogno di riavviare, si può cominciare a usare la chiavetta.

Per prima cosa ho collegato come stazione il mio PC al Nexus 9 e ho eseguito iPerf. I risultati sono stati notevoli: a 1m di distanza sono riuscito a ottenere un massimo di 200Mbps di throughput, in generale i risultati erano sull’ordine dei 180Mbps-190Mbps, quindi, con condizioni di test molto simili, questa chiavetta risulta superiore alla MediaTek.

Ho poi provato a fare un access point: è necessario il software hostapd, contenuto nel pacchetto omonimo, nel caso di Debian. Seguendo questa guida scritta per una chiavetta simile alla mia e questa per atheros dal wiki ufficiale di Linux Wireless, ho creato un <code>hostapd.conf</code> per ottenere il massimo dalla EW-7811UTC.

Gli unici cambiamenti necessari al file sono il nome della rete, la password ed eventualmente l’aggiunta dell’AP ad un bridge con la rete cablata.

Per altri modelli di chip Realtek era necessario scaricare un hostapd patchato, invece nel caso dell’RTL8812A c’è piena compatibilità con le API nl80211 di Linux.

Per quanto riguarda i test, sia con il mio Oneplus One, che con il Nexus 9 sono riuscito a connettermi a 200Mbps (contro i 433Mbps teorici) e a ottenere un throughput sull’ordine dei 140Mbps a 1m di distanza, misurato sempre con iPerf.

Ho provato poi a spostarmi in giro per la casa. A 2-3m riuscivo ad ottenere ancora velocità maggiori di 100Mbps, però più mi allontanavo, peggiori erano le prestazioni. Il 5GHz perde di potenza molto più velocemente del 2,4GHz, e il fatto che la chiavetta abbia solo l’antenna nella PCB non aiuta la copertura.

Penso che la velocità di collegamento sia ridotta per il fatto che il bus della scheda rimane USB 2.0, comunque le prestazioni ottenute sono più che adeguate alle mie necessità.

Ho riscontrato però un problema: la latenza. Anche da pochi centimetri, salvo in pochi casi, è più elevata di 10ms, ma non riesco proprio a capacitarmi del motivo.

La destinazione della scheda rimane la Rasperry Pi, solo che adesso non la ho a disposizione per fare le prove, però appena possibile ne farò alcune e magari aggiornerò l’articolo.