Freifunk is an initiative to support the development of tools for free mesh networks. Besides that the initiative supports communities developing know-how to set up their own networks.
Freifunk is applying as an umbrella organization for Google Summer of Code. The freifunk community is acting as an entry point to a network of projects developing tools for mesh networks including the Freifunk Firmware and OpenWrt projects, routing protocols such as OLSR and B.A.T.M.A.N., tools like Maps for networks (e.g. freimap), scanning tools like the horst tool and many more. Recently people also started to develop Open Hardware like the Mesh Potato for villagetelco.
With the freifunk firmware it is relatively easy to bring up new wireless mesh networks using ad-hoc WLAN communication layer 2 and layer 3 routing with OLSR, BATMAN and other protocols. Originated in Germany, Freifunk has been deployed successfully in many countries. The OLPC project in Afghanistan uses freifunk for its mesh deployments to distribute digital books, news and educational media. In Ghana freifunk is used to bridge the digital divide in villages. In Vietnam freifunk is used to offer Internet connections at Free and Open Source events like FOSSASIA. In Europe and the Americas city and village networks lower costs for communities and small and medium sized companies, that share common Internet connections, ADSL, Telephone or Satellite uplinks in remote regions.
The Freifunk Firmware is a modified version of OpenWrt Linux Version that is developed for router devices. The main aim of the firmware is to make it easier and faster to set up wireless mesh networks. Designed as an embedded Linux for low powered network devices the system can be adapted for a wide variety of devices. Freifunk/OpenWrt supports ad-hoc WLAN communication and layer 2 and 3 routing. Open Source routing protocols can be installed via package updates. Most common protocols are the OLSR protocol and the BATMAN routing protocol. By building the Freifunk embedded firmware together with the OpenWrt team the community is developing an easy to use self-configuring, self-fixing and self-tuning mesh network (http://wiki.openwrt.org/Freifunk).
===Features of the freifunk Firmware===
The Freifunk firmware allows anyone to relatively easily build mesh networks of routers. Such networks can be surprisingly scalable involving hundreds / thousands of nodes and made using normal off the shelf routers.
Current test version on SVN (https://dev.openwrt.org/wiki/GetSource) are enabling developers to create plugins for the firmware. These plugins will enable users to offer locations based services, local search, router CMS, local fm radio distribution via routers, and many more. An example for locations based services is Apple Bonjour that offers users to share their music in local wifi networks, however, in Freifunk mesh networks, there are many more ways to share and communicate as services are build on open standards and open source software.
===LOCAL SERVICES in Mesh Networks===
Another project where we are connecting services is the Villagetelco project, where we adapt the firmware to offer telephone services over an adhoc network (www.villagetelco.org).
===ADAPTING THE FIRMWARE===
Going in another direction the community also engages to port applications and desktop environments such as LXDE to OpenWrt for Freifunk clouds to offer faster devices with an X interface and making use of thousands of available applications. The porting of code from Google Android also aims to support the adaptability of the Firmware for special use cases.
=== OLSR ===
OLSR (www.olsr.org) is first and one of the major deployed mesh routing daemons in the Freifunk networks. Even though it has some weaknesses and is one of the first mesh routing protocols used in practical networks, it still performs pretty decent in practice. It is widely deployed throughout the world.
Since it is hard to update many users in the distributed Freifunk networks (every user is the owner of his mesh routing Wi-Fi node), the OLSR.org project aims to improve and optimize OLSR. Every improvement to the OLSR daemon has the potential to improve the internet experience of the Freifunk users. So there is always room for improvement! The following is a list of potential topics for OLSR mesh programing projects:
- work on a GUI for OLSR. Make OLSR easy to use use for non-technical users. In case there are routing problems the GUI should help users debug them. Create some tools which help users understand why specific routing decisions are taken. Think: a topology map (such as the freifunk map) which explains the routing path your OLSR node takes to reach the internet gateway (or a specific host)
- port the automatic gateway tunnel code to *BSD systems. This involves intricate knowledge (or the strong desire to learn ) BSD routing code. You can get inspired from the Linux IP-IP tunnel code.
- SNMP plugin for OLSR. Very often a routing daemon must be accessible via SNMP. This is still missing in OLSR
- central logging plugin: we already have a debuginfo plugin but this needs to be enhanced to allow logging of important statistics and routing decisions to a central logging server
- port OLSR to Windows with IPv6 support
- (fun) implement a different routing metric which reacts better to the properties of Wi-Fi (packetloss, channel assignments, etc). Deploy it in a test network and compare routing metrics. Document your results
- Make MPR work again: the MPR algorithm in OLSR is used to reduce the number of messages sent out over the wireless network. Due to some changes in the central datastructures , optimized MPR settings don't work anymore. Fixing this requires you to obtain deep knowledge of the internals of a routing daemon.
- Port OLSR to the N900 (easy! Low hanging fruit) and make a small GUI for starting it
- OLSRv2: this is a new set of procotol specifications for OLSR. It is seperated out into three sub parts: packetbb, nhdp and the actual core olsrv2 draft. We need: a simulator for a large network: it should send out valid packetbb format packets to simulate a large network sending this many packets. This helps in testing and validating the packetbb parser
- (hard) implement the CSN algorithm for OLSR: this allows OLSR to sync neighbors's routing tables very rapidly. This is a key technology for further optimizations.
Of course we are open to other ideas as well!
==Communities around the world==
To read more about free wireless networks around the world, please visit the global Freifunk newswire at http://global.freifunk.net.
- Checkout the firmware, download it, install it Getting Started (EN)
- Contact your local community or start a new one
==Projects of the community==
Firmware, RouterOS, Interface
- Freifunk Firmware: http://wiki.freifunk.net/Freifunk_Firmware_(English)
- Sourceforge Download: http://ff-firmware.sourceforge.net
- OpenWrt and Freifunk Kamikaze (install packages via OpenWrt): http://www.openwrt.org
- Freifunk Luci: http://luci.subsignal.org (LuCI evolved from a MVC-Webframework to a collection of several libraries, applications and user interfaces with general purpose for Lua programmers while the focus still remains on the web user interface)
Open Source Routing Protocols
- OLSR: http://olsr.org
- B.A.T.M.A.N.: http://open-mesh.org
- BABEL: http://www.pps.jussieu.fr/~jch/software/babel/
- Horst Tool: http://br1.einfach.org/horst
- freimap: https://wiki.freifunk.net/Freimap
- Low cost do it your self Wifi telephone router project: http://villagetelco.org
- a router box suited for content nodes in mesh networks: http://fdmbx.net
More about Freifunk
Freifunk Idea: Freifunk Start Page (German) http://freifunk.net
Freifunk (English) http://wiki.freifunk.net/Kategorie:English
Check out the blog with lots of articles in English: http://blog.freifunk.net
Find communities all over the world: http://global.freifunk.net
Join the IRC on irc.fu-berlin.de #freifunk (~60 people on average) or irc.freenode.net #freifunk (the new international channel 10+ and growing)
- Join the mailing list acting as a meeting point for projects in the community: http://freifunk.net/mailman/listinfo/wlanware
Freifunk Wireless Community Weekend - Gallery
Flo Fleissig and Freifunk - Some insights to the community: http://video.google.de/videoplay?docid=-345577071434265096#
IRC Nick and Network
Name of School/University, Year of degree
Possible Mentor (optional)
Benefits to the Free Software Community, who would gain from your project? Deliverables - It is very important to list uantifiable results here e.g. - "Improve X modules in ways Y and Z." - "Write 3 new man pages for the new interfaces." - "Improve test coverage by writing X more unit/regression tests."- "Improve performance in FOO by X%."
Project Details - more detailed description.
Project Schedule - How long will the project take?
When can you begin work?
Availability - How many hours per week can you spend working on this?
What other obligations do you have this summer?
How do you plan to continue with your project and within the freifunk community after GSoC?
Bio and Free Software Experiences - Who are you? What makes you the best person to work on this project? What free and/or open source projects have you participated in? Please describe your contributions.
Please join http://freifunk.net/mailman/listinfo/wlanware to discuss your proposal! The community and projects in the free wireless community are spread over several channels. We will direct you to the right person to talk to about your project.