=============================================================== = This is Freifunk Firmware. The one and only purpose of this = = firmware: build citywide intranets by meshing with layer-3 = = OLSR routing. = =============================================================== The different directories contain firmware binaries for uploading to a specific wireless router / wireless access point: _g+gl/ Linksys WRT54G-v1.x|2.0|2.2|3.0|3.1|4.0, WRT54GL-v1.0|1.1 _gs/ Linksys WRT54GS-v1.0, WRT54GS-v1.1 _gs40/ Linksys WRT54GS-v4.0 (WRT54GS-v3.0 unverified) _g3g/ Linksys WRT54G3G (a WRT54G with PCMCIA UMTS card) _allnet/ Allnet ALL0277 (tested: all0277 without ADSL) _moto/ Motorola WR850G (tested: wr850g v1.0, minor issues) _se505/ Siemens SE505 (v1.0|2.0) _trx/ Linksys WAP54G-v1.1|2.0|3.0, WRT54G-v5.0|5.1|6.0, WRT54GS- v5.0|5.1|6.0; Asus WL500, WL500-Deluxe, WL500-Premium; Buffalo WHR-G54S, WHR-HP-G54 && for Freifunk updates _failsafe/ Emergency minimal failsafe files, only telnet 192.168.1.1 _kit/ BIN/TRX Linux generation kits, Micro+WEP versions here These are the variants: openwrt*freifunk-ca: With OLSR/Freifunk Web UI, Catalan Language openwrt*freifunk-de: With OLSR/Freifunk Web UI, German Language openwrt*freifunk-en: With OLSR/Freifunk Web UI, English Language openwrt*freifunk-es: With OLSR/Freifunk Web UI, Spanish Language openwrt*freifunk-fr: With OLSR/Freifunk Web UI, French Language openwrt*freifunk-it: With OLSR/Freifunk Web UI, Italian Language openwrt*freifunk-pt: With OLSR/Freifunk Web UI, Portuguese Language Additional UI Varants are available as TRX and as KIT only *): freifunk-openwrt-kit-*-0xff.tar.gz: Funkfeuer.at UI Variant (de, Vienna) freifunk-openwrt-kit-*-ffgraz.tar.gz: Funkfeuer.at UI Variant (de, Graz) freifunk-openwrt-kit-*-ch.tar.gz: OpenWireless UI Variant (de) freifunk-openwrt-kit-*-hsh.tar.gz: Wlanhsh UI Variant (de, Berlin) freifunk-openwrt-kit-*-jawug.tar.gz: Jawug UI Variant (za, Joburg) freifunk-openwrt-kit-*-ninux.tar.gz: Rome Wireless UI Variant (en, Rome) freifunk-openwrt-kit-*-psf.tar.gz: Paris Sans Fil UI Variant (fr, Paris) freifunk-openwrt-kit-*-wlon.tar.gz: Wireless London UI Variant (en, London) freifunk-openwrt-kit-*-wse.tar.gz: Wlanwse UI Variant (de, Berlin) *) Switch to Freifunk/OpenWRT with a BIN-file, then Web-upload any TRX version. All BIN-file versions are [SpecialHeader]+TRX. For OTA/command line updates, TRX is preferred. Use "firmware-burn /tmp/freifunk*.trx" I use this update method is for over-the-air and on-the-fly updates. No readonly, config is not touched, only installed packages are lost. Fast. Convenient. Tip: The WRT54G-v5,v6 as well as the WRT54GS-v5,v6 devices run VxWorks. You need to replace the VxWorks bootloader by a CFE first. It is easy: - Grab a copy of http://www.bitsum.com/files/vximgtoolgui.zip and run "vximgtoolgui.exe" (Windows) or "wine vximgtoolgui.exe" (Linux) Write out a file vxkill.bin with the MAC adress of your WRT - Grab http://www.bitsum.com/files/vxworks_prep_v03.zip and upload the unzipped binary via Web UI to enter the "Management Console". WRT54gs-v5/v6: http://www.bitsum.com/files/vxworks_prep_gs_v03.zip - In the "Management Console" upload your customized vxkill.bin - Upload a Freifunk TRX file via TFTP as ususal. Start meshing. Ref: http://www.bitsum.com/openwiking/owbase/ow.asp?WRT54G5_CFE Tip: The Asus WL-500 devices cannot be flashed with the original web UI. You need to upload a TRX file via TFTP. For the original WL-500, use some special TFTP commands provided with the "Firmware Restore Tool". Please note: the WL-500 Premium has two! switches on the back. To enter TFTP-mode you need to press the _RESET_ switch. Then simply tftp to 192.168.1.1 (no special tftp version or commands required). And forget the "Firmware Restore Tool" - it does not work on the Premium either. All WL-500 do not start automatically after TFTPing. Wait for 2 minutes, the restart by removing/replug power. The RESET switch cannot be polled by software, so no simple failsafe. In emergency cases, it will be possible to make a "FAILSAFE-only" version with the KIT (exchange ff_reset=failsafe in root/etc/preinit). Recommended packages: --------------------- There are several ipk packages specific for your Freifunk node. Some of them offers Web-UI extensions. Do "ipkg install xxx" on ssh shell. Especially pppoecd*.ipk is OK to upload via Admin/Software: freifunk-recommended-??: Quick install of stats,viz,horst,tcpdump,dnsmasq freifunk-statistics-??: Stats for the public Web UI (several languages) freifunk-gateway-??: For gateway owners: white/blacklists + P2P-block freifunk-pppoecd-??: For DSL lines (can be installed via Web UI upload) freifunk-olsr-viz-??: Javascript based visualisation for public Web UI freifunk-nfsmount-??: Easy mount of NFS server to /mnt (+Admin/NFS) freifunk-sdcard: Drivers and init script for an attached SD card freifunk-dnsmasq: Caching DNS / OLSR-DHCP (Admin/OLSR after install) freifunk-openwrt-compat: Adds removed ifconfig/route/awk/dnsmasq/some_libs horst: OLSR specific kismet-alike. Type "horst" to start. tcpdump: Debugging network setup: "tcpdump -ni eth1 udp" Notes: ------ All BIN/TRX files can be used to upgrade via Freifunk Web-UI. You may flash freifunk and change to your UI variant then with a *.trx file. If you run Linux, it is easy to generate your own BIN/TRX files, e.g. to make a BIN file for another UI variant. Unpack the corresponding *.tar.gz, change to the subdir and enter "./gen-openwrt" for help. For expample: type "./gen-openwrt -o - gs40 > code.bin" for a WRT54GS-v4.0. The KIT depends on libstdc++5, which may not be intalled by default. The SST (Standard Vendor Command Set) flash driver is not tested. AFAIK this flash chip is used only in some Motorola boxes. If unsure, open your BCM_4207-based device first and verify the flash memory type. The WAP54Gv3 device has this chip. Using a kit to bind an Whiterussian kernel to a firmware seems to do the job. For updating running Freifunk nodes OTA (over the air), use scp to upload a trx file, then reflash using ssh shell for rapid deployment: root@pc# scp openwrt-freifunk-1.3-de.trx 10.1.2.3:/tmp (Enter password) root@pc# ssh root@10.1.2.3 (Enter password) root@wrt:~# firmware-burn /tmp/openwrt-freifunk-1.3-de.trx To interconnect two nodes with an ethernet wire, this setup is easy: Connect two nodes via WAN port. Configure both WAN/IP with a narrow netmask using 4 IPs out of the mesh range. Example (10.0.0.0/8 used in mesh): Node1/WAN has 10.111.222.65/255.255.255.252 and Node2/WAN has 10.111.222.66/255.255.255.252. Of course the Wifi IP is not in the 64/65/66/67 range of this mini network segment. Firewall+NAT between the to WAN ports is open then, Firewall on LAN still active. OLSR is used to route automatically through WAN/WAN if this connection has lower packet loss. May be optimized with Admin/OLSR/Filter to exclude the neighbours wifi IP address. Note for "route add default" fans: OLSR fetches the best inet GW in the mesh. A static default route disturbs routing for others. But if you offer an inet GW, the dyngwplain _always_ annouces via HNA if a static defroute is detected. A static default route (metric == 0) is tested with traceroute on a regulary basis. If not functional, the default route is shifted to a background routing table ("ip route ls table dyngw") until the local inet comes up again. Please disable the traceroute test only if you are sure what you are doing. "Black hole" configs (either by config error or by node owners not caring for their config) are quite common and this simple test ensures the mesh stays functional for all of us. Another note for people who have read WEP/WPA offers security: This is not true in a mesh config because every node owner has the same key. Have seen keys as e-bay offering ;-) Security in a mesh (as on the internet) can be done with user-to-user encryption (use VPN softs like openvpn, SSL etc.) and careing for you firewall setup instead. The air is a public resource shared by all users. OpenVPN also helps protecting your own valuable service offernings, such as a sexy cam, a music archive for your friends or an inet gw for a closed group. The Admin/Wifi/BSSID setting overcomes the SSID split experienced in all Ad-Hoc networks using mixed Wifi Hard/Soft combis. Two Freifunk nodes with the same BSSID will always communicate with each other and cannot be disturbed by others too easily. I recommend using Ad-Hoc on pointopoint links also, because there is no single point of failure and it is possible to scan for the other station (not possible with master/client, because if no master the client is dead too). Ad-Hoc has less overhead and no funny side effects (e.g. no master repeats broadcasts of 2 clients). If you use Ad-Hoc for a pointopoint link with another channel, make sure the BSSID has another value for each channel/ssid combination used. Use Ad-Hoc with wide netmask on one channel for local mesh deployment _and_ Ad-Hoc with narrow netmask on another channel for long range pointopoint backbone links. Consider Admin/Wifi/Distance for backbone links > 3000 meters. Important Note: --------------- This software is GPL. It is provided as-is and comes without any warranty. Flashing a firmware not approved by the OEM will void your warranty too. Further details can be found on http://ff-firmware.sourceforge.net/