2012-09-19 7 views
6

È possibile scrivere un'app in Android utilizzando l'API Wi-Fi che agirà come un hotspot (in modo da garantire l'accesso alla rete ai client wifi) consentendo al dispositivo wifi locale di connettersi a un'altra rete Wi-Fi?Hotspot multiplexato in Android

Quello che ho testato disabilita la connessione WiFi locale per creare un hotspot.

risposta

9

Inserisco qui dopo alcuni mesi, quindi le persone che vorrebbero implementarlo su un dispositivo Android potrebbero essere aiutate.

C'è un modo per avere un chip wireless funzionante in modalità ibrida, sia con modalità stazione (STA) e la modalità punto di accesso (AP) abilitata.

Per fare ciò, ho sostituito il driver wireless del mio chip con un driver wireless multi-role. Fortunatamente, il mio chip supportava questa modalità, tuttavia non è il caso di tutti i chip wireless. Il mio chip è un chip basato su TI (wl1271), il multi ruolo era supportato, sebbene non fosse disponibile con il driver precedente.

Una volta ho ottenuto questo nuovo driver, ho dovuto ricompilare lungo con il mio kernel in modo da avere la .ko del driver wireless ed i relativi mac80211 e cfg80211 moduli (che fornisce le API necessarie per il nuovo driver) generati. L'ultimo passaggio è stato l'aggiornamento di wpa_supplicant e hostapd con una versione personalizzata con patch fornita da TI.

Anche in questo caso, per le persone interessate in wl1271solo qui sono i driver/strumenti che ho usato corrispondente e hanno riferito di lavorare su Android 4.0.4 ICS:

https://github.com/TI-OpenLink/hostap/tree/ol_R5.SP3.01

https://github.com/TI-OpenLink/iw/tree/ol_R5.SP3.01

https://github.com/TI-OpenLink/ti-utils/tree/ol_R5.SP3.01

https://github.com/TI-OpenLink/wl12xx_target_scripts/tree/ol_R5.SP3.01/sta

https://github.com/TI-OpenLink/compat/tree/ol_R5.SP3.01/

https://github.com/TI-OpenLink/compat-wireless/tree/ol_R5.SP3.01/

Se c'è un pilota a più ruolo per il tuo chip wireless, potrebbe essere la pena di scoprire quale versione o patch di wpa_supplicant e hostapd si deve utilizzare, e compilarli/provarli.

Alla fine del processo, ho avuto accesso a due interfacce di rete (wlan0 e wlan1) e ho potuto avviare wpa_supplicant su wlan0 e hostapd su wlan1.

1

Quello che stai descrivendo si chiama WDS (Wireless Distribution System). Penso che questa funzionalità non sia implementata nell'API wifi Android. Viene utilizzato negli AP wireless per abilitare un collegamento wireless a monte.

+0

Si riferisce effettivamente a ciò che volevo. Tuttavia, WDS sembra avvolgere molti concetti e protocolli. Volevo solo alcuni semplici consigli su come farlo senza avere un sistema di condivisione AP completo. Alcuni consigli su come farlo con l'API di Android (sembra non implementata) o elettronicamente (magari usando un secondo dispositivo wifi) -> e come farlo in Android senza cambiare il kernel :). –

+0

@HQarroum La mia comprensione (e non sono un esperto su questo) è che avresti bisogno almeno di un AP compatibile con WDS e di un'implementazione compatibile di WDS in Android. Penso che questo non sia attualmente implementato in Android, e quindi richiederebbe una codifica di livello abbastanza basso ... – jhonkola

+0

Grazie mille! Investigherò su questo più profondamente :) –