Join In

There are many ways to join in. Anything from providing the contacts or funding to help a whole housing complex and hundreds of residents get online, to helping us behind the scenes to keep our non-profit running. And everything in between.

See below for volunteer information, or join our (low traffic) email discussion list.

Volunteer!

We need volunteers in many areas. Volunteering your time on a project is a great way to expand your skills and meet lots of interesting people - If you would like to be a volunteer, please contact us and include

Although a lot of what we do is technical in nature, as a non-profit enterprise we need volunteers in all areas of business. E.g. everything from accounting to fund raising and event planning to website design and management. Please tell us how you would like to help!

How To Provide Free Wireless Internet Access

If you run or own or live in an affordable housing project and would like to get high-speed internet access to your residents, please contact us with the details about your location. A typical installation unfolds like this:

The timreframe from contact to installation can be as short as a few days, or as long as it takes to find funding.

Although we are based in San Diego USA, we actively seek partnerships with similar groups elsewhere around the world.

We will also do installations for mixed or commercial housing (the latter at commercial rates). Note that we are no longer focusing on 'free wireless everywhere' as in the past but instead are executing on our mission to bridge the digital divide.

Find Internet Access to Share

To share internet access, you first need to have internet access, and be allowed to share it! Most common broadband internet providers, such as Cox Cable(home level) or SBC DSL, do not allow sharing with their standard accounts.

For a small premium (typically $10-20/mth) you can use a provider that explicitly allows sharing. Some national providers include: Speakeasy, DSLExtreme and Megatpath Networks. It may also be possible to upgrade an existing account to a business account that permits sharing. For example, Cox cable currently (Sep 04) has a Home Office package for $89 which allows sharing. Time Warner has a similar deal starting at $109.

It may also be possible to connect your location to an existing SoCalFreeNet location. This will cost between $300-500 more for extra equipment, but you will avoid all ongoing monthly fees.

You Agree to Provide Access to All

Our volunteers feel strongly that their efforts should be enjoyed by all, so we won't design, install or configure systems that restrict access to a subset of users. Thus, for example, none of our nodes use WEP or similar security that requires prior knowledge of a key or password to obtain access.

We take security very seriously. Both security of the building we happen to be working in, and the computer security of those who will be using the system. We work hard to educate node users on the best practices to keep their computer safe from others and to keep their information private from others.

A more subtle example of how 'provide access to all' works is our relationship with landlords. We are happy to help a landlord add wireless access for their tenants, often saving them thousands of dollars in the process, but in return we expect a good faith effort to provide wireless access to surrounding buildings. Thus, we will typically require a rooftop antenna and possibly a relay link, even though inside equipment may service the majority of tenants.

Articles and Reference Pages

Here's where we publish articles about wireless technologies.

Standard Access Point Project

The SocalFreenet project has tried to develop a "standard AP" that we could order and make over and over again. In the pages below we detail our first attempt. This field is changing so fast, however, that we've deviated slightly from this over time. Currently (May 2004) we like the Metrix kits which are essentially the same as our original standard AP but with an updated Soekris board and a nicer outdoor box.

It may also make sense to have an indoor, cheaper option for coffee shops etc. Soekris becomes a little pricy in this scenario. Something with the feature set of a hacked WRT54G but a better radio would be perfect. We're still looking for the perfect candidate for this.

See also our 802.11a relay project which builds on the work done here.

Standard AP - updated

Update Standard Access Point / AP3 in outdoor case with PoERecently we returned to an installation of our first standard AP to update the equipment slightly so we could reuse the parts elsewhere. This saved some money, assuming labor is free :-), and also mitigates any (unreported) problems we may have had with the m0n0wall AP powersave mode bug. I hasten to add our m0n0wall client has had no problems running trouble free for 244 days before I rebooted to upgrade the firmware!

10. Close up of the main APSince we first defined and described our standard AP, we've moved from 802.11b-based m0n0wall backhauls running on Soekris 4501 boards to 802.11a backhauls running Pebble on Soekris 4526 boards purchased as kits from Metrix.

Senao AP3 replaces Soekris

The Engenius AP3 (recently replaced with the CB3+ Deluxe) is commonly hacked to turn it into a bridge or to add PoE support, but our needs were simpler. We had already built a PoE splitter/injector that used 12V just like the AP3, so all we needed was an external antenna connector.

Standard AP updated Hacking an AP3 to work with an external antenna

The images show the simple steps needed. First open the AP3 using the four screws on the bottom. Remove the top of the case - it should come apart easily. Then remove the existing pigtail connector and add your new one. Make sure the removed connector doesn't touch any of the circuitry. You can drill a hole for a new connector, or dangle it free as we did here. We left the lid off the case to help cooling, and since it was going inside a weather resistant enclosure anyway.

Updating the AP was simple. First we configured the AP via its web-based interface. Then we got on the roof, unscrewed the Soekris board, removed the existing pigtail and then added the AP3 and its new pigtail. Then we plugged it in and ... held our breath when the LAN light didn't go on. Ugh, at first we thought we needed to add a crossover to the Cat-5 cable, but then the LAN light came on and it all started up just fine.

After that it was mostly plain sailing. While there, we updated m0n0wall to the latest firmware version. There was some odd interaction between its auto-firmware update function and the MikroTik captive portal gateway, but after we disconnected the backhaul that went away and we could upgrade first to m0n0wall 1.0 and then 1.11 succesfully.

Now we're ready to install the Soekris board, with m0n0wall, as the captive portal gateway for the 2nd DSL feed in the Golden Hill neighborhood network.

Soekris based Access Point + Relay proposal

Here's some preliminary thoughts following up on this week's SDWUG meeting discussion. I propose that we spec and build a standard relay configuration consisting of:

  1. soekris 4501 board (the 64MB miniPCI Card non-POE version)
  2. EnGenius (Senao) miniPCI radio
  3. outdoor case with N-Female, hole for cat-5 cable
  4. m0n0wall software (most likely)
  5. standard yagi or omni antenna

My thinking about the various parts of this is:

  1. Runs a bunch of stuff, low power, flexible.
  2. 160mW, good receiver, cheap, external antenna connector.
    -ve: HostAP software on FreeBSD can't turn down the power which would be handy sometimes!
  3. Plastic box that's showerproof. Should run < $50. I hate the extra connector loss but figure its worth it for the convenience of a standard connector and less worries about straining pigtails, sealing holes etc.
  4. m0n0wall is rock solid, fast, but most important, ALL the config is stored in one single text (XML) file. Need to convince myself it will do straight bridging for the relay but am 99% sure it will. Configured as an AP, m0n0wall will give us DHCP, DNS caching etc., if we want, and hopefully captive portal in the next couple of months too.
  5. yagi is easier than a panel to mount. Less obtrusive than a parabolic.

I further propose that we price all installations at flat fee of $1000. In an easy install we should aim to have $100 left over to put towards site survey equipment etc. Rough cost list including shipping & taxes is: $200 (Soekris) + $80 (Senao) + $100 (case with connector and pigtail) + $50 (POE + cat 5 cable, crimp connectors) + $70 (antenna) = $500. We could probably do a little better in quantity (e.g. Soekris drops to $156 for 5+). A fixed price simplifies quoting for landlords / whoever, and also allows us to pre-purchase in quantity without getting into all the bits of paper that reimbursement requires.

(Hmm, $1000 doesn't include mounting hardware or a tripod if need be... might be barely enough...)

A cheaper option is to put two radios on one Soekris as BAWUG/SFLan do with their kit, http://www.archive.org/iathreads/uploaded-files/AstridB-PICT0017.JPG, but I worry about interference reducing throughput as described here
http://lists.nocat.net/pipermail/nocatnet/2003-July/002138.html ,
http://lists.nocat.net/pipermail/nocatnet/2003-July/002163.html and
http://lists.nocat.net/pipermail/nocatnet/2003-September/002347.html.

Anyhow, this is long enough for one post. I look forward to some feedback!

(Edited Feb 4 to reflect change from Soekris 4511 to 4501).

Soekris based Relay - Parts and Price List

Here's a proposed parts list for a Soekris Relay. Comments welcomed! Did I miss anything?

Open questions: 1) Do we need a lightening arrestor on the Yagi / Patch relay antenna?







































































































































Item#

Description

Vendor

Qty

Price

Ext Price

15450130


net4501-30 Board only

www.soekris.com

2



161



322



31311212

Power Supply 12V, 1.25A, Mini switch mode

www.soekris.com

2


10


20


64MB CF

Compact Flash for Soekris

www.newegg.com

2



23



46



Nema box

Outdoor case

ESD / hardware store

2


~50


100


NL-2511MP

160mW Ultra Long Range Wireless miniPCI Card

www.netgate.com

2


79


158


PIG-UFL-NF-19

U.FL to N FEMALE Pigtail

www.netgate.com

2


13


26


MFB24008DT12

Omni Antenna, 8 dBi, 12deg downtilt

www.ecommwireless.com

1


75


75


WISP24015PTNF

Yagi Antenna, 15 dBi

www.ecommwireless.com

1


60


60


WISP24013PTNF

Patch Antenna, 13 dBi (in place of Yagi)

www.ecommwireless.com

1



40



40



LMR195–05–NMNM

LMR195 cable, N male to N male, 5 ft

www.ecommwireless.com

2


22


44


AL-NMNFB

N-Male-N-Female 0-3 GHz Lightning Protector

www.hyperlinktech.com

2


25


50


wall
mount


mount
Yagi/Patch to wall


hardware store

1


~25


25


peak
mount


mount
omni to roof peak


hardware store

1


~25


25


ethernet

cable
and connectors


various

1


10


10












966

Notes:

  • This list is subject to review and revision but is considered accurate +/- $100. Some prices are approximate as indicated.
  • Both a yagi and patch are included in the above list. Only one is needed. Choice is left to the building owner based on aesthetic concerns.
  • Prices exclude shipping and taxes.

  • Doubtless some odds and ends will be needed (e.g. mounting screws for the boards).
  • I've spec'd 64MB CF. We're not sure which way we'll go for the final O/S and they're only slight more expensive than, say, an 8MB CF (which is all m0n0wall needs).

Please add any comments using the link below.

Updated Feb 4 to reflect switch to 4501 (from 4511) and miniPCI radio from PC Card radio).

Building an outdoor Access Point

Controlling cost is one of the challenges of creating a standard access point. We took photos of the steps we went through to fit the Soekris 4501 into a standard 8"x8" outdoor electrical box. Here are some of them:

01 Soekris 4501 card 05 Inside the case 16 Now let's drill those boxes! 19 Final hole for the ethernet cable 20 Completed radio with Yagi, omni and LMR 400 M-M cable See all 20 images

This is part of our Standard Access Point project.

Access Point: Configuring m0n0wall



The m0n0wall project is at http://m0n0.ch/wall (fyi for those who came from google).

In our standard Access Point, m0n0wall will run on each of two radios. The basic configuration we're trying to achieve is:

  • separate subnet
  • local dhcp

Through trial and error it seems the best way to assign these roles in m0n0wall is as follows.

Prepare the Soekris

Not absolutely necessary, but we prepared the soekris boards by connecting a serial adapter, booting it, interrupting the boot sequence within 5 secs with Ctrl-P and then entered the following commands:

set conspeed 9600
set pxeboot disabled
set bootdelay 2

The console speed is set to match the default m0n0wall console speed. Disabling PXE boot seems like a good idea. And the minimum 2 seconds boot delay shaves 3 seconds off the boot time.

Radio 1 - Relay

One radio provides the relay back to 'home base'. This radio also provides DHCP services and routing. We use the WAN port to communicate to the "Home AP" and LAN is hardwired to the local AP radio. Here are the configuration steps:

  1. Start with a default configuration of m0n0wall. This has an IP of 192.168.1.1 and has DHCP enabled. Hook up a standalone computer set to DHcP to the first LAN port (for Soekris anyway). Connect to m0n0wall via a browser as usual.
  2. Click on Interfaces (assign). For WAN, choose wi0, Save.
  3. Click on Interfaces -> WAN. Change Type to static. In Static IP Configuration set the IP to an unused IP in the Home AP's range (e.g. 10.0.0.251). Set the mask to match the destination network (e.g. 24), not 31. Likewise set the Gateway (e.g. 10.0.0.1).
  4. Under Wireless Configuration, set Mode to BSS, SSID to the Home AP's SSID (e.g. socalfreenet.org).
  5. Uncheck "Block private networks" at the bottom of that page. Click Save.
  6. In Interfaces -> LAN, change the IP to reflect the local subnet desired. E.g. 10.0.5.1. Common practice is to end it in 1. Make sure the mask is set appropriately (e.g. 24) as it may change automagically. Click Save.
  7. In Services -> DHCP, update the allocated range to match your LAN IP (e.g. 10.0.5.100 - 10.0.5.199). Click Save.
  8. Go to Diagnostics -> Reboot System. Answer Yes and wait. With luck your computer will get a new IP in the LAN range.
  9. Log back in via the new LAN IP address you set above (e.g. 10.0.5.1).
  10. Go to System->General Setup. Enter the DNS server addresses. Set the timezone. Click Save.
  11. In Firewall -> NAT, click on Outbound and then "Enable advanced outbound NAT".
    Click Save. (This will effectively disable NAT so the addresses are passed through). Click Apply Changes if prompted.

At this stage your LAN computer should be able to ping the gateway computer beyond the WAN port (e.g. 10.0.0.1). It may even be able ping external links (e.g. www.yahoo.com). A couple of issues may stop this from happening. My gateway to the internet box (at 10.0.0.1) is also running m0n0wall and I had to make two changes to its config before Radio 1 traffic could get to the internet:

  • I needed to add a static route so traffic could be sent back to the 10.0.5.0 subnet. Using the values above, I did this in: System->Static Route click '+' to add new route, then enter OPT1 (wireless) for Interface, 10.0.5.0/24 for destination network and 10.0.0.251 for gateway (i.e. the WAN address of the wireless radio).
  • I had to expand the subnet from 10.0.0.0/24 to 10.0.0.0/21 (i.e. 255.255.248.0). I'm not sure exactly why this was necessary. At first it was because of a default rule blocking non-LAN IPs internally (i.e. block !10.0.0/24), but that later went away (perhaps because of the static rule above. Perhaps it was because without a wider net, no NAT was performed for the 10.0.5.0 subnet. Anyhow, expanding the subnet mask made everything work.

Radio 2 - Access Point

The AP radio is configured as a bridge. I.e. virtually none of the m0n0wall features are used.

  • step by step configuration to follow.

802.11a Relay / Backhaul Project

802.11a Relay - A Soekris on Pole 802.11a Relay - AP End of Relay on Pole As 802.11b becomes more and more congested, we're looking at alternatives to use for relay or backhaul links. Price is always an issue, so we're considering 802.11a gear which thanks to 802.11g now seems to be largely ignored in the consumer realm and is thus sometimes quite cheap.

The project pages below describe how we built our own backhaul for approximately $450 using two $22 surplus Proxim Harmony APs, a Soekris board, patch antennas etc.

Important Note About FCC Compliance: We are currently evaluating the FCC compliance of the prototype 802.11a system described here. Anyone seeking to emulate our design should do likewise! We take compliance seriously and will modify the design to comply if at all necessary.

802.11a Relay Overview (Description, Cost, Links to Suppliers)

The key to our 802.11a backhaul project was finding the Proxim 802.11a Harmony 8571 which is a rare 802.11a device because it has removable antennas. These are available at www.justdeals.com for $15, but with $12 shipping for the first and $4 for subsequent devices, they average out around $23 each for two with shipping. Still pretty reasonable for a device that was originally $600!

We took one apart and discovered it has an 'unwrapped' PCMCIA card in it with standard SMA connector pigtails. Its also potentially re-programmable as a bridge which would make this whole relay unbelievably cheap, but we lack the expertise to get that far! The non-standard PoE support was a nice bonus - as is the ability to run with the standard power supply 100 feet away.

The next piece of the puzzle was antennas. Most point to point 802.11a antennas are in the 5.8GHz range where point to point is allowed by the FCC. The proxim is at 5.3GHz as its designed for multipoint. Fortunately SuperPass has a suitable patch antenna that someworks across the entire 802.11a 5GHz range of 5.1-5.9GHz. At 18.5dbi with 12 degree H and 32 degree V beam its a great solution (so far).

We decided to use the Proxim AP unmodified at one end of the link and a Soekris board with a Proxim PCMCIA card removed from another AP at the other. The Soekris adds a lot to the expense, but does provide a lot of configuration flexibility. The MadWiFi Atheros chip drivers work fine with this chipset (at least for our needs).

There's a couple of ways to slice this as some new products are almost available. First, here are the parts that stay the same regardless:








































Item# Description Vendor Qty Price Ext Price

SPPJ28

18.5dbi 5.1-5.9 GHz panel antenna

www.superpass.com

2



65



130



48M2MLMR400

48 in RP-TNC Male - N Male LMR400

www.fab-corp.com

2



20



40



various

outdoor cases

local electrical supply store / supermarket

2



10



20








190


Here's the rest of the parts that reflect how we built the prototype version:





























































Item# Description Vendor Qty Price Ext Price

15451130

net4511-30 Board only

www.soekris.com

1



161



161



31954804

PoE Power Supply

www.soekris.com

1



22



22



8571-01_Combo

Proxim Harmony 8571

www.JustDeals.com

2



23



46



RSA-3452

SMA-M TO N-Female Adapter

www.radiooutfitter.com

2



6



12



64MB CF

64MB Compact Flash card for Soekris

 

1



25



25



homebrew PoE

PoE Hack Adapter - injector only

www.socalfreenet.org/poe

1



10



10








276


Here's a 2nd variation that replaces the Proxim radio and AP with a miniPCI a/b/g card and uses the latest Soekris boards (available at the end of March):















































Item# Description Vendor Qty Price Ext Price

15452620

net4526-20 Board only (32MB, 15MB CF)

www.soekris.com

2



129



268



31954804

PoE Power Supply

www.soekris.com

2



20



40


#5354 MP ARIES

5354 ARIES MP 802.11a/b/g miniPCI card

www.netgate.com

2



90



180


#PIG-UFL-NF-19

U.FL to N FEMALE bulkhead Pigtail

www.netgate.com

2



13



26








514


And then there's the combination option that uses one cheap Proxim AP unmodified, and a Soekris board plus miniPCI radio card (thereby avoiding hacking a Proxim AP):




































































Item# Description Vendor Qty Price Ext Price

15452620

net4526-20 Board only (32MB, 15MB CF)

www.soekris.com

1



135



135



31954804

PoE Power Supply

www.soekris.com

1



22



22


#5354 MP ARIES

5354 ARIES MP 802.11a/b/g miniPCI card

www.netgate.com

1



90



90


#PIG-UFL-NF-19

U.FL to N FEMALE bulkhead Pigtail

www.netgate.com

1



13



13



8571-01_Combo

Proxim Harmony 8571

www.JustDeals.com

1



27



27



RSA-3452

SMA-M TO N-Female Adapter

www.radiooutfitter.com

1



6



6



homebrew PoE

PoE Hack Adapter - injector only

www.socalfreenet.org/poe

1



10



10








303


The cheapest possible version would cost $78 and requite no hardware hacking at all (just outdoor cases) - but it involves changing the firmware in the Proxim. Its possible in theory, but perhaps not in practice unfortunately:








































Item# Description Vendor Qty Price Ext Price

8571-01_Combo

Proxim Harmony 8571

www.JustDeals.com

2



23



46



RSA-3452

SMA-M TO N-Female Adapter

www.radiooutfitter.com

2



6



12



homebrew PoE

PoE Hack Adapter - injector only

www.socalfreenet.org/poe

2



10



20








78


Notes about pricing:

  • Prices do not include shipping (except the Proxim APs) or sales tax.
  • There'll be other odds and ends depending on your situation, especially mounting hardware such as u-bolts and masts.
  • Lightning protection is not included above.
  • Some pricing included user group discounts of 5-10%.
  • We actually purchased the SMA-N-Female adapters from www.ecommwireless.com but discovered www.radiooutfitter.com has them for $2 less while writing this page.

Assembling the 802.11a Relay / Backhaul

These pages describe how we assembled the first 'prototype' version of the relay. Now that we know its working, we'll refine everything - e.g. by replacing the plastic food containers :-).

The relay has two ends. The radios are configured so that one end is an Access Point and the other is a client. We chose to do it this way because the Proxim only supports Access Point mode, unlike some APs that also have bridge mode capability. The Access Point end is pretty simple: basically a Proxim modified for PoE in an outdoor case with a high gain antenna.

The other end of the relay is more complicated. We chose a Soekris board and installed a second Proxim radio taken from a Proxim AP. We installed Pebble on the board which is probably overkill. We'll try Leaf Wisp for our next install.

802.11a Relay - How To Build the PoE Adapter

First add straight-thru leads for the ethernet signal between the two connectors as shown. Then, cut the plugpack lead, and solder it to some solid core ethernet cable strands. We used cat-5 wiring standard T-568B for our adapter.

The white stripe on the plugpack wire goes to 4-5 (blue/bluewhite) and the totally black lead goes to 7-8 (brown-brownwhite). Then feed those strands into a double ethernet jack box. Punch those strands down as color coded on the block and you're done!

Proxim 8571 PoE parts Proxim 8571 PoE toolless CAT 5 jack Proxim 8571 PoE jack with ethernet data lines Proxim 8571 PoE crimp one jack Proxim 8571 PoE cut off the power plug Proxim 8571 PoE solder the power wires Proxim 8571 PoE tape or insulate the power leads Proxim 8571 PoE prepare second Cat 5 jack Proxim 8571 PoE ready to mount in holder Proxim 8571 PoE jacks inside box Proxim 8571 PoE add strain relief zip tie to power cord Proxim 8571 PoE complete Proxim 8571 PoE working!

According to this poe calculator at 100ft it should still
get 12.5 even at the full 1 Amp (probably more than the AP draws).

DO NOT PLUG IN A STANDARD POE ADAPTER. Although the AP supports power on its ethernet port, close reading of the Proxim Harmony Power System manual, which also contains the PoE pinouts, suggests that Proxim was using 24V rather than the 48V which was later adopted as standard. Maybe someone can review the parts on the board and provide a definitive answer?

802.11a Relay - How To Build the AP End of the Relay

One end of the AP uses an unmodified Proxim Harmony AP. Unmodified as in - you could return this under warranty. Accordingly, this is the simple end of the relay. The parts you need for this end are:

  • Proxim Harmony AP
  • double ethernet jack for PoE
  • SMA to N-Female Adapter
  • N-Male to N-Male Cable
  • 5.x GHz panel antenna
  • outdoor case
  • misc hardware: wires, U bolt/threaded rod, nuts etc.

802.11a Relay - AP in final case close up802.11a Relay - AP in temporary case on pole, ready to go

Putting everything in the case is a fun part. There's a few non-obvious details however. By taking some simple signal strength measurements, we found that the antenna connector furthest from the ethernet jack is the 'primary' antenna, so be sure to use that. Also, sometimes the AP won't boot if the other antenna is left disconnected. Sure enough, the manual even says this on page 44: For Model 8571, you must use two antennas. This was inconsistent - sometimes it would boot and not others, so we left the 2nd antenna connected.

We decided to use an SMA to N-Female adapter because we're standardizing all our radios to have N-Female connectors so our antenna cables can all be identical. However you could instead buy a custom cable to suit. Note that this is an SMA connector, not the Reverse Polarity SMA (RP-SMA) connector that many 802.11b/g Access Points use.

802.11a Relay - Superpass SPPJ28 18.5 dbi patch antenna

Connecting and mounting the antenna is simple enough. Note there's no up/downtilt on this antenna mount. You can fudge this by jamming something appropriate at the top or bottom fitting to tilt up or down as needed.

The final piece of the puzzle is to create a PoE adapter. The Proxim already has internal support to take up to 24V power from the ethernet cable, so we just need an 'injector' to add the power to the ethernet cable. I.e., this is half of the PoE project. We measured the voltage from the supplied plug pack at 13.7VDC under load which was far enough above the manual's specified 12VDC input that we thought we could use the standard plugpack. Our first installation is running succesfully at 105 feet, so it seems to work in practice ok.

Configure Pebble SNMP

Pebble does not come with SNMP installed. Fortunately there is a contribution that makes it available.

Here is how we installed SNMP on a Pebble that was already in operation (always a scary thing to do!).

Get the avcNetSNMPv3-0.0.2.tar.gz file onto the pebble box. We used the scp that was built into the ssh client I was using. By default it will end up in the /root directory. The untar it and install it as follows:

tar -xvzf avcNetSNMPv3-0.0.2.tar.gz
remountrw
cp init.d/snmpd /etc/init.d
chmod +x /etc/init.d/snmpd
mkdir /ro/etc/snmp 
cp ro/etc/snmp/snmpd.conf /ro/etc/snmp
mkdir /ro/var/net-snmp
cp ro/var/net-snmp/snmpd.conf /ro/var/net-snmp/
cp sbin/snmpd /sbin
chmod +x /sbin/snmpd 
mkdir /etc/snmp                                   
ln -s /rw/etc/snmp/snmpd.conf /etc/snmp/snmpd.conf
mkdir /var/net-snmp/
ln -s /rw/var/net-snmp/snmpd.conf /var/net-snmp/snmpd.conf

If you think you got it all correct, you can then issue a fastreboot command to restart your machine.

Now that its installed, you can test it. Do this with:

/etc/init.d/snmpd start
cat /var/log/snmpd.log

You may see some errors about renaming files. These should go away after the next reboot.

Once you're satisfied its working correctly, you can now set it up to automatically start when Pebble boots. This can be done as follows:

cd /etc/rc0.d
ln -s ../init.d/snmpd K20snmpd
cd /etc/rc1.d
ln -s ../init.d/snmpd K20snmpd
cd /etc/rc2.d
ln -s ../init.d/snmpd S20snmpd
cd /etc/rc3.d
ln -s ../init.d/snmpd S20snmpd
cd /etc/rc4.d
ln -s ../init.d/snmpd S20snmpd
cd /etc/rc5.d
ln -s ../init.d/snmpd S20snmpd
cd /etc/rc6.d
ln -s ../init.d/snmpd K20snmpd

Now if you do a fastreboot you should find snmpd running succesfully.

Now you're ready to fire up your favourite snmp client and start generating pretty graphs.

802.11a Relay - Build Bridge End of Relay

The bridge end of the relay takes the feed from the 802.11a AP end and routes it for use locally (e.g. to feed an 802.11b Access Point). We used a Proxim card and antenna lead taken from a Proxim 8571 AP. Software is NYCWireless's Pebble distribution.

80211a Relay Project: Soekris 4521 with Proxim 802.11a card 802.11a Relay - Soekris Bridge on Pole 802.11a Relay - Soekris Bridge on Pole Ready to Go

(Yes, we'll expand on this page!)

802.11a Relay - Configure Soekris and Pebble

We decided to use Pebble for the client end of the relay - in part because it was the only distro we tried that would recognise the Atheros-based radio card.

First you'll need a compact flash with pebble. For this you'll need a Linux system and a CF adapter that works with it (we used the 'test' release of Debian's Sarge version). Then follow the instructions in the pebble readme. If you follow the directions it works great. This is not trivial for a Linux newcomer, so get help if need be.

Now plug your Soekris into a serial port, run a suitable terminal program (like Tera Term) set it to 19200 baud and fire it up. Iinterrupt the boot sequence within 5 secs with Ctrl-P and then enter the following commands:

set conspeed 9600
set pxeboot disabled
set bootdelay 2

The console speed is set to match the default pebble console speed. Disabling PXE boot seems like a good idea. And the minimum 2 seconds boot delay shaves 3 seconds off the boot time.

Now power off the Soekris, plug the flash card into it and power up again, or type 'reboot' if you already have the card installed. Change your terminal program speed to 9600 and (hopefully) watch the pebble boot sequence unfold. Now we're ready to configure Pebble.

What we're trying to achieve is:

  • 802.11a radio is a client to the remote AP. Thus it will need an address on the 10.0.0.x subnet. We chose arbitrarily chose 10.0.0.129. The AP at the other end of the link is at 10.0.0.128/24 with MAC address of 00:20:a6:47:f9:77.
  • We will specify the MAC address of our AP to the client rather than just the SSID for no particular reason other than slight paranoi and to avoid future confusion if we have more APs with the same SSID that it might erroneously connect with.
  • On the eth0 interface we want to provide dhcp services at 10.0.3.x and this will be the gateway port at 10.0.3.1.
  • We wanted DNS caching/forwarding both to simplify config (it makes the gateway and DNS servers the same which is easier to tell people over the phone if need be) and reduce traffic and load on the central DNS forwarder.
  • We do not need nocat for this scenario (we have a captive portal already)

With the above in mind, let's get things set up! Log in to pebble via the serial port (using 'root' and the password you specified when building pebble). Then issue the command:

/usr/local/sbin/remountrw

so that your changes can be saved. Now edit the /etc/network/interfaces file. (I used 'vi /etc/network/interfaces'). Comment out or remove what's there and add the following:

auto lo
iface lo inet loopback

iface ath0 inet static
        address 10.0.0.129
        netmask 255.255.255.0
        broadcast 10.0.0.255
        gateway 10.0.0.1
        up iwconfig ath0 ap 00:20:A6:47:F9:77
# alternatively use
#       up iwconfig ath0 mode managed essid socalfreenet.org 

auto eth0
iface eth0 inet static
        address 10.0.3.1
        netmask 255.255.255.0
        broadcast 10.0.3.255

This tells it that 'ath0', the radio card, will be at 10.0.0.129 on the 10.0.0.x (/24) subnet and its gateway is 10.0.0.1. The iwconfig line tells it to register with the AP specified by the mac address that follows. It then configures the eth0 port for a static IP of 10.0.3.1/24. Save the changes and exit the editor (Shift ZZ in vi).

Now the IPs are specific, but the atheros radio isn't started yet (type ifconfig at the prompt to confirm). Some magic is needed to get it going. At least it seemed like magic to me. I'm sure there's a simpler, more elegant and more correct way to do this, but this is what worked for me. We need to create a new file /etc/rcS.d/S99local and place in it:

#!/bin/sh
modprobe ath_pci
ifup --force -v ath0

Then issue the command:

chmod 777 /etc/rcS.d/S99local

This file will be executed at the appropriate place in the startup sequence and will start the radio card.

April 6 update: Another configuration we've started using is a Soekris 4511 with an 802.11a and 802.11b card. This becomes a combination AP and relay radio in one box. If you're using the miniPCI card, you need to add the following commands to the S99local file:

modprobe hostap_pci
ifup --force -v wlan0

Alternatively, if you use a Soekris 4521 and a PCMCIA 802.11b card as the 2nd card, then you can omit the modprobe hostap_pci line.

For our scenario we wanted to disable nocat. To do this, mount the CF read-write and edit /etc/inittab to comment out the last line where it is started. After editing it should read:

#NC:23:respawn:start-stop-daemon -S -c nocat --exec /usr/local/nocat/bin/gateway -- -F

We're not done yet, but this is a good point to restart and check your work so far. Type:

/usr/local/sbin/fastreboot

to save all the changes made so far to the compact flash and then reboot the Soekris. After logging in, the (trimmed) ifconfig command output will look something like this:

pebble:~# ifconfig
ath0      Link encap:Ethernet  HWaddr 00:20:A6:47:86:7A
          inet addr:10.0.0.129  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:633 errors:0 dropped:0 overruns:0 frame:0
          TX packets:30 errors:7 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:199
          RX bytes:46932 (45.8 KiB)  TX bytes:2062 (2.0 KiB)
          Interrupt:10 Memory:c4895000-c48a5000

eth0      Link encap:Ethernet  HWaddr 00:00:24:C1:8C:34
          inet addr:10.0.3.1  Bcast:10.0.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:120 (120.0 b)  TX bytes:0 (0.0 b)
          Interrupt:11 Base address:0x7000

and you should be able to ping the access point:

PING 10.0.0.128 (10.0.0.128): 56 data bytes
64 bytes from 10.0.0.128: icmp_seq=0 ttl=15 time=59.2 ms
64 bytes from 10.0.0.128: icmp_seq=1 ttl=15 time=1.7 ms

--- 10.0.0.128 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.7/30.4/59.2 ms

You may see some console output as the atheros card adjusts its rate due to errors:
ath_rate_ctl: 36M -> 24M (0 ok, 2 err, 2 retr). You can avoid this link retraining by specifying a link speed in the /etc/network/interfaces file.
So far, so good. You should now be able to log in using an ssh client on your network. This will be faster than using console, but either works.

Now we can get the machine running correct as a gateway on eth0. Again mount the CF read/write with:

/usr/local/sbin/remountrw

Now add the DNS servers by editing /etc/resolv.conf and replacing the servers listed with your own, e.g.:

nameserver 10.0.0.1
nameserver 64.81.45.2

Now we configure the DNS cache / forwarder. Enter the following commands:

echo 10.0.3.1 >/ro/var/dnscache/env/IP
touch /ro/var/dnscache/root/ip/10.0.3
ln -s /rw/var/dnscache/root/ip/10.0.3 /var/dnscache/root/ip/10.0.3
rm /ro/var/dnscache/root/ip/192.168.*

(Answer 'y' when prompted by rm.). These commands tell the DNS caching program, djbdns which interface to listen on (10.0.3.1) and to provide DNS service for the 10.0.3 subnet.

With the DNS servers configured, we can now setup the DHCP server to hand out DNS server addresses along with local IPs. Edit the file /etc/default/dhcp so it contains the single (non-commented) line:

INTERFACES="eth0"

which tells the DHCP server which interface to operate on. Next, edit the file /etc/dhcpd.conf so it has the ilnes:

option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;

subnet 10.0.3.0 netmask 255.255.255.0 {
  range 10.0.3.10 10.0.3.99;
  option routers 10.0.3.1;
  option broadcast-address 10.0.3.255;
  option domain-name-servers 10.0.3.1,10.0.0.1;
}

Here we've specified both 10.0.3.1 and the main DNS forwarder 10.0.0.1 both as possible DNS servers. Now save your changes and reboot again:

/usr/local/sbin/fastreboot

After the reboot is complete, you're ready to test your configuration.

Update: Mar 22 2004: It's handy to set the time after getting everything going. In our configuration where our gateway runs an ntp server, you can do this with

ntpdate -u 10.0.0.1
/sbin/hwclock --systohc

This makes the logs much easier to compare with other logs after updating.


Update for Metrix Boxes

Some quick notes now that we're using Metrix boxes for most of our a/b relay/AP installs (mostly for myself so I don't have to remember each time!). Note that Metrix has bind installed and not djbdns.

  • set bootdelay 2
  • edit /etc/network/interfaces
  • edit /etc/default/dhcp to add the interfaces which will have a DHCP server running
  • edit /etc/dhcpd.conf so it serves appropriate addresses
  • edit /etc/bind/named.conf and uncomment the query-source line and add the forwarders. Also add the line "forward only", not to be confused with the perhaps pre-existing commented out line "forward-only".

Proxim 8571 802.11a AP dismantled

Here's some pictures of the inside of the Proxim Harmony 802.11a AP with removable antennas:

01. Proxim 8571 802.11a AP Connectors 02. Proxim 8571 802.11a AP opened 03. Proxim 8571 802.11a AP - Two Cards visible 04. Proxim 8571 802.11a AP - Radio card 05. Proxim 8571 802.11a AP - close up of main board 06. Proxim 8571 802.11a AP - close up of radio chips

Update (Dec 2004): The device can be reflashed with Linux, but its 'nontrivial'. Read the gory details. Also the telnet password is 'notbrando'. Not sure what extra facilities that provides.

This radio was recently available for $15 + shipping and tax (originally $600).

Its features, well documented in the manual include:

  • detachable antennas using SMA-female connectors (not RP-SMA)
  • uses dhcp by default then a web interface for config
  • supports channels 56,60 and 64 only
  • supports SNMP (disabled by default)
  • allows config for RTS/CTS and fragmentation
  • has optional integral POE (but its NOT standard), see page 26

Getting inside was a little tricky. The screws are some special type with an outside pattern and inside hump that makes using a screwdriver, torx or hex key impossible. However by drilling out the center hump with a 5/64 bit, its possible to then use a 5/64 hex (allen) key to remove the screws. Failing that you can easily drill out the screw head - but then its hard to get the cover back on.

POE is supported, sort of. Its designed to be used with the Harmony Power System which supplies 24VDC with ethernet pins 4-5 DC+ and 7-8 DC-. Thus a regular 48V POE is likely to be problemmatic (though I don't pretend to understand the POE spec in any detail!). It definitely should be ok to use for short runs with a homebrew POE adapter like this one where we reuse the supplied PS which is marked 12VDC but measures 14V under load. Having the wiring already internal to the AP saves building the splitter part of a standard homebrew PoE injector.

Adding a Caching Server to Boost Performance and Save Bandwidth

Our Golden Hill installation is starting to keep our DSL line too busy and until we get more bandwidth, we thought we could add a caching proxy server for web browsing requests.

A plea to the user group for an old laptop resulted in several offers, including one with a broken screen which I decided to use. This article describes roughly the steps I went through to get it going on the network.

Configuring the Laptop with Debian

First step was to install Debian. I chose this because its package system makes it easy, plus Pebble is also a cut down Debian and thus it shares the same file layout and commands.

There are many guides to installing Debian, so I'll just highlight some of the strangeness I found and some decisions I made.

  • Three partitions: one for the OS, one for swap space, and then another for the squid proxy cache. Since the cache is the busy part of the system, I wanted to keep it separate in case it got currupted etc.
  • Because the laptop was using a Belkin PCMCIA network card that wasn't in the default distribution, this generated a little research and several installs. The end result was something like:
    • when prompted to install a 'net' device, choose 'dummy'. This will trigger the other network setup prompts. Alternatively you can hack the /etc/network/interfaces file directly if you prefer.
    • Immediately after booting the first time, use <alt><f2> to switch to another login. Login as root with no password required
    • follow these directions which amount to inserting the PCMCIA card info into /etc/pcmcia/config
    • edit /etc/network/interfaces and replace dummy0 with eth0. Issue the command ifdown dummy0
    • finally do a /etc/init.d/pcmcia restart
    • At this point, you should have a working network interface and be able to ping the outside world and be pinged by others. You can go back to the main console and continue with the rest of setup now that you have a working network connection.
  • There was still a problem with the network interface not coming up after reboot. A little googling found an answer which boiled down toremoving the 'auto' line from /etc/network/interfaces, and installing the 'hotplug' package.
  • Don't choose any options from task select. It just installs a bunch of stuff you won't need. I used dselect instead to install squid and just squid (none of the html config stuff).

Once you have it all installed and running, you can try to use it from another machine. For my subnet, I first tested by putting the laptop on the subnet and then logging in via ssh and making sure it could access the internet and generally work as expected.

When you're satisfied its working correctly, you're reading to configure squid.

Configuring Squid as a redirected transparent proxy server

Once you have the laptop running correctly, you're ready to get squid configured. We want to use squid as a 'transparent proxy'. This means that users won't have to do any configuration on their machine to use squid and benefit from the proxy. And, alternatively, users won't be able to avoid the proxy, and hence we get maximum benefit of the cache (more info, and HowTo).

The squid configuration file for debian is found at /etc/squid.conf. The vast majority of the values can be left as is, at least until you start tuning squid. Here are some settings we changed from the defaults:

httpd_accel_host virtual
httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

These few lines should get squid going enough to test. Issue the command /etc/init.d/squid restart to force it to re-read its settings (though maybe a SIGHUP would do the same thing more elegantly?).

Now squid should be working. You can test basic functionality by setting the proxy settings of your web browser to point directly to the squid proxy. If you issue the command /tail -f /var/log/squid/access.log you should be able to see the pages you're visiting being logged. (Use Ctrl-C to break out of the tail).

Next up is how to change the firewall / gateway settings to force users to use the proxy.


We did some minor tuning with these settings:

maximum_object_size 8192 kb

Transparent Squid Proxying with MikroTik

Once you have squid working, you can now start forcing traffic to use it. If you have a single gateway box, this is most likely the easiest place to do this. In our network we run MikroTik's RouterOS which is in turn based on Linux and supplies all the hooks necessary to do what's needed.

The basic idea is to redirect all outbound traffic on port 80 to the squid server. The devil is the details!

more to come, but basic idea follows

  • Set up a rule for Destination Nat that sends all traffic on port 80 to the squid server, except traffic from the server itself, and, in our case where we have a captive portal, excepting traffic to the captive portal too (though maybe it works ok anyway?).

  • make sure the squid server is exempt from captive portal signon. The tricky part is making it exempt but not a client that signs on through it (hence exception above that the captive portal destination is exempt).

  • The squid box must send all replies back to the gateway, not to the requesting machine directly - its not expecting them! So in the squid box's file /etc/network/interfaces is the extra line:

    up "route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1"
    

    which adds a static route to force all traffic on the squid's subnet (10.0.0.x) back to the gateway which will in turn route back to the correct host.

Changing Mikrotik settings to provide access to internal devices

Our main Golden Hill network uses a gateway box running MikroTik software. If we want to monitor boxes via snmp or access the admin interfaces of a device within the network, we configure MikroTIk to forward traffic appropriately.

The general approach is to pick a port number and then have MikroTik forward all traffic that comes into that port on the main IP to the specfic device, remapping the port in the process.

Typically we need either http, https or ssh access and also snmp. As the former are tcp protocols and the latter is udp, we use the same port number for both to simplify things a little.

Here are the basic steps for adding a new device to forwarded list sing the MikroTik winbox interface.

For the following example, we assume port 1234 and an internal destination IP of 10.0.0.250.

  1. Go to IP -> Firewall -> Destination NAT
  2. click on the '+' symbol and fill in the following on the resulting dialog
    1. 'In Interface' choose Wan
    2. 'Dst Address' enter the outside IP, 66.93.33.41 / 32
    3. 'Protocol' select tcp
    4. 'Dst Port' select the right hand side checkbox and enter 1234
  3. Click on the 'Action' tab (previously on General) and
    1. Action is set to nat
    2. Both to Dst Addresses are set to 10.0.0.250
    3. To Dst Ports is set to 80 for http (or 22 for ssh, or 443 for https)
  4. Click on OK to save the rule
  5. Scroll to the bottom of the list where the new rule will appear
  6. Select the rule by clicking on it, then click on the yellow 'comment' button on the toolbar and name the rule (e.g. HTTP to SH ap2)
  7. drag the rule up match to the other similar rules.

Note that the winbox UI gets confused with dragging sometimes. If you suspect this, log out of winbox and log back in again - its possible to cause major damage to rulesets by dragging them when the UI is messed up.

Now the outside world can get into the AP, but it can't get out because of the captive portal. The following steps allow it to bypass the portal:

  1. On the IP -> Firewall window, click on the Filter Rules tab
  2. In the dropdown on the right hand side, choose "Hotspot temp"
  3. Click on the red '+' and in the resulting box:
  4. Under the 'Action' tab, change Action to 'return'
  5. Under the 'General' tab change, set Src Address to 10.0.0.250 / 32
  6. Click on OK
  7. In the resulting rule list, drag the rule above the last rule and add a comment using the Yellow comment button

That's it. You should now be able to access the box from the outside using an url like https://66.93.33.41:1234.

Do-It-Yourself POE

For our Access Point Project we needed a POE adapter. www.NYCWireless.net tells how and this is basically a clone of their info with the added value of part numbers and suppliers for those people who'd like everything appear on their doorstep for reasonable cost. The full PoE standard is quite involved and does much more than suggested here.

0. POE parts in bags. Short ethernet cable we'll cut to save time and money. 05. Hook the two connectors up as straight-thru 10. No turning back now!  Stripe one side before cutting 14. Testing, testing, testing! 15a. All done - the completed POE adapter. See all 17 photos

Here's an order for a single POE from www.greatcables.com. I'm sure others have similar parts and I would welcome some alternative suppliers:

Part # Description Price
C5E03WT 3 foot Cat 5 Molded $1.95
SMM-UE2-WT Dual Port Surface Mount Box Loaded $8.66
SMM-UE1-WT Single Port Surface Mount Box Loaded $4.73

The total price before shipping works out around $15 per adapter - assuming you cut the cord on the plugpack instead of using extra power plugs. Note that Fry's has identical equipment but its almost twice the price.

10 Mar 2004 update: Another supplier that works out much cheaper is: http://deepsurplus.site.yahoo.net. Their prices / part numbers are:

Part # Description Price
CB241-1BL 1ft Blue Cat 5E Molded Patch Cable $1.47
CN394-2 Two Port Surface Mount Housing, White $1.25
CN394-1 One Port Surface Mount Housing, White $0.85
CN380 Cat 5E Keystone Jack - White Toolless - 2 needed $1.47
CN380-BL Cat 5E Keystone Jack - Blue Toolless $1.47

This brings the price per POE adapter down to about $6.75 before tax shipping (their shipping is reasonable).

Hacking the Nokia IP110 for m0n0wall or pfSsense

Every dollar counts when you're deploying networks on a minimal budget. And since we usually use a gateway running m0n0wall running on an SBC (single board computer) like those produced by Soekris or PCEngines WRAP, that $100-200 is a significant chunk of the total network price.

So for cost reasons, and to be honest also for the fun of it, we're exploring using the Nokia IP-110. This device also holds the promise that it might be able to run pfSense which builds from m0n0wall, but assumes a hard disk and thus has many more features, like Squid caching support.

The Nokia 110 is a firewall device with the following features (pics):

  • Geode processor - National GX1 300 MHz
  • 64 MB RAM (IP110), 128 MB RAM (IP120)
  • 5 GB laptop hard drive
  • Three 10/100 Ethernet ports
  • Two serial ports (console and auxiliary)

A great guide to putting m0n0wall on the box can be found at Chris Buechler's great site. Please take a look at it for pictures and a great overall description as well as most of the steps needed to get it working with m0n0wall.

This page will continue from where that leaves off.

Missing Power Supply

Many Ebay items do not include a power supply. This makes them cheap to buy, but leaves you with a problem to solve. The Nokia power supply uses a DIN-like 5 pin plug. When looking at the plug from the back, the pins from left to right, i.e. counterclockwise, are used as follows:

PinsVoltage
1,25V
3,4,5Ground

The power supply that comes with the Nokia is labelled 5V @ 5A (thanks to Joe for this info). It has part number UP02521050.

Fortunately, again thanks to Joe, the power supply problem was easy to solve, and relatively cheap too. At least at the time he looked, someone was selling them on EBay as an unbranded power supply. Two with shipping and tax came to $20 (though without the AC cords).

Funky MAC addresses

The Nokia box reports the MAC addresses for all three ports as FF:FF:FF:FF:FF:FF. Fortunately, m0n0wall provides a way to assign a MAC address using the <spoofmac> tag. As Travis Dixon explains:

The IP330 had weirdness in the NIC configs - mainly they all defaulted to
a MAC address of ff:ff:ff:ff:ff:ff. To fix this what I did was write the image
to a drive (a smaller one than the 8GB one that came with it BTW) and then boot
it on another PC with a couple of fxp (intel) nics and get the initial NIC config
done. THen I rebooted into FreeBSD on the same box and mounted the m0n0wall drive
onto the freebsd box. Once mounted I edited config.xml and added a statement to
each NIC of <spoofmac> (make up a MAC address here) </spoofmac>. As long as the
made up MAC address is unique on your LAN you're OK.

Once this was written out I put the drive back in the IP330 and proceeded as normal.

Replacing the HD with a CF

Nokia IP110 inside view with CF adapter replacing hard disk"PC Engines":http://www.pcengines.ch/ makes a card called the CFDISK.2F. As you can see from the picture at right, this is a perfect physical replacement for the hard disk - right down to the screw mounts.

The power supply arrived and I was able to boot the Nokia after loading a CF card with the generic version of m0n0wall.

Step by Step

I managed to confuse myself when I came back to this later and wasted a good hour getting this working again. Here is the order and gotchas:

  1. Write a CF with a generic PC image (but not 1.2b5, 1.2b6 or 1.2b7 as they're FreeBSD 5.x based and don't boot for some reason)
  2. Using the serial port console, assign interfaces for LAN and WAN. They are called fxp0, fxp1 and fxp2 respectively. (Or you can use Auto assign.)
  3. Save and reboot, but stop the process when you see that its started to reboot, power down and pull the CF card

Now you need to modify the config.xml file on the CF card to add the spoofmac tags referenced above. When I forgot this step, I had weird behaviour. I could get a lease via DHCP, but could never ping the m0n0wall or log in via http. Later releases could ping my computer from m0n0wall using the console ping command but not vice versa.

I found that the easiest way to modify the config.xml file was to boot a FreeSBIE "Live CD", plug in a CF reader, plug in the CF card, mount the card and then modify the config.xml file directly. This happens somewhat as follows:

  1. create a bootable CD from http://www.freesbie.org/
  2. boot it with the CF reader unplugged (assuming USB)
  3. I used the tcsh option because I had low RAM on an old machine. You could likely go for a GUI version if you have more RAM and avoid some of the noodling that follows.
  4. when you're in the command line, plug in the CF reader with the card already inserted. If you're lucky, a bunch of stuff will fly by on the console. This is telling you that it recognised the CF reader (and possibly other card readers if its a multi-reader device)
  5. use the command dmesg | more to page through what went by in more detail. Look specfically for "CF" or similar and then find the device name, such as da1.
  6. create a mount point using mkdir /mnt/cf
  7. mount the CF with mount /mnt/cf /dev/da1 where you found the device name above
  8. if you're lucky you didn't get any errors and you can now cd /mnt/cf and then view the files with an @ls@ command
  9. if so, change to the config directory with cd conf and do another ls to reveal the config.xml file
  10. edit this file with your favorite editor (e.g. vi config.xml or ee config.xml)
  11. find the <lan> tags and add <spoofmac>01:02:03:04:05:00</spoofmac> below the <if> tag and do likewise for the <wan> tag, but change the mac, e.g. end in 01.
  12. save the file and exit the editor
  13. change back to the root directory with cd /
  14. unmount the CF to ensure it gets updated with umount /mnt/cf
  15. unplug the CF

Now you're ready to boot the Nokia 'for real' this time. Put the CF back in the Nokia and it should boot normally, provide a lease, and you should be able to login via the gui and continue the config.

Note that I tried to cheat and do the OPT1 interface also by creating that section in the XML file myself. It didn't obviously confuse m0n0wall, but it didn't respond to pings either.

All in all, pretty frustrating as I recalled it 'just worked' the first time around. In hindsight I must have got it just right - beginner's luck in action!

Good luck!

m0n0wall captive portal project

This project is complete - m0n0wall has captive portal!

Mon0wall now supports captive portal! It is available in the version 1.1 (non-beta) release. These pages will be left here for historic interest and to help others building captive portals.


The m0n0wall captive portal project is trying to add captive portal support to the already awesome m0n0wall project. Here we'll keep specs, status and any other relevant information. Ongoing discussions will take place on the m0n0wall developer mailing list, but feel free to add comments to these pages too - someone will get them to the right place.

What is it? A captive portal forces anyone who connects to a network for the first time to a specific web page. There they can find out who is providing this access and typically acknowledge the rules of access. More complex portals require a validated login but that is beyond the scope of this project.

The motivation for this project is simple: there are growing numbers of free wireless networks around the world looking for gateway software like m0n0wall which is small, fast, reliable, powerful and easy to maintain and configure. The main thing missing is captive portal support.

m0n0wall Captive Portal Design

Many thanks to the Personal Telco CaptivePortal page which formed the genesis of this page.

User Usage Flow:


  1. a new user gets physical connectivity to the network

  2. they issue a DHCP request and are assigned an IP address (all
    un-authenticated IP's are firewalled so they can only talk on the local
    segment)

  3. As soon as they open their browser they will be forced a local web page
    (see below)

  4. this web page will have a "Continue" button which must be pressed by
    the user to continue

  5. after they continue their IP is granted access through the
    firewall

Another approach to this (as done by NoCat?) is to hand out very short leases (15 secs) in another range until the user 'Continue's, and then give them a lease that lets them outside. Maybe this would be easier given the questions that Manuel raises.

Open questions:


  1. once the user does 'continue' do they have access until their lease
    expires?  (Or when?)

  2. do we need to create a separate tracking mechanism or can we piggyback on
    the IP lease mechanism? (which implies, possibly, that static IPs, or
    preassigned-by-MAC DHCP IPs are exempt?)

Admin Tools


  1. per development criteria, the captive portal page will be stored in
    config.xml and edited directly in the GUI. I propose a simple page where
    admins can specify all text on the admin page (to allow for localization).
    Note that there is no provision for a graphic due to the config.xml
    restriction


    • page heading

    • preface text

    • legal wording

    • continue button text

    Another approach would be to allow the user to supply xhtml for the whole page - but that requires them to know what code to use for the button, etc. It seems less error prone to assemble the page from seperate pieces.
  2. there should be a way to disconnect a given IP which means that

  3. there should be a way to view all IPs in use

  4. if we decide on a timeout separate from dhcp lease timeout, then we'll
    need to prompt and gather that info

Future Features

We won't try and do everything in this release. Here are some things we can
do next:


  1. automatically add throttle rules for each new IP based on a global
    default

m0n0wall Captive Portal Development Constraints

M0n0wall is succesful in large part due to the vision of its designer. Manuel provided the following guidelines that a captive portal needs to meet for him to consider adding it to the core m0n0wall release (taken from Manuel's email):

  • adds < 100 KB to the root filesystem

  • copes with low-end embedded platforms (think about a 32 MB/100 MHz
    net4511),

  • have to be put under the BSD license like the rest of m0n0wall

  • will be subject to whatever changes Manuel finds appropriate

  • all the config in one single place (config.xml)

  • all admin via the http interface (no ftp of files)

Manual also asks:


Did you check that it fits in with the rest of m0n0wall
without requiring a complete overhaul thereof? I mean - you know that
ipfilter doesn't do layer 2 filtering, and that ipfw has got a kinda
"reserved" function for the traffic shaper, which must work no matter if the
captive portal is on or off. Same goes for other functions like VPN etc. of
course.

m0n0wall Captive Portal - Links to Existing Implementations & Thoughts

A little googling reveals a few FreeBSD captive portals:

http://www.cc.saga-u.ac.jp/opengate/index-e.html
http://opensplash.qalab.com/
http://software.stockholmopen.net/index.shtml

and a bunch of others (not necessarily FreeBSD based) at:

http://www.personaltelco.net/index.cgi/PortalSoftware

I admit I'm out of my depth here when it comes to the level of hacking required for this, but I figure I know enough to be dangerous and can kick start this conversation, so here goes...

Manuel asked here:

Did you check that it fits in with the rest of m0n0wall without requiring a complete overhaul thereof? I mean - you know that ipfilter doesn't do layer 2 filtering, and that ipfw has got a kinda "reserved" function for the traffic shaper, which must work no matter if the captive portal is on or off. Same goes for other functions like VPN etc. of course.

Two different ways I've heard of implementing captive portals are:
1) change the filtering rules to re-direct newly leased IPs to a specific page, then reset the rules when they're approved
2) change the DHCP server to initially supply very short leases in a different, walled-off, subnet and then provide a new IP when they're approved.

One problem with (2) is that someone might simply create their own static IP in the right (2nd) range, but if (1) proves hard, maybe its a good 80% solution?

I think NoCatSplash is an example of (1), http://nocat.net/download/NoCatSplash/.

Perhaps a better starting point is http://www.geekspeed.net/wicap/, which is a captive portal that runs on OpenBSD (presumably closer to FreeBSD than Linux?).

Btw, for those new to m0n0wall, read the full description of its FreeBSD based underlying software and configuration.

m0n0wall Captive Portal - US$222.50 Reward for Development

There is a $222.50 reward(*), plus 1 yr NYCWireless membership and T-Shirt, to anyone who can add captive portal support and an additional $222.50 to Manuel (m0n0wall's developer) to reflect the work he's done to date and the work doubtless involved with integrating even the best made additions. I'm doing this to try and speed up the appearance of captive portal support which is vital for using m0n0wall in more community projects.

Please email me if you'd like to add to this amount.

The rules are (hopefully) simple:

  • The resulting code has to be integrated into the mainstream m0n0wall release. Hence it has to meet the criteria Manuel specifies (which is subject to change as needed).
  • The reward is paid in US dollars by whatever legal mechanism is mutually agreed upon and convenient (e.g. either directly or as equivalent goods, or whatever).
  • In the event of some confusion about who did what work, the final decision about who gets what money is mine alone. I'll do my best to be fair to all concerned. Its possible that the reward will be split amongst multiple people at my sole discretion.

Feel free to post comments directly to this page or on the m0n0wall mailing list. Thanks! Michael Mee.


(*) This total reflects $200 of my own money and, so far, $100 of an anonymous contributor, another $100 from www.openacces.org, $20 from Barry Murhpy and $25 from Benjamin Henry, as well as a contribution from NYCWireless. I'll continue to split contributions 50-50 with the contributor and Manuel.

Network IP Allocations

This page is the master IP allocation list for SoCalFreeNet networks. Per the master list at FreeNetworks, we have reserved the 10.12/16 subnet. We typically use a class C (/27) subnet at each new physical location which allows for 30 computers.

subnetlocationcomments
10.12.0.0/29small subnets used for backhaulsassignments
10.12.2.0/27K26,Golden Hillgolden hill
10.12.5/2423rd & C St,Golden Hill
10.12.10/24El Toyon Rec Center, National Cityfurther divided
10.12.11/24Golden Villas Apartments, South Parkfurther divided
10.12.12/24Mercado Apartments, Barrio Loganfurther divided
10.12.13/24Mansfield St & Collier Ave, Normal Heights
10.12.42/24Carmel Valley
10.12.45/24Ocean Beach
10.12.50/24Otay Ranch, Chula Vista

The Golden Hill network also uses 10.0.0.1/23. This will eventually be changed to the 10.12 subnet.

Pinkpalace Speakeasy DSL Nodes

subnetlocationcomments
10.12.4.0SH Rooftop
10.12.4.32SH Basement
10.12.4.64906 Basement
10.12.4.96906 Rooftop
10.12.4.128Kreigan 20th Rooftop
10.12.5.0/24Casa 23

Backhaul Subnet Allocations

The thirty-two 10.12.0.0/29 subnets are used for backhaul links within our various networks. This page is for tracking their allocation and other useful details.

Why We Have These

Our networks are generally routed networks of individual subnets rather than bridged networks. This is in large part because few of the wireless card drivers we use allow bridging directly between two wireless cards. Thus it is often necessary to have a couple of IP addresses to link between two nodes. Rather than take a large IP address space (e.g. a /24 containing up 252 addresses) we use smaller /29 subnets that allow 6 IPs. Most of the time we only need two IPs, but occaisionally we need more (e.g. a point to multi-point link, or a management IP) so we went with the slightly larger space.

Allocations

NetworkHostsBroadcastcomments
10.12.0.010.12.0.1 to 10.12.0.610.12.0.7
10.12.0.810.12.0.9 to 10.12.0.1410.12.0.15
10.12.0.1610.12.0.17 to 10.12.0.2210.12.0.23
10.12.0.2410.12.0.25 to 10.12.0.3010.12.0.31
10.12.0.3210.12.0.33 to 10.12.0.3810.12.0.39
10.12.0.4010.12.0.41 to 10.12.0.4610.12.0.47
10.12.0.4810.12.0.49 to 10.12.0.5410.12.0.55
10.12.0.5610.12.0.57 to 10.12.0.6210.12.0.63
10.12.0.6410.12.0.65 to 10.12.0.7010.12.0.71
10.12.0.7210.12.0.73 to 10.12.0.7810.12.0.79
10.12.0.8010.12.0.81 to 10.12.0.8610.12.0.87
10.12.0.8810.12.0.89 to 10.12.0.9410.12.0.95
10.12.0.9610.12.0.97 to 10.12.0.10210.12.0.103
10.12.0.10410.12.0.105 to 10.12.0.11010.12.0.111
10.12.0.11210.12.0.113 to 10.12.0.11810.12.0.119
10.12.0.12010.12.0.121 to 10.12.0.12610.12.0.127
10.12.0.12810.12.0.129 to 10.12.0.13410.12.0.135
10.12.0.13610.12.0.137 to 10.12.0.14210.12.0.143
10.12.0.14410.12.0.145 to 10.12.0.15010.12.0.151
10.12.0.15210.12.0.153 to 10.12.0.15810.12.0.159
10.12.0.16010.12.0.161 to 10.12.0.16610.12.0.167
10.12.0.16810.12.0.169 to 10.12.0.17410.12.0.175
10.12.0.17610.12.0.177 to 10.12.0.18210.12.0.183
10.12.0.18410.12.0.185 to 10.12.0.19010.12.0.191
10.12.0.19210.12.0.193 to 10.12.0.19810.12.0.199
10.12.0.20010.12.0.201 to 10.12.0.20610.12.0.207
10.12.0.20810.12.0.209 to 10.12.0.21410.12.0.215
10.12.0.21610.12.0.217 to 10.12.0.22210.12.0.223
10.12.0.22410.12.0.225 to 10.12.0.23010.12.0.231
10.12.0.23210.12.0.233 to 10.12.0.23810.12.0.239
10.12.0.24010.12.0.241 to 10.12.0.24610.12.0.247
10.12.0.24810.12.0.249 to 10.12.0.25410.12.0.255

El Toyon Network Allocation

This page details the network work configuration for the Golden Villa installation.

Subnet 10.12.10.0/24

This installation uses the 10.12.10.0/24 subnet - i.e. 10.12.10.0 to 10.12.10.255. This is further divided as follows:

subnetnetworkbroadcasthost range
computer lab10.12.10.0/2510.12.10.12710.12.10.1-126
wireless10.12.10.128/2510.12.10.25510.12.10.129-254

A Soekris 4511 is used as the main router, running m0n0wall. The two ports are assigned as follows:

portsubnetaddressfunction
eth010.12.10.0/2510.12.10.1computer lab
eth1DSL DHCPinternet connection
wi010.12.10.128/2510.12.10.129wireless AP

Other addresses used on the network:

addressdevicecomment
10.12.10.2Cisco router in lab(not yet installed)
10.12.10.3m0n0wall PPTP server address
10.12.10.4-10nonereserved for static assignments
10.12.10.32/24PPTP subnetused by PPTP clients
10.12.10.50-99computer lab DHCPway more than needed
10.12.10.130-150none(reserved for static assignments)
10.12.10.151-254wireless DHCP

MAC addresses of equipment in the network:

MACdevicecomment
00:00:24:c1:8c:34Soekris eth0LAN port
00:00:24:c1:8c:35Soekris eth1WAN port
00:02:6f:33:b2:56Soekris wi0wireless port
Cisco Routerin computer lab

Golden Hill Network Allocations

The following are the subnets and various hardware info for the Golden Hill network. It is currently incomplete.

Subnet 10.12.2.0/27 - K26 (924 26th Street)

This installation uses the 10.12.2.0/27 subnet - i.e. 10.12.2.0 to 10.12.2.31. This is further divided as follows:

A Netgate PowerG8 is used as the main AP, running m0n0wall. The three ports are assigned as follows:

portsubnetaddressfunction
sis0DHCPWAN
wi010.12.2.0/2710.12.2.1wireless 802.11b AP
ath010.12.8.248/2910.12.8.251802.11a client

802.11b config settings summary

itemvalue
LAN interfacewi0
Network10.12.2.0
Netmask255.255.255.224 (/27)
Broadcast10.12.2.31
HostMin10.12.2.1
HostMax10.12.2.30
DHCP range10.12.2.3-30
802.11b radio10.12.2.1
reserved10.12.2.2

Subnet 10.12.8.248/29 - backhaul network LC to 27th and K26

Network: 10.12.8.248/29 (255.255.255.248)
Broadcast: 10.12.8.255
HostMin: 10.12.8.249
HostMax: 10.12.8.254

This small subnet hooks the La Cresta 802.11a backhaul to Pink Palace to the 802.11a radio that services 27th and Broadway and soon also K26. The 'a' radio runs in bridged mode to avoid another subnet and for simplicity.

Allocated as follows:

addressdeviceMACcomment
10.12.8.253lc a relay eth200:00:24:C1:DE:7E
10.12.8.25427th a radio00:02:6F:20:F7:2D
10.12.8.252lc 27th a apeth0 bridged to ath0
10.12.8.251k26 a radio

Golden Villas Network Configuration

This page details the network work configuration for the Golden Villa installation.

Subnet 10.12.11.0/24

This installation uses the 10.12.11.0/24 subnet - i.e. 10.12.11.0 to 10.12.11.255. This is further divided as follows:

subnetnetworkbroadcasthost rangecomment
office lan10.12.11.0/2510.12.11.12710.12.11.1-126mostly unused
tenant wlan10.12.11.128/2510.12.11.25510.12.11.129-254

A Soekris 4501 is used as the main router, running m0n0wall. The three ports are assigned as follows:

portsubnetaddressfunction
eth010.12.11.0/2510.12.11.1office equipment
eth110.12.11.128/2510.12.11.129wireless AP
eth2Cable DHCPinternet connection

Other addresses used on the network:

addressdevicecomment
10.12.11.130main APon office rooftop
10.12.11.131repeater APon 2nd furthest apartment rooftop
10.12.11.3-10nonereserved for static assignments
10.12.11.2PPTP server address
10.12.11.32/24PPTP subnetused by PPTP clients
10.12.11.50-99office LAN DHCPway more than needed
10.12.11.130-150nonereserved for static assignments)
10.12.11.151-250wireless DHCP

MAC addresses of equipment in the network:

MACdevicecomment
00:05:9E:80:47:25HS 3000 Repeater
00:05:9E:80:47:1FHS 3000 Main AP
00:00:24:c2:2e:08Soekris eth0LAN port
00:00:24:c2:2e:09Soekris eth1WLAN port
00:00:24:c2:2e:0aSoekris eth2WAN port

Mercado network IP addresses

Mercado Network IP Information

The Mercado network consists of a master node and subnodes. Each subnode consists of an 802.11a relay radio and an 802.11b local AP radio. Each subnode has its own independent subnet and runs its own dhcp server and DNS cache. This allows easier location of problem clients (they can be readily identified by IP).

Each subnode works in a 32 address subnet and follows the same
general layout:

SettingValue
Subnet mask255.255.255.224
CIDR / length/27
802.11b radiofirst address in range
eth0 portsecond address in range
802.11a radioaddress from master node subnet
DHCPall unused addresses are allocated

The subnets are allocated from the range 10.12.12.x as shown
below:

NetworkNameHost StartHost EndBroadcast
10.12.12.0Master10.12.12.110.12.12.3010.12.12.31
10.12.12.32node110.12.12.3310.12.12.6210.12.12.63
10.12.12.64node210.12.12.6510.12.12.9410.12.12.95
10.12.12.96node310.12.12.9710.12.12.12610.12.12.127
10.12.12.128node410.12.12.12910.12.12.15810.12.12.159
10.12.12.160node510.12.12.16110.12.12.19010.12.12.191
10.12.12.192node610.12.12.19310.12.12.22210.12.12.223
10.12.12.224node710.12.12.22510.12.12.25410.12.12.255



Using the scheme above, the actual addresses assigned are:

Master Node Addresses

NameAddressComments
gateway10.12.12.1backhaul gateway
802.11a radio10.12.12.1
802.11b radio192.168.0.33connects to existing D-Link wireless router
eth010.12.12.2
broadcast10.12.12.31

Node 1 Addresses

NameAddressCommment
ath010.12.12.11802.11a backhaul radio
wlan010.12.12.33local 802.11b AP radio
eth010.12.12.34reserved, not currently used
DHCP range10.12.12.35 - 62
broadcast10.12.12.63
subnet mask255.255.255.224i.e., /27

The other nodes are configured similarly, using the following table for their 802.11a backhaul subnet address.

Backhaul subnet address allocation

NameAddressSubnet
node1 a radio10.12.12.1110.12.12.32
node2 a radio10.12.12.1210.12.12.64
node3 a radio10.12.12.1310.12.12.96
node4 a radio10.12.12.1410.12.12.128
node5 a radio10.12.12.1510.12.12.160
node6 a radio10.12.12.1610.12.12.192
node7 a radio10.12.12.1710.12.12.224

Ultra Low Budget Solar Powered Outdoor Wireless

SocalFreeNet was recently asked to propose a wireless system that could be deployed in Afghanistan by local residents funded by a microloan scheme as a "last mile" solution where phone lines are rare and internet unheard of. This page describes our (evolving) response.

This page is not up to our usual detailed standards due to the recent deployment of several key group members into Mississipi to help with Katrina relief efforts. It will be completed by eary October.

Design Criteria

After some consultation, we decided to build a project to satisfy the following criteria.

Required Features

  • absolute minimal cost
  • robust hardware
  • support VOIP phones
  • browser config

Optional Features

  • 24 hr operation
  • robust software
  • auto config

When pricing out a system, it quickly becomes apparent that the solar panel is the dominant cost with batteries a close second. One easy way to reduce that cost is to reduce the hours of operation. ALthough in most so-called "developed" countries, we expect 24 hr everything (e.g. water, electricity, gas, phone), this not so often the case in other countries even where these facilities are available. If a phone system, say, only worked for 2 hours in the morning and 2 hours at night, that would still be hugely beneficial. And of course services like email are inherently suited to partial connectivity.

Many approaches to providing solutions in remote areas obsess about reliability. For the purposes of this design, we've separated hardware reliability from software reliability. The hardware is expensive and thus should work reliably in the target conditions of heat, variable power and sub-optimal installations. However, if the software is not perfect in ways that are easily circumvented, then this can be a reasonable tradeoff. For example, if the software locks up occaisionally or needs to be restarted at regular intervals, this may be a perfectly reasonable tradeoff against price. Not ideal certainly, but the cost difference between, say, a professional Cisco Access Point at $600-900 and their consumer Linksys branded gear at $60 is arguably worth the occaisonal reboot.

Auto-configuration is highly desirable. One of the appeals of mesh networking is the concept of 'turn it on and walk away'. Unfortunately we're not at the point where this is routinely available, so for now, we're stuck with manually configuring. The next best requirement is a web-based configuration (though an argument can be made for a simple text mode also).

Design

We modified a cheap consumer based access point to function not only as an access point, but also as a client bridge and VOIP server to enable telephone communications. We chose a Linksys WRT54G. It has the following features which make it suitable for this project:

+ retail price is US$60
+ wide availability
+ it runs Linux and has a strong public community developing software addons for it
+ runs on 12V (although 6-18V is ok), so its perfect for powering from commonly available batteries such as car batteries
+ is very power efficient. There are different hardware versions, so values vary, but our 3.1 based hardware used 250mA at 12V, or about 3W. Thus it can easily be powered by a cheap 5W solar panel for as long as the sun is shining. (See also Future Ideas)

Hardware List

The following hardware is required for a single node. Two nodes are needed to make a link.

ItemPriceComment
Linksys WRT54G$60
8-18dBi Antenna$40
Outdoor Case$10
12V 5W solar panel$60trickle charge panel
12V 20 amp hour battery$2010 Amp Hour is enough
Misc hardware$5u-bolts or hose clamps, cable
PoE$5spiltter and injector
Total Price$180

Assembly Instructions

more detailed info and pictures to come

The Linksys AP is re-flashed with software from www.dd-wrt.com. The test model was built with v.23 beta released on 15 sep. One end of the link was an unmodified Linksys AP. The other end runs the DD-WRT VOIP version. It is configured to run in client-bridge mode.

Caveats

Need to check:
+ Temperature rating?
+

Improvements

The power requrements could possibly be halved if the on board switchmode power supply could be eliminated and the box powered directly from a suitable battery (somewhere around 3.3V)

It may also be possible to reduce power consumption by disabling the radio interface at regular intervals (ifdown wi0). We need to make more measurements.

Background

A common strategy for community wireless and rural wireless ISPs is to use single board computers (SBC) as the basis for access points. These can be custom programmed to perform many functions and save cost and increase flexibility. A common approach because of the low power of 802.11b and 802.11a networks is to place the computer on the pole with the antenna to reduce signal loss in the cables. Popular SBCs for wireless use include Soekris, WRAP and MikroTik.

However, while affordable in USA at approx $300-500 each in an outdoor case, it is far more expensive than consumer equipment typically costing $60. Is there a way to have our cake and eat it too? This paper suggests it is.

Many consumer access points are based on reference designs made by computer chip companies. The popular Linksys series use modified designs from Broadcom based around the popular Broadcom radio chips. These boards typically contain a low-power simple computer chip that is different from SBC designs, but still quite powerful.