Piero V.

DSL-504T e DWL-G700AP

Recentemente ho avuto la possibilità di mettere le mani su questi vecchi dispositivi: un router ADSL (DSL-504T) e un Access Point 802.11G (DWL-G700AP).

Erano da mia sorella, ma visto che loro sono passati alla fibra Fastweb l’HAG ha rimpiazzato entrambi i dispositivi che sarebbero stati destinati alla discarica. Beh, grazie mille Pan 😊

DWL-G700AP

Questo access point è basato su un chip Realtek RTL8186 e ha risorse abbastanza limitate, soprattutto in termini di flash: solo 2MB.

Il firmware di default fa un po’ schifo, è un vecchio firmware D-Link con pochissime opzioni. Non ha neanche la client mode, anche se impostandolo in bridge è possibile usarlo come client.

Su internet ho trovato due firmware: Wive e il suo fork un po’ più aggiornato Wive-ng.

Io ho usato l’ultima versione dell’ultimo, la 0.6.1 preX basata su Linux 2.4.18.5.

Seguendo le indicazioni di questa pagina ho flashato Wive-ng passando prima per l’ultimo firmware ufficiale (avevo problemi con il flash altrimenti). … [Leggi il resto]

Panda3D e Broadcast

Tempo fa avevo cercato di creare la parte di networking per un videogioco che utilizza il motore Panda3D.

I giochi hanno bisogno di aggiornare velocissimamente le posizioni degli altri giocatori e tutti gli altri dati, perciò si usa UDP, un protocollo che è molto più veloce del TCP perché non fa controlli per vedere se sono arrivati i dati (e perciò è anche meno affidabile, ma non importa per un videogioco).

Una delle caratteristiche più belle di UDP è anche quella di poter fare il “broadcasting” di rete, ovvero mandare a tutti i client di una rete un pacchetto in una certa porta. Questa caratteristica può essere usata per esempio per fare la lista dei server a cui connettersi.

Panda3D teoricamente offre una funzione chiamata set_broadcast nella classe NetAddress, però non funziona, né in Python, né in C++. O almeno, non da sola.

In Python alla fine avevo lasciato perdere, però in C++ invece volevo sistemarla. Non riuscivo proprio a capire come fare, così ho cercato e ho visto che in generale bisogna dire al sistema operativo che la socket deve poter eseguire il broadcast.

Il set_broadcast sembra poterlo fare, ma se in realtà guardiamo il codice è solo una scorciatoia per inserire come indirizzo IP 255.255.255.255 necessario per fare appunto il broadcast ma non sufficiente.

Spulciando un po’ il codice ho trovato che serve abilitare il broadcast alla socket. Ed ecco come fare.

Quando creiamo la socket dal manager, otteniamo un puntatore alla connessione. Un metodo di quest’istanza è il get_socket, che normalmente restituirebbe un’istanza di Socket_IP, tuttavia questa classe non ha il metodo che ci serve. Allora dobbiamo “trasformarla” in una Socket_UDP, tramite il casting. Allora in quella possiamo chiamare il SetToBroadCast() e per magia il tutto funzionerà.

Tradotto in codice 😉 :

	Socket_UDP * sock = (Socket_UDP *)connection->get_socket();
	sock->SetToBroadCast();

connection è la connessione creata tramite il QueuedConnectionManager.

Una volta aggiunto questo come per magia il tutto funzionerà 😊

OpenWRT e Client Wireless Irraggiungibili

Dopo aver cambiato firmware a OpenWRT era successo che non riuscivo più a far contattare i client wireless tra di loro oppure neanche da client LAN, ma non avevo pensato che la colpa fosse di OpenWRT.

La soluzione è stata semplicissima.

Era un errore nel bridge.

Andate sull’Amministrazione di OpenWRT, selezionate LAN e mettete nel campo interfaccia --personalizzato--, dopodiché nel campo che verrà fuori inserite eth0 wlan0 e dovrebbe andare.

Benchmark Fonera con OpenWRT

Qualche tempo fa ho scritto una guida su come installare OpenWRT sulla Fonera.

Bene, oggi ho fatto qualche Benchmark.

Visto che il segnale oscillava sempre tra il 54% e l’88%, ho flashato di nuovo la Fonera con OpenWRT 8.90.

Ho lasciato la configurazione di default tranne che ho cambiato nome della rete, ho forzato di metterla sul canale 1 e l’ho protetta con WPA2.

Come hardware ho usato una Fonera precisamente modello 2100 con la sua antenna originale, mentre sul computer ho usato una scheda Tp-link WN-651G con i driver ath5k (perciò senza le tecnologie proprietarie di Atheros).

La prova è stata effettuata tra due computer con sistema operativo Debian GNU Linux (Sid e Testing), Kernel 2.6.32-5, uno connesso alla wireless e uno connesso alla rete cablata.

Come condizioni ambientali con quello della rete cablata (computer #2) non c’è nessun problema. Al massimo c’è da dire che è una normale rete ethernet 100Mbps e che come cavi rientriamo perfettamente nello standard (un cat 5 da 2 metri per il computer e un cat 5 da 20 metri per la Fonera). La rete passa per uno switch D-Link. … [Leggi il resto]

OpenWRT su Fonera

Ho installato openwrt sulla fonera perché ero curioso e dd-wrt da quando avevoaggiornato alla build consigliata (peraltro neanche stabile), non mi sono trovato bene e così visto che in questi giorni a usare la wireless a casa sono solo io, ne ho aprofittato per passare a OpenWRT.

L’operazione si può fare nel solito modo: solo che o manualmente o ho scoperto ap51 (scaricate il file ap51-flash-fonera-1.0-42 se usate linux o ap51-flash-fonera-gui-1.0-42.exe se usate windows).

Poi andate sull’area download di OpenWrt Kamikaze 8.09.2 per dispositivi Atheros (l’ultima versione a oggi) e scaricate i file openwrt-atheros-root.jffs2-64k e openwrt-atheros-vmlinux.lzma.

Su windows potete usare una comoda gui (che non ho provato però), su linux dovete fare il login come root e eseguire lo script download con come parametro l’interfaccia dove deve cercare la fonera oppure any per cercarla in ogni interfaccia, il percorso al file openwrt-atheros-root.jffs2-64k e quello del file openwrt-atheros-vmlinux.lzma. … [Leggi il resto]