Building A PBX Part 4 — Hooking Up A Rotary Phone

This article is one in a series about building a PBX. If you haven’t already, please check out the first in the series, Building A PBX Part 1 — PBX Hardware.

So now that we a touch tone phone configured to work with our PBX, let’s focus on getting a rotary phone working. As mentioned briefly in part 3 of this PBX setup, rotary phones rely on pulse dialing, while touch-tone phones rely on tone dialing. Most ATAs (Analog Telephone Adapters. If you don’t know what this is, you should really read part 3) don’t support pulse dialing, meaning that if you hooked a rotary phone up to one, you wouldn’t be able to call out from it.

A cheap adapter that supports pulse dialing is the Grandstream HT502, which you can buy used for about $20 USD on marketplaces like eBay. Not only does the HT502 support pulse dialing, but it has two independent telephone ports, allowing you to configure two different phones (with different extensions!) through one ATA. This adapter was recommended to me by FozzTexx, and I have him to thank for introducing me to it.

Now that we have our HT502, we need to do some initial setup on the PBX to communicate with it. Log in to Incredible PBX via the web interface and go to Applications >> Extensions. There will probably be some existing extensions there, but we want to make a new one. So we can press the ‘Add Extension’ button, and choose ‘Add New CHAN_SIP Extension’ from the drop-down. CHAN_SIP is an older alternative to PJSIP, both of which are SIP protocol implementations. We need to use CHAN_SIP for the HT502 as it can only connect to the PBX at port 5060 for un-encrypted SIP traffic (PJSIP listens on port 5061).

Now we can fill out information for a new extension that will correspond to our phone on the General tab. Pick a User Extension (like 4321, something users on your PBX will dial to reach our), a Display Name (a nickname to identify this extension), and a Secret (just a password for this extension). Below in User Manager Settings, we will create a new user on the PBX for this extension. Under Link to a Default User, select Create New User, and then check the box below for Use Custom Username before adding a name into the Username field (I use the extension for this). Below, enter a password in Password for New User (I use the same one specified for Secret above).

The General Tab, under Add SIP Extension.

Now click on the Voicemail tab so we can set up some basic voicemail functionality. Under Enabled, select Yes to turn voicemail on, and provide a Voicemail Password (something 4-digits long, easy to enter via your phone works well). Optionally, toggle the selections for Require From Same Extension (so you need to enter the voicemail password when calling from your extension) and Disable (*) in Voicemail Menu (which allows access to the voicemail menu remotely) to Yes and No respectively. Additionally, you can supply an Email Address for voicemail notifications to be sent to, and you can toggle Play CID to Yes, which will read back the caller’s phone number before playing a voicemail.

The Voicemail tab, under Add SIP Extension.

We will leave all other settings on this and other tabs untouched, so press the ‘Submit’ button to save this extension.

Now, navigate to Applications >> IVR to get to the IVR (Interactive Voice Response) list. We will be modifying the DemoIVR, so click on the Edit icon for DemoIVR. We will be modifying the IVR so that when someone calls into our PBX, they can dial our extension and ring our phone.

The IVR page, under Applications.

Scroll all the way to the bottom of the Edit IVR: DemoIVR page to the IVR Entries section. You should have a blank box at the bottom under the Digits column, but if not, press the button titled ‘+ Add Another Entry’ to add a blank row. In the empty row, enter your extension (from earlier) in the Digits column (I use 4321), and from the drop-down in the Destination column, choose Extensions and then select your extension from earlier in the drop-down directly below (mine reads 4321 Rotary). When done, press the ‘Submit’ button to save the IVR.

Adding an IVR Entry to DemoIVR.

Finally, press the big red ‘Apply Config’ button at the top right of the page. This will apply the new config and make our extension/IVR changes live.

Now we need to configure our HT502 device. Physical setup is very easy. Plug the telephone into the Phone1 RJ-11 jack of the HT502 using an RJ-11 cable. Similarly, plug an ethernet cable into the RJ-45 jack labeled WAN on the HT502, and plug the other end into a spare jack on a network switch in the same LAN as your PBX. Finally, connect the power adapter up between the HT502 and mains, which will automatically boot the device (it will now light up some green LEDs). At this point, it is probably a good idea to factory reset the device by holding down the reset button on the HT502with a paperclip until it restarts (about 7 seconds). This will clear any old/junk configurations.

The HT502 up and running.

By default, the HT502 doesn’t allow web administration access over the WAN port, so you must either connect a computer to the LAN port of the HT502 to access the web interface, or connect a touch-tone phone (only for this step) into the Phone1 port to enable web access. If you opt to connect a touch-tone phone, the HT502 must be configured through the built in IVR. Pick up the handset on the phone and dial *** to launch the IVR. Then, dial 12 for the menu item corresponding to WAN port access. Finally, dial 9 to toggles the WAN port access on. You should recieve an audio confirmation that access is enabled, so you can hang up the call.

Now, check your router or nmap scan your network to find the IP address of the HT502 and visit it in a browser. We will be prompted for a password (admin) which we will need to enter to get to the dashboard to continue configuration.

From the top navigation, go to FXS PORT1 to configure SIP settings. Under Account Active, select Yes. For Primary SIP Server and Outbound Proxy, enter the IP address of our PBX. For SIP User IDAuthenticate ID, and Name, enter the extension we set up earlier (I’m using 4321). Under Authenticate Password, enter our Secret (password) that we used when setting up the extension. Finally, under DNS Mode, select Use Configured IP. Everything else should be fine as the default configuration.

Configuring FXS Port1 on the HT502.

When done, scroll to the bottom of the page and press the button for ‘Update’. The page will then reload, so scroll down to the bottom and press the button for ‘Apply’ to apply our settings.

After a few seconds, you should be able to go to STATUS via the top navigation and see our extension registered with the PBX.

FXS 1 is reading as Registered.

After giving the device enough time to reboot (about 5 seconds from what I’ve seen), we can now test incoming and outgoing calls to our phone. I’m testing using an old (and filthy) Western Electric 500.

The Western Electric 500.

To test incoming calls, from an external line (like a cell phone) dial the DID number to access the PBX (as you did in part 2 and part 3). When you can hear the IVR provide you with options, enter the extension we set up (4321), and wait a second or two. Your touch-tone phone should start ringing, allowing you to pick it up and connect the call!

To test outgoing calls, pick up the handset on your touch-tone phone (the one configured in this guide to work with the PBX) and dial 1 followed by an external phone number (like your cell phone). For example, if my cellphone had the number 555-123-4567 I would dial 1-555-123-4567 to place an outgoing call  (1 has been set up to dial out). Within a few seconds, the call should come in to your cell phone (or whatever external phone you are using) and even display the outbound CID you specified earlier as the caller ID (pretty cool, huh? Talk about easy spoofing). Answer the call to test if you can hear both sides of the conversation!

If you followed along with part 3, you should now have two phones configured on the PBX. Not only can these phones make and take calls externally, but they can also call each other! From Your rotary phone, dial 1234 (or whatever extension you used when setting up your touch-tone phone) to call your touch-tone phone, or from your touch-tone phone dial 4321 (or whatever extension you used when setting up your rotary phone) to call your rotary phone!

You should now have a rotary phone configured with your PBX that can make and receive calls! If you can’t seem to properly make or receive a call, check the config on both the PBX and HT502 to see if anything looks incorrect.

 

Building A PBX Part 3 — Hooking Up A Touch-Tone Phone

This article is one in a series about building a PBX. If you haven’t already, please check out the first in the series, Building A PBX Part 1 — PBX Hardware.

So now that we have incoming and outgoing calls configured on the PBX, we can actually hook up a touch-tone phone to make and receive calls!

Your standard phone is going to have an RJ-11 jack to interface with telecommunications equipment, but of course our Raspbery Pi setup doesn’t have any sort of dial-up modem card or anything that might make some sort of sense when it comes to wiring everything up.

We need what is known as an ATA (Analog Telephone Adapter), a device that sits on the local area network and interfaces with our PBX via TCP/UDP, while also simulating a traditional telephone network connection for our physical phone to use.

I purchased a very basic OBi100 ATA device to use with my touch-tone phone. It is important to note at this point that not all adapters support older rotary phones (which use pulse dialing, but more on that in a future article); pretty much any ATA will support touch-tone phones (which use tone dialing). That said, a lot of these devices have very cryptic configurations, and it might be difficult to find how to use them. The OBi100 has been discontinued, but it is fairly well documented and available used for around $10-$20 USD on sites like eBay.

Now that we have our OBi100, we need to do some initial setup on the PBX to communicate with it. Log in to Incredible PBX via the web interface and go to Applications >> Extensions. There will probably be some existing extensions there, but we want to make a new one. So we can press the ‘Add Extension’ button, and choose ‘Add New PJSIP Extension’ from the drop-down.

Now we can fill out information for a new extension that will correspond to our phone on the General tab. Pick a User Extension (like 1234, something users on your PBX will dial to reach our), a Display Name (a nickname to identify this extension), and a Secret (just a password for this extension). Below in User Manager Settings, we will create a new user on the PBX for this extension. Under Link to a Default User, select Create New User, and then check the box below for Use Custom Username before adding a name into the Username field (I use the extension for this). Below, enter a password in Password for New User (I use the same one specified for Secret above).

The General Tab, under Add PJSIP Extension.

Now click on the Voicemail tab so we can set up some basic voicemail functionality. Under Enabled, select Yes to turn voicemail on, and provide a Voicemail Password (something 4-digits long, easy to enter via your phone works well). Optionally, toggle the selections for Require From Same Extension (so you need to enter the voicemail password when calling from your extension) and Disable (*) in Voicemail Menu (which allows access to the voicemail menu remotely) to Yes and No respectively. Additionally, you can supply an Email Address for voicemail notifications to be sent to, and you can toggle Play CID to Yes, which will read back the caller’s phone number before playing a voicemail.

The Voicemail tab, under Add PJSIP Extension.

We will leave all other settings on this and other tabs untouched, so press the ‘Submit’ button to save this extension.

Now, navigate to Applications >> IVR to get to the IVR (Interactive Voice Response) list. We will be modifying the DemoIVR, so click on the Edit icon for DemoIVR. We will be modifying the IVR so that when someone calls into our PBX, they can dial our extension and ring our phone.

The IVR page, under Applications.

Scroll all the way to the bottom of the Edit IVR: DemoIVR page to the IVR Entries section. You should have a blank box at the bottom under the Digits column, but if not, press the button titled ‘+ Add Another Entry’ to add a blank row. In the empty row, enter your extension (from earlier) in the Digits column (I use 1234), and from the drop-down in the Destination column, choose Extensions and then select your extension from earlier in the drop-down directly below (mine reads 1234 TouchTone). When done, press the ‘Submit’ button to save the IVR.

Adding an IVR Entry to DemoIVR.

Finally, press the big red ‘Apply Config’ button at the top right of the page. This will apply the new config and make our extension/IVR changes live.

Now we need to configure our OBi100 device. Physical setup is very easy. Plug the telephone into the RJ-11 jack of the OBi100 using an RJ-11 cable. Similarly, plug an ethernet cable into the RJ-45 jack of the OBi100, and plug the other end into a spare jack on a network switch in the same LAN as your PBX. Finally, connect the power adapter up between the OBi100 and mains, which will automatically boot the device (it will now light up some green LEDs). At this point, it is probably a good idea to factory reset the device by holding down the reset button on the OBi100 with a paperclip until it restarts. This will clear any old/junk configurations.

The OBi100 up and running.

Now, check your router or nmap scan your network to find the IP address of the OBi100 and visit it in a browser. We will be prompted for a username and password (admin/admin) which we will need to enter to get to the dashboard to continue configuration.

On the left navigation, click on Service Providers >> ITSP Profile A >> SIP to view our SIP configuration. Uncheck the check-boxes in the Default column for ProxyServer and ProxyServerPort. Under the Value column for ProxyServer, put the IP address of our PBX. Under the Value column for ProxyServerPort, put 5061 (The port PJSIP is using on our PBX).

SIP configuration, under ITSP Profile A.

Now scroll down to the bottom of the page and press the ‘Submit’ button. You will now be at a confirmation page, but we aren’t done just yet.

On the left navigation, go to Voice Services >> SP1 Service. On the SP1 Service page, under SIP Credentials, uncheck the boxes under the Default column for AuthUserName and AuthPassword. Under the Value column, for AuthUserName enter our extension number (I used 1234) and for AuthPassword enter our extension Secret (the password we set for the extension).

SIP Credentials, under SP1 Service.

Again, Now scroll down to the bottom of the page and press the ‘Submit’ button. On the resulting confirmation page, press the ‘Reboot’ button in the top right corner to reboot the device. This will apply the new configuration we specified after the device boots after a few seconds.

The OBi100 confirmation page.

After giving the device enough time to reboot (about 5 seconds from what I’ve seen), we can now test incoming and outgoing calls to our phone. I’m testing using an old (and filthy) Western Electric 2500.

The Western Electric 2500.

To test incoming calls, from an external line (like a cell phone) dial the DID number to access the PBX (as you did in part 2). When you can hear the IVR provide you with options, enter the extension we set up (1234), and wait a second or two. Your touch-tone phone should start ringing, allowing you to pick it up and connect the call!

To test outgoing calls, pick up the handset on your touch-tone phone (the one configured in this guide to work with the PBX) and dial 1 followed by an external phone number (like your cell phone). For example, if my cellphone had the number 555-123-4567 I would dial 1-555-123-4567 to place an outgoing call  (1 has been set up to dial out). Within a few seconds, the call should come in to your cell phone (or whatever external phone you are using) and even display the outbound CID you specified earlier as the caller ID (pretty cool, huh? Talk about easy spoofing). Answer the call to test if you can hear both sides of the conversation!

You should now have a touch-tone phone configured with your PBX that can make and receive calls! If you can’t seem to properly make or receive a call, check the config on both the PBX and OBi100 to see if anything looks incorrect.

 

Building A PBX Part 2 — Configuring Incoming & Outgoing Calls

This article is one in a series about building a PBX. If you haven’t already, please check out the first in the series, Building A PBX Part 1 — PBX Hardware.

So now we’re ready to configure our PBX to interact with the global telephone network. This means that anyone in the world can call into our PBX, and we can call out.

Much like needing an ISP to connect a home network to the Internet, we will need a VoIP provider to hook into the telephone network.

There are many VoIP providers out there, but I chose VoIP.ms based on their pricing model. At the time of writing, their most basic plan costs $0.85 USD a month for incoming calls with an additional $0.009 USD per minute, and $0.01 USD per minute for outgoing calls. You can do quite a bit of experimentation with these rates for less than the cost of a cup of coffee. However, you need to note that you can only deposit funds into your account in increments of $25.00, so you will need to invest that much up-front. This initial deposit could last you for years depending on your usage.

After registering an account and depositing funds, log in to the customer portal and go to DID Numbers >> Order DID(s) in order to register a DID (Direct Inward Dialing) number. This number is what everyone will eventually call to access our PBX. The process is relatively simple, allowing you to pick an area code, and even do some searching if you want any of the digits to be in a certain order to spell out a word, or anything like that. Of course, you have to pick from a pool of numbers that aren’t already being used.

After we have our DID number, we need to configure our DID Routing by going to Main Menu >> Account Settings and clicking the DID Routing tab. From here, we can choose a POP server that is physically close to our PBX (for lower latency) and make sure that the Routing is set to SIP/IAX for our main account. When done, hit the ‘Apply All’ button at the bottom of the page. At this point, we can also take a little time to explore all of the options under account settings. Most options can be left as they are, but some like disabling international calls can safe-guard against mis-configurations and higher bills.

Choosing a server through VoIP.ms’ control panel.

Now we need to configure the PBX to actually use VoIP.ms. Log in to FreePBX and go to Connectivity >> Trunks. Here, we will edit the VoIPms trunk that is already pre-configured (minimally) in Incredible PBX. If you don’t have this trunk already, you can press the ‘Add Trunk’ button to create a new one (chan_sip should work just fine if it prompts you). “Trunking” is a method  in telecommunications that lets a system service many clients (like a tree trunk with many branches). From our perspective, this means that many people will be able to call in and interact with our PBX at once.

The Incredible PBX Trunks page.

On the General tab, give the trunk a name and an Outbound CallerID if you’d like (the number others will see calls coming from).

The General tab, under Edit Trunk.

On the Dialed Numbers Manipulation Rules tab, edit the dial patterns so the look like the following:

()  | 1NXXNXXXXXX
(1) | NXXNXXXXXXX
()  | NXXXXXX

The Dialed Number Manipulation Rules tab, under Edit Trunks.

On the sip Settings tab, enter the following configuration using your username (a sip username emailed to you from VoIP.ms, not what you log in with), secret (password you use for VoIP.ms, unless you changed it through their Account Settings), and host (you specified this when you chose a pop server, something like newyork4.voip.ms):

username=YOUR-6-DIGIT-VOIPMS-USERNAME
type=friend
trustrpid=yes
sendrpid=yes
secret=YOUR-VOIPMS-PASSWORD
qualify=yes
nat=yes
insecure=port,invite
host=YOUR-VOIPMS-POP-HOST
fromuser=YOUR-6-DIGIT-VOIPMS-USERNAME-AGAIN
disallow=all
context=from-trunk
canreinvite=nonat
allow=ulaw

The Outgoing tab, under sip Settings, under Edit Trunk.

The sip Settings tab also has a sub-tab for Incoming (you are currently on Outgoing). Click on that tab and enter a register string in the following format:

YOUR-6-DIGIT-VOIPMS-USERNAME:YOUR-VOIPMS-PASSWORD@YOUR-VOIPMS-POP-HOST:5060/YOUR-6-DIGIT-VOIPMS-USERNAME-AGAIN

The Incoming tab, under sip Settings, under Edit Trunk.

Press the ‘Submit’ button when done.

Now go to Connectivity >> Inbound Routes and press the button for ‘Add Inbound Route’. On the General tab, modify Set Destination to IVR (Interactive Voice Response), and choose the DemoIVR. All of the other tabs should have default settings. Press the ‘Submit’ button to save.

The General tab, under Inbound Routes.

 

The Advanced tab, under Inbound Routes.

 

The Privacy tab, under Inbound Routes.

 

The Fax tab, under Inbound Routes.

 

The Other tab, under Inbound Routes.

 

Next, go to Connectivity >> Outbound Routes and press the button for ‘Add Outbound Route’. The settings here will mostly mirror your trunk configuration. On the Route Settings tab, give the route a Route Name, and set the same Route CID you did for the trunk earlier. For the Trunk Sequence for Matched Routes setting, select the VoIPms trunk.

The Route Settings tab, under Outbound Routes.

On the Dial Patterns tab, make sure to use the same dial patterns set for the trunk earlier.

The Dial Patterns tab, under Outbound Routes.

We won’t need to change any settings on the Import/Export Settings or Additional Settings tabs.

The Import/Export Settings tab, under Outbound Routes.

 

The Additional Settings tab, under Outbound Routes.

Finally, press the big red ‘Apply Config’ button at the top right of the page. This will apply the new config and make our trunk/route changes live.

At this point, you should be able to call the DID number you got from VoIP.ms from any phone and have it reach your PBX, which will lead you to an automated menu with a few options. If you don’t get a friendly greeting and a bunch of options you can choose, check your config and see if anything looks incorrect.

We will test the outgoing calling in the next part of this guide when we set up a phone to interact with the PBX!

 

Building A PBX Part 1 — PBX Hardware

I’ve always had some sort of fascination with the telephone system. There is something that excites me about large systems in general, whether it has to do with computer networking, telephony, power, or even the postal service. Phone phreaking sort of plays into this fascination—we learn how the phone network works by poking and prodding until something interesting is discovered.

In 2012 or so, I set up by own PBX (or private branch exchange) using an original 256MB Raspberry Pi model B. The system worked great! I was able to take and place calls, hook in my trusty Western Electric phone, and play around with all of the different features I could figure out. Eventually, the system was powered down and put into a bin, mostly forgotten until earlier this year.

A few months ago I decided to resurrect my trusty PBX by completely recreating the original functionality I attained six years ago, with a few other little additions thrown in. I’ve decided to start this series of guides to document what I’ve been able to figure out (and maybe some stuff I haven’t yet). It’s for you as much as it is for me. Some of the configuration I’ve seen can be cryptic, and documentation disappears from the web constantly. It’s good to keep a set of internal documents if the system ever goes poof and need to be rebuilt. As fun as they may be, I aim to avoid those late nights gazing hopelessly at a console for who-knows-how-many hours while I try to derive some logical solution out of an elusive issue.

If you don’t know what a PBX is, it is easily equatable to a networking switch: the little box on your home network with a bunch of ethernet cables clipped into it. Your network devices communicate with one another through the switch, and possibly with other devices over the Internet if the switch is connected up to a router and modem. A PBX operates in a similar matter, with phones (physical or software-based) connecting to one another through it at a local site or to other phones in the telephone network, all over the world.

I wanted to accomplish a few things with my PBX, so I split functionality out into a few different areas:

1) Create a PBX using a spare Raspberry Pi. (DONE, see part 1. Wait, you’re already there.)
2) Be able to accept incoming calls. (DONE, see part 2)
3) Be able to make outgoing calls. (DONE, see part 2)
4) Connect a physical, touch-tone phone to the PBX. (DONE, see part 3)
5) Connect a physical, rotary phone to the PBX. (DONE, see part 4)

Additionally, I may expand this functionality further. I could hook up some sort of modem, install software on my PC so it can act as a phone, or even run a fax machine (thrilling, I know)!

Being that this is a learning experience, I’m also committed to spending as little money as possible (within reason). With a technology as old as telephony, there are a lot of cheap/used devices out there that can be had in abundance.

So, let’s get started with the PBX setup. Originally, I ran my installation on an older Raspberry Pi model B. It worked great then, but is definitely showing its age as software gets more and more bloated complex. In the world of open-source PBX software, the two big names you will probably hear are FreeSWITCH and Asterisk. People could discuss the pros and cons of each for hours, but for simplicity, I’ve chosen to use Asterisk as my backing system. Asterisk itself is a very old and capable piece of software, but an administrator can only configure it via editing text configuration files. This is a great way to learn the software at a low level, but I prefer to admin the system using FreePBX, a web-based GUI that sits atop Asterisk, for convenience and speed. While you can still run this fairly well on an original Raspberry Pi model B, I’d recommend at least using a Raspberry Pi 2 (like I am) if not something newer. Of course, you will also need a power adapter and a microSD card (16 GB is more than enough)

There are a few distributions that couple Asterisk/FreePBX on the Raspberry Pi, but I will be using the Debian-based Incredible PBX. Installation is easy enough if you have an SD card inserted on an exisiting Linux machine. Just make sure you do fdisk -l to determine the location of your SD card.

$ wget -O incrediblepbx13.13-raspbian8.zip https://downloads.sourceforge.net/project/pbxinaflash/IncrediblePBX13-13%20for%20Raspbian/incrediblepbx13.13-raspbian8.zip?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fpbxinaflash%2Ffiles%2FIncrediblePBX13-13%2520for%2520Raspbian%2Fincrediblepbx13.13-raspbian8.zip%2Fdownload&ts=1531600211
$ unzip incrediblepbx13.13-raspbian8.zip
$ sudo dd bs=1m if=incrediblepbx13.13-raspbian8.img of=/dev/disk4

After dd completes, you can pop the SD card into your Raspberry Pi and boot it up.

The Raspberry Pi PBX is online!

Check your router or nmap scan your network to find the IP address of the new RPi machine and visit it in a browser. The FreePBX UI should pop up and allow you to login with admin/admin.

After a successful login, you will be presented with the FreePBX dashboard.

 

Hyperboria 101 – Moving Through The Mesh

This article was originally written for and published at N-O-D-E on February 14th, 2016. It has been posted here for safe keeping.

HYPERBORIA 101 – MOVING THROUGH THE MESH

Hyperboria is a network built as an alternative to the traditional Internet. In simple terms, Hyperboria can be thought of as a darknet, meaning it is running on top of or hidden from the existing Internet (the clearnet). If you have ever used TOR or I2P, it is a similar concept. Unlike the Internet, with thousands of servers you may interact with on a day-to-day basis, access to Hyperboria is restricted in the sense that you need specific software, as well as someone already on the network, to access it. After configuring the client, you connect into the network, providing you with access to each node therein.

WF8CEM9

INTRODUCTION

Hyperboria isn’t just any alternative network, it’s decentralized. There is no central point of authority, no financial barrier of entry, and no government regulations. Instead, there is a meshnet; peer-to-peer connection with user controlled nodes and connected links. Commonly, mesh networks are seen in wireless communication. Access points are configured to link directly with other access points, creating multiple connections to support the longevity of the network infrastructure and the traffic traveling over it. More connections between nodes within the network is better than less here. With this topology, all nodes are treated equally. This allows networks to be set up inexpensively without the infrastructure needed to run a typical ISP, which usually has user traffic traveling up several gateways or routers owned by other companies.

But what is the goal of the Hyperboria network? With roots in Reddit’s /r/darknetplan, we see that the existing Internet has issues with censorship, government control, anonymity, security, and accessibility. /r/darknetplan has a lofty goal of creating a decentralized alternative to the Internet as we know it through a scalable stack of commodity hardware and open source software. This shifts the infrastructure away from physical devices owned by internet service providers, and instead puts hardware in the hands of the individual. This in itself is a large undertaking, especially considering the physical distance between those interested in joining the network, and the complexities of linking them together.

While the ultimate idea is a worldwide wireless mesh connecting everyone, it won’t happen overnight. In the meantime, physical infrastructure can be put in place by linking peers together over the existing Internet through an overlay network. In time with more participation, wireless coverage between peers will improve to the point where more traffic can flow over direct peer-to-peer wireless connections.

ADVANTAGES

The Hyperboria network relies upon a piece of software called cjdns to connect nodes and route traffic. Cjdns’ project page boasts that it implements “an encrypted IPv6 network using public-key cryptography for address allocation and a distributed hash table for routing.” Essentially, the application will create a tunnel interface on a host computer that acts as any other network interface (like an ethernet or wifi adapter). This is powerful in the way that is allows any existing services you might want to face a network (HTTP server, BitTorrent tracker, etc.) to run as long as that service is already compatible with IPv6. Additionally, cjdns is what is known as a layer 3 protocol, and is agnostic towards how the host connects to peers. It doesn’t matter much if the peer we need to connect to is over the internet or a physical access point across the street.

All traffic over Hyperboria is encrypted end-to-end, stopping eavesdroppers operating rogue nodes. Every node on the network receives a unique IPv6 address, which is derived from that node’s public key after the public/private keypair is generated. This eliminates the need for additional encryption configuration and creates an environment with enough IP addresses for substantial network expansion. As the network grows in size, the quality of routing also improves. With more active nodes, the number of potential routes increases to both mitigate failure and optimize the quickest path from sender to receiver.

Additionally, there are no authorities such as the Internet Assigned Numbers Authority (IANA) who on the Internet control features like address allocation and top level domains. Censorship can easily be diminished. Suppose someone is operating a node hosting content that neighboring nodes find offensive, so they refuse to provide access. As long as that node operator can find at least one person somewhere on the network to peer with, he can continue making his content accessible to the whole network.

PEERING

One of the main differences between Hyperboria and networks like TOR is how connection to the network is made. Out of the box, running the cjdns client alone will not provide access to anything.

To be able to connect to the network, everyone must find someone to peer with; someone already on Hyperboria. This peer provides the new user with clearnet credentials for his node (an ip address, port number, key, and password) and the new user enters them into his configuration file. If all goes to plan, restarting the client will result in successful connection to the peer, providing the user access to the network.

However, having just one connection to Hyperboria doesn’t create a strong link. Consider what would happen if this node was experiencing an outage or was taken offline completely. The user and anyone connecting to him as an uplink into the network would lose access. Because of this, users are encouraged to find multiple peers near them to connect to.

In theory, everyone on the network should be running their node perpetually. If a user only launched cjdns occasionally, other nodes on the network will not be able to take advantage of routing through the user’s node as needed.

With the peering system, there is no central repository of node information. Nobody has to know anyone’s true identity, or see who is behind a particular node. All of the connections are made through user-to-user trust when establishing a new link. If for any reason a node operator were to become abusive to other nodes on the network, there is nothing stopping neighboring nodes from invalidating the credentials of the abuser, essentially kicking them off of the network. If any potential new node operator seemed malicious, other operators have the right to turn him away.

MESHLOCALS

The most important aspect of growing the Hyperboria network is to build meshlocals in geographically close communities. Consider how people would join Hyperboria without knowing about their local peers. Maybe someone in New York City would connect to someone in Germany, or someone in San Franscisco to someone in Philadelphia. This creates suboptimal linking as the two nodes in each example are geographically distant from each other.

The concept of a meshlocal hopes to combat this problem. Users physically close together are encouraged to form working groups and link their nodes together. Additionally, these users work together to seek new node operators with local outreach to grow the network. Further, meshlocals themselves can coordinate with one another to link together, strengthening regional areas.

Meshlocals can also offer more in-person communication, making it easier to configure wireless infrastructure between local nodes, or organize actions via a meetup. Many meshlocals have gone on to gain active followings in their regions, for example NYC Mesh and Seattle Meshnet.

INSIDE THE NETWORK

After connecting to Hyperboria, a user may be at a loss as to what he is able to do. All of these nodes are connected and working together, but what services are offered by the Hyperboria community, for the Hyperboria community? Unlike the traditional Internet, most services on Hyperboria are run non-commercially as a hobby.

For example, Hyperboria hosts Uppit: a Reddit clone, Social Node: a Twitter-like site,and HypeIRC: an IRC network. Some of these services may additionally be available on the clearnet, making access easy for those without a connection to Hyperboria. Others are Hyperboria-only, made specifically and only for the network.

As the network grows, more services are added while some fade away in favor of new ones or disrepair. This is all community coordinated after all; there is nothing to keep a node operator from revoking access to his node on a whim for any reason.

FUTURE

As previously mentioned, the ultimate goal of Hyperboria is to offer a replacement for the traditional Internet, built by the users. As it stands now, Hyperboria has established a core following and will see more widespread adoption as meshlocals continue to grow and support users.

Additionally, we see new strides in the development of cjdns with each passing year. As time has gone on, setup and configuration have becomes simpler for the end-user while compatibility has also improved. The more robust the software becomes, the easier it will be to run and keep running.

We also see the maturation of other related technologies. Wireless routers are becoming more inexpensive with more memory and processing power, suitable for running cjdns directly. We also see the rise of inexpensive, small form factor microcomputers like the Raspberry Pi and Beaglebone Black, allowing anyone to buy a functional, dedicated computer for the price of a small household appliance like an iron or coffee maker. Layer 2 technologies like B.A.T.M.A.N. Advanced are also growing, making easily-configurable wireless mesh networks simple to set up and work cooperatively with the layer 3 cjdns.

CONCLUSION

Hyperboria is an interesting exercise in mesh networking with an important end goal and exciting construction appealing to network professionals, computer hobbyists, digital activists, and developers alike.

It’ll be interesting to see how Hyperboria grows over the next few years, and if it is indeed able to offer a robust Internet-alternative for all. Until then, we ourselves can get our hands dirty setting up hardware, developing software, and helping others do the same. With any luck, we will be able to watch it grow. One node at a time.

SOURCES

https://github.com/cjdelisle/cjdns
https://docs.meshwith.me
https://www.reddit.com/r/darknetplan/comments/1vq87d/project_meshnet_for_everyone_a_complete/
https://www.reddit.com/r/dorknet/comments/xry23/this_is_my_first_time_hearing_about_darknet_i/

––
BY MIKE DANK (@FAMICOMAN)

 

Just Meshing Around

This article was originally written for and published at Philly Mesh on January 28th, 2014. It has been posted here for safe keeping.

The first time I remember hearing about mesh networks was sometime around 2005. Through rigorous searches, I had finally tracked down a complete run of Seattle Wireless TV, a proto-podcast that ran from July of 2003 until June of 2004. This hunt was undergone for my own personal interests; I was and am something of an online-video-series junkie, and I have since posted all the episodes for download on Archive.org where they will be preserved for anyone to watch for years to come. The topics of these episodes varied from interviews with operators, to wardriving tips, and even antenna creation. Pretty popular topics back then, but now the show serves as a fantastic time capsule from a technologically-simpler time. Even ten years ago, “getting into” wireless networking seemed radically different. Everyone tried their hand at wardriving, embraced 802.11g, and wired cantennas to their Orinoco cards. Here is a prime example of the times — some Seattleites setting up their own mesh network in 2002. Essentially, Wi-Fi was king and you could have it in your own home. I didn’t end up jumping into the mix until years later. I got my first laptop in 2006 and even then I usually embraced a wired connection. Watching these video shows was my own little outlet into what the cool kids were doing. It wasn’t until a little later that I decided it was time to play.

In 2007, I received a La Fonera router from Fon courtesy of a free giveaway (I actually managed to snag one on the very last day they offered the promotion). I thought it might be cool to join their Wi-Fi collective, but I was much more interested in what else I could do with the device. The day it came in the mail I promptly researched what others were doing with it and joined in on the popular act of flashing dd-wrt firmware onto the little device to get some expanded functionality. This process was harder than I expected and my lack of knowledge on the subject at the time showed. After many frustrating hours  flipping back and forth between telnet, tftp, and IRC chatter  I had a fully functioning dd-wrt router of my very own. While this was a feat all in itself, it went on to inspire me to see what I could do with other routers. I soon grew a little collection of second-hand Linksys WRT54G routers to tinker with and take up space on my work bench. I tried out different firmwares like OpenWrt and Tomato and always tried to keep something new running on a separate network for me to play with so I didn’t accidentally bring down the whole house’s internet access with a bad flash or misconfiguration.

Years later, I ended up working with wireless technology in a professional capacity. However, I was no longer handling everyone’s favorite suite of 802.11 protocols but the new-fangled 802.15.4 for low-rate wireless personal area networks. I focused on the ZigBee specification and its derivatives, which were and are a popular choice for technologies like home automation systems, wireless switches, electrical meters, etc. I spent months toying with the technology, working to understand the encryption, capture and dissect the traffic, and create and transmit my own custom packets. While the technology itself was enough to hold my interest, I felt a draw toward the technology’s use of wireless mesh networking to create expansive networks.

This wasn’t my first foray into the world of mesh networking per se. Prior to my work with ZigBee, I focused on meshing briefly to combat network interruption when creating the topology for a hobby-run IRC network I was administrating. This was, however, my first time applying mesh ideas wirelessly. I quickly learned the ins and outs of the Zigbee specification and the overarching 802.15.4 standard, but I couldn’t help thinking about how these technologies applied to Wi-Fi and how much fun an 802.11 mesh network would be.

Soon, I discovered the existence of Philly Mesh, a Philadelphia-based mesh network in its infancy that connected with Hyperboria: a global decentralized network of nodes running cjdns. I made a few posts to its subreddit, added my potential node to the map, and ordered some TP-Link routers to play with. While the group seemed to be gathering support, it ultimately (and much to my dismay) stagnated. Expansion stopped and communication dwindled. People disappeared and services started to fall apart. Over the next year I tried to work through getting my own node up but hit several setbacks. I bricked a router, ran into configuration problems, suffered from outdated or missing documentation, and then bricked another router. Eventually, after a seemingly endless process of torment and discovery, I connected to the network using a Raspberry Pi. My first cjdns node was up.

After this, I made a push to revive the Philly Mesh project. I constructed a new website, revived some of the services, and started my push for finding community involvement. Though it stands to be a slow process, things are coming together and people are coming forward. Whether or not we will have a thriving mesh network in the future is unknown, but the journey in this case interests me just as much as the destination.

As of now, I’m embracing wireless mesh as a hobby. I still have a pile of routers to play with and test firmware on, and am getting new hardware every so often. As for the bricked TP-Links, I’ve picked up USB/TTL adapter in an attempt to correct my wrongdoings and get cjdns set up properly. I’m also constantly playing with my settings on the Raspberry Pi installation as I have to firewall things off, assure reliability for an application crash, and generally make sure things are running smoothly. Additionally, I’ve been toying around with different technologies to set up an access point through the Raspberry Pi such as a USB/Ethernet adapter to bridge a connection between an old router and the Pi, and a USB dongle to create an access point in a more direct model. Aside from the Raspberry Pi and assorted routers, I’m also interested in getting cjdns installed and configured on plug computers like the Pogoplug and single board computers like the BeagleBone Black.

Where will all of this take us? Hopefully this is a stepping stone on the way to building a thriving local mesh, but the future is unknown. I’d love to get some nodes set up wirelessly within the city, but I’m only one person out in the suburbs tinkering away. While I’m sitting here learning about setting up devices, I only hope to share what I find with others who might benefit from having someone else carve out an initial path. I, by myself, can work to build a local mesh but it wouldn’t be nearly as robust or expansive as if I worked within a team sharing ideas and experience.

If you’re reading this, you have the interest. You may not have the know-how, the money for high-tech equipment, or a location nearby other potential operators, but you have the desire. If there’s anything that I’ve learned throughout my ongoing mesh adventure, it’s that good things take time and nothing happens overnight.

Tomorrow, we can work to build a strong mesh for our city. As for today, why don’t we get started?

 

Mining Bitcoin for Fun and (Basically No) Profit, Part 2: The Project

If you have not yet, please read the first article in this series: Mining Bitcoin for Fun and (Basically No) Profit, Part 1: Introduction

I have a few Raspberry Pis around my house that I like to play with – four in total. Prior to this idea of a Bitcoin project, I had one running as a media center and another operating as a PBX. Of the remaining two, one was an early model B with 256MB of RAM while the other was the shiny new revision sporting 512MB. I wanted to save the revised model for the possibility of a MAME project, so I decided to put the other, older one to work. It would help me on my quest to mine bitcoins.

Raspberry Pi Model B

Raspberry Pi Model B

But what is mining exactly you may ask? Bitcoin works on a system of verified transactions achieved through a distributed consensus (a mouthful I know). Every transaction is kept as a record on the Bitcoin block chain. Mining is more or less the process of verifying a “block” of these transactions and appending them to the chain. These blocks have to fit strict cryptographic rules before they can be appended, else blocks could be modified and invalidated. When someone properly generates one of these blocks, the system pays them in a certain amount of bitcoins (currently 25). This process repeats every ten minutes.

I knew that at this stage in the mining game I had to go with an ASIC setup and I new I wanted to run it off of my Raspberry Pi. Simple enough. The Raspberry Pi is a fantastic platform for this considering its price, power consumption, and horsepower. For mining hardware, I decided to buy the cheapest ASIC miners I could get my hands on. I found the ASICminer USB Block Eruptor Sapphire for the low price of $45 on Amazon. They cost more money on eBay and I couldn’t buy them from any sellers with Bitcoin because I didn’t have any (and didn’t want to bother with exchanges) so this seemed like the way to go. The Block Eruptor could run at ~330MHash/s, which is pretty hefty compared to GPU mining and at a fraction of the price. It is also pretty low power, using only 2.5 watts.

ASICminer USB Block Eruptor

ASICminer USB Block Eruptor

So I figured that I would get one of those, but also devised a more complete and formal parts list:

  • 1 x Raspberry Pi
  • 1 x ~4GB SD Card
  • 1 x Micro USB Cable
  • 1 x Network Cable
  • 1 x Powered USB HUB
  • n x USB Block Eruptor

That’s the basics of it. I already had the Raspberry Pi, and the necessary cables and SD card. These were just lying around. I needed to purchase a USB hub, so I bought a 7-port model for about $20. The hub needs to be powered as it will be running both the Raspberry Pi and the USB Block Eruptor. Considering power, the Raspberry Pi claims to draw somewhere around 1-1.2 Amps maximum while the USB Block Eruptor claims to draw 500 milliAmps maximum. I tested things out using my Kill A Watt and found that my setup with the USB hub, Raspberry Pi, and three USB Block Eruptors draws only 170 milliAmps and uses only 12.5 watts! So the projected power usage seems off for me, but I can’t guarantee the same results for you.

After buying my USB Block Eruptor on Amazon, I got it in about a week. The day after I got it and made sure it was working, I ordered two additional units to fill out the hub a little more.

Software

To do anything with Bitcoin, we’re first going to need a wallet and a Bitcoin address. Which wallet software you use is up to you. For desktop apps, there is the original Bitcoin-qt, MultiBit, and other third-party wallets. There are mobile applications like Bitcoin Wallet for Android, and even web-based wallets like BlockChain that store your bitcoins online. Figure out what client works best for you and use it to generate your Bitcoin address. The address is a series of alphanumeric characters that act as a public key for anyone to send bitcoins to. This address is also linked to a private key, not meant to be distributed, which allows the address holder to transfer funds.

In order to use the USB Block Eruptor, we’re going to need mining software. One great thing about using the Raspberry Pi as a platform is that someone has already made a Bitcoin mining operating system called MinePeon, built on Arch Linux. The distribution combines existing mining packages cgminer and BFGminer with a web-based GUI and some nice statistical elements. You’re going to need to download this.

To copy the operating system image file onto the SD card for your Raspberry Pi, insert the card into your computer and format it with the application of your choosing. Since I did this with a Windows system, I used Win32 Disk Imager. It is fairly straight forward: choose the image file, choose the drive letter, hit write, and you’re done.

Win32 Disk Imager

Win32 Disk Imager

Okay, software is ready. Now to set up the Raspberry Pi, insert the SD card into the Pi’s slot. To power the Pi, plug your Raspberry Pi into one of the USB ports via Micro USB cable. Then, plug the USB hub into one of your Raspberry Pi’s free USB ports. Any USB Block Eruptors you have can be plugged into the remaining USB ports on the hub (not the Raspberry Pi directly), but keep heat flow in mind as they get pretty hot. Next, connect the Raspberry Pi to your home network. Finally, plug your hub’s power cord in and let the Pi boot up.

To go any further, you will need to determine your Raspberry Pi’s IP address. If your router allows for it, the easiest way is to log in to it and look for the new device on your network list. Alternatively, plug a monitor or television into your Raspberry Pi and log directly into the system using minepeon as the user and peon as the password. From there, run the ifconfig command to retrieve the internal IP address.

Navigate to MinePeon’s web interface by typing the IP address in your browser. You’ll have to log in to the web interface using the previously defined credentials: minepeon as the user and peon as the password. You should be presented with a screen similar to this (But without the graphs filled in):

MinePeon Home Screen

MinePeon Status Screen

If you receive an in-line error about the graphs not being found, don’t worry. You just need to get mining and they will generate automatically, making the message go away.

Configuration

In order to utilize the software, you will now need to register with one or more Bitcoin mining pools. Mining pools work using distribution. The pool you are connected to will track the progress of each user’s attempt at solving a block for the block chain. On proof of an attempt at solving the next block, the user is awarded a share. At the end of the round, any winnings are divided among users based on how much power (how many shares) they contribute. Why use a mining pool at all? Payout usually only happens for one user when a block is solved. It can be very difficult for a user to mine a bitcoin, even after months of trying as the odds of success are always the same. Mining independently offers the opportunity of a giant payout at some point, but pooled mining offers smaller, more regular payouts.

Mining pools can differ greatly in how the payout is divided. I’d advise that you do some research as to which method works best for you. Alternatively, you could go about setting up your own mining pool, but I wouldn’t advise it without a substantial amount of processing power unless you’re willing to wait for a payout (if it even comes at all).

Anyway, I chose two mining pools: Slush’s pool (my primary) and BTC Guild (my fail-over in case my primary is down).

Registering with a mining pool is as simple as registering with any other website. After completing registration, you will be supplied with a worker name/password and the server address. These credentials can then be pushed into the MinePeon Pools configuration like so:

MinePeon Pool Settings

MinePeon Mining Pools

Next go to the Settings page and change your password for the MinePeon web interface (it’s a good idea), the timezone (this is buggy right now and won’t look like it’s working on the settings page) and any time you want to donate to the MinePeon maintainer (if any).

MinePeon Settings

MinePeon Settings

If everything is configured correctly, within a few hours (or instantly), you should see some activity on your MinePeon Status screen. Additionally, be sure to check your account on the mining pool you signed up with to make sure everything is working as expected.

My MinePeon Pool & Device Status

My MinePeon Pool & Device Status

My Slush's Pool Worker Status

My Slush’s Pool Worker Status

Now, just sit back and let your machine go to town. The only thing you have to do at this point is make sure the USB hub continues to get power (don’t let anyone unplug it) and it should run continuously. On your first day or two, it may take a while before your status update and payout will take even longer.

My mining rig, hub side

My mining rig, hub side

My mining rig, Raspberry Pi side

My mining rig, Raspberry Pi side

Most mining pools offer status tracking for your payout, so you should be able to see how things are progressing fairly quickly. As of this article being published, I receive a payout of 0.01 Bitcoin near every 24-30 hours while running three USB Block Eruptors.

 

The Summer Backlog

Every Summer I speculate that I’m going to have an unbelievable amount free time. It will always be so fantastic and freeing. I’ll be done school, working a stress-free job, and there will be so much unscheduled time that I’ll just get bored and come up with hundreds of new tasks for myself.

This never happens.

Well, the having-free-time-thing never happens but I do take on new activities anyway. After enough time, I end up with a bunch of things I’ve been meaning to do, and work on them impulsively at sporadic intervals. Everything moves forward, slow and steady, but in an agonizing and chaotic fashion.

I do make time for my projects, but the available time is fluctuating as the years go by. When I started these projects all I had was time and energy, but no money. Now, I seem to find myself with a modest amount of money and energy, but no time. Eventually, I’m doomed to have time and money, but no energy. This is the vicious cycle, and here I find myself in the second stage.

Without organization, every project falls on its face. I’m a big proponent of organization, especially when I have so much going on. After a while, you just need to keep track and work smarter (or risk meeting some men who want to put you in a straitjacket). Below, I’ve outlined (to the best of my ability) the various projects I’m working on, and where they need to go next. Hopefully this not only helps me stay on track but also gives you something to yell at me about the next time you see me.

Obsoleet
I’ve actually had most of an episode filmed for a long time by this point. The only problem that I faced was the audio cut out at the end of one of the shots. After I redo it, which I wanted to do anyway, the footage should be mostly set to go into editing. Additionally, I’d like to film a little skit for the intro if I can manage it. Editing usually doesn’t take a whole lot of time, though I do want to try out some new software and I have to cut a brand new introduction. High definition video also proves to be more of a hassle and take some more (read unplanned) time.

Anarchivism
This one is going along pretty well, especially recently. On the scanning side of things, I have plenty of stuff coming in but not a lot going up. The scanner I have is awful when it comes down to conducting magazine scans and I’ll have to look for something beefier before going full tilt on my library. As an aside, I’ve more or less created the most complete wiki of hacker magazines complete with information on them as far as I can tell. With my current rig, I can pump out some more Blacklisted! 411 issues without much hesitation.

Going after Revision3 has slowed a little, but I can get back into it with some one-liners soon. Getting to other odds and ends comes and goes as I find them. The only section that could have hours poured into it is the hacker con category. The videos I find not only have different ways of being obtained but also get updated with a new crop annually, so everything is constantly in flux. I’m trying to hunt down some of the more difficult stuff as well as fill in actual information about the conferences. If you want to help out, please do.

TechTat
This one is more or less dead due to lack of interest. While it was cool having a collaboration site for retro tech, it lost its luster after a few months. I considered turning TechTat into an audio podcast but I’m not sure how that would turn out. I’m certain I can find some use for the concept.

ChannelEM
ChannelEM keeps trucking on, but is prone to frequent crashing. It does seem to get more stable after software updates, but still ultimately hangs. I want to take a look at the scripting done to run the station and see if I can put in any fail-safes to stop the crashing. CEM also needs a rotation update with any new episodes. Further, the idea of getting new shows to join up is a bit fruitless now, but the site does well as it stands. For no real reason at all, I’d like to see if I can add on to the existing scripts and create a JSON API with scheduling information.

Moonlit has also been working on some very interesting video projects that I’d like to integrate which would completely change the look and feel of both the site and the content.

Raunchy Taco
More or less in a standstill. The stability fluctuates and there isn’t that much going on there anyway. The IRC server is really only kept up if Ethan, Pat, and myself need a place to chat. For a network that has been off-and-on for 6-7 years, we have empty periods like this all the time. I’d like to just keep it up if I can.

The IPTV Archive
More or less in waiting. I put up a hefty amount of content, and then ultimately mirrored it to Internet Archive where it can live forever. If I had the time, I’d spend it doing more detective work for the missing shows- there is always more detective work to do. There are probably a half dozen more smaller shows I could throw up at some point but nothing too pressing.

Additionally, when I started the site I used Blip because it had (arguably) the best quality at the time. Now, YouTube has eclipsed it. There was a bit of panic a few months back about some Blip channels being closed down for no reason and I have to entertain the idea that this could happen to me. If that happens, the whole library would likely need to be moved to YouTube. A big move, but likely a nice one for the content.

Moreover, I’ve also considered moving the content over to Anarchivism as it would be a much more flexible platform.

House Keeping and Solo Projects
I enjoy writing and I’d to do more of it. Besides just being more active here, I’d like to get back into writing for other outlets. I’m thinking of more for The New Tech, and another for my local 2600 group. I’ve also been playing around with Medium (I like the concept but it still might be pretentious dribble) and would like to publish another article through it. I’m looking into 2-3 print publications as well if I can come up with the right topics and go into those pieces with the right energy.

Aside from my web work, I have a bunch of little, lower-profile things going on that I need to get out of the way.

I recently got a display for my Apple G5, so I can let it run as a capture PC for video transfers. I already have an ADVC box hooked up and the machine captures great… but it needs a monitor hooked up to run. Then, I can do more video transfers which can ultimately pop up in other places (Maybe a found footage section on Anarchivism).

I want to set up a dedicated headless Linux server for staging web projects amongst other things. I might also have it just run wget scripts all day or some custom web crawlers or who knows what else.

I have an old cocktail arcade cabinet that needs some love. If the original electronics are beyond repair, it would be nice to outfit the cab with new hardware and set up a MAME machine.

More Raspberry Pi projects would be nice. I like having the Incredible Pi set up as a PBX but I feel like I could do more with it. I have another Pi set up as a media center that I use often. I’m currently on setting up a Bitcoin mining rig with another and still have many more ideas. Raspberry Pi cluster? Telnet BBS? BBS hooked into the PBX? The possibilities are endless.

Paranoia kicks in with regard to my data. I have a dozen or so terabytes worth and I need to clean data off of old drives, sort it, duplicate it, and duplicate the data that’s already there. To make matters worse, I’m constantly downloading more.

A CJDNS Meshnet node has also been in the works for a long time. I tried to set up my first one on a PogoPlug and while I eventually got the software to compile, I couldn’t connect to anybody. It may be time for another try, and possibly on a “normal” box before adapting it to the PogoPlug.

I’m experimenting with a few more programming languages and development environments. Recently, I’ve looked into running some Go, and am learning a great deal of JavaScript. I’d like to look into C# and also play with the Unity engine. Aside from these, I’m reasonably proficient at Android development and might be tying this in with another project of a friend’s.

And the list goes on.

 

There’s a lot of things here- a hell of a lot of things. I’d be lying if I said that there weren’t going to be even more. Hopefully, as I now have a nice little outline, I’ll be able to zero-in my focus and get some work done.

In the meantime, sit back and enjoy the show.

 

Documentaries I’d Like to See Before I Die (Or Everyone Forgets)

I’d like to think that I have something of a second nature when it comes to whether or not there is a documentary made or in production for any of my disjointed hobbies and interests. It’s not one of those skills you showcase in your job interview, but I seem to have this knack for religiously crawling the web in search for films I think I’d enjoy. Surprisingly, and to my great pleasure, a lot of these fringe interests I posses already have films about them. Awesome. However, there are a few that simply do not- or, have a film that doesn’t satiate my particular appetite.

So, for my sanity, I made a list of the topics I’d personally like to see filmed. And, in some cases, some topics I’d probably find gratification in filming myself.

Written below is that very list. Think of this more as a way of me getting the thoughts from my head to paper as opposed to a list of full-bodied explanations and fleshed-out ideas.

Demoscene. There are already a few demoscene documentaties out there. For example, The Demoscene Documentary is about the demoscene in Finland and Moleman 2 is a demoscene documentary focusing mainly on Hungary. While these are in fact good films, they each have a specific scope. From what I gather, the demoscene can be radically different from country to country, making it difficult to understand as a whole when only presented with a few of its parts. I’d propose an episodic piece showcasing the demoscene in a variety of countries – each country having its own segment. While these existing documentaries have touched on Finland and Hungary, there are still Germany, USA, Denmark, and Norway to consider (and probably others).

Bitcoin & Digital Currency. We’ve all heard of Bitcoin by now, especially as it makes waves at it’s current high value. However, Bitcoin itself has an interesting past and makes an interesting statement. If you do any detective work about how Bitcoin came to be, you will be sucked up into a mysterious story about how nobody knows the identity of the creator or what happened to him. The conspiracy theories are vast and plenty. We also touch on the interesting issue of an unregulated worldwide currency, governments attempting regulation, bitcoin-mining malware botnets, attacks on exchanges, etc. How about how crazy some people go with their mining setups? Dozens of caseless computers fillied with graphics cards- a cyberpunk daydream turned reality. How about using FPGAs and these new ASIC rigs? Now, that’s just bitcoin. There are numerous other digital currencies out there such as the newer litecoin, or even e-gold (Created in 1996). Digital currency has been around longer than most people think.

Cypherpunk. The cypherpunk movement does for cryptograhy what the cyberpunk scene did for personal computing. While cypherpunks have been around for decades, the interest within the scene has been renewed and pushed towards the mainstream more recently. Going back to “A Cypherpunk Manifesto” and the cypherpunk mailing list, we see early discussions of online privacy and censorship, paving the way for Bitcoin, Wikileaks, CryptoParty, Tor, 3D-printing of weaponry, etc.

Usenet. Started in 1980, Usenet is a system for users to read and post messages. Usenet can be seen as the precursor to internet forums, and is much like a Bulletin Board System in theory except it is distributed among many servers instead of a central authority. As time goes on, Usenet continues to grow in bandwidth usage, now generating terabytes of traffic a day. This is mostly through binary file transfers as opposed to messages. Despite many main ISPs deciding to remove Usenet access from their internet services, many still seek out paid access.

Pirate Radio UK. While Pirate Radio USA and Making Waves do a fantastic job at covering pirate Radio in the US, I haven’t seen much of an effort to show off pirate radio in the UK. From what I’ve gathered, there are an uncountable number of pirate radio stations across the pond, and it’s a different game when compared to the US. At the peak of pirate radio’s popularity, there were near 600 stations active in the UK while there are presently 150, mostly based in London. Here’s a mini piece from Vice.

Darknet. Not in regards to file sharing. More covering the darknet as a blanket term for an independant or ad-hoc network with some sort of disconnection from the internet. Considering topics like Hyperboria and CJDNS, Tor and the Deep Web, Meshneting for fun or necesity, Tin-Can, and so-on. As the hardware becomes less expensive and more devices have networking abilities, creating a scalable network becomes a more achievable task.

Dyson. I feel that James Dyson doesn’t get as much credit as a revolutionary engineer as he deserves. Dyson focuses on improvement: taking the wheel and making it better. No pun intended, but his first success was the creation of a fiberglass wheelbarrow that used a ball instead of a wheel. Afterwards, he famously created over 1000 prototypes for a new vaccuum cleaner using cyclone technology after noticing problems with his Hoover. Dyson repeatedly uses creative thinking and pulls inspiration from unlikely sources.

Raspberry Pi. While the Raspberry Pi was not necessarilly a unique and new concept, it was certainly one of the most well executed. We have seen other incarnations of plug computers such as the Beagleboard or the Sheevaplug, but the Raspberry Pi’s addition of integrated video sets it apart. And, at the price of $30, makes it incredibly affordable. Many would argue that what makes the Pi so special is the community that has formed around it, and not necessarily the hardware that ties it together. Everyone stretches their imagination and expertise: if it can be on the Pi, it should. Aside from the community, the Raspberry Pi Foundation has been done an incredible job at cultivating the technology and inspiring the next generation of young programmers and hardware hackers.

Kickstarter. There have been documentaries in the works that focus on crowdfunding, but I’m not as interested in the crowdfunding movement as much as I am in Kickstarter the company. While Indie GoGo has been around for a longer time, they do not seem to be held together as tightly. Kickstarter seems like not only an interesting company, but one that holds itself, and those who utilize its services, to a high standard.

QUBE. Here’s an odd one for that likely nobody has heard of. QUBE was the first interactive TV station, started in 1977 in Columbus, Ohio. Residents who subscribed to the cable service received a device that looked something like a calculator that allowed them to communicate back to the station during shows. Aside from the interactive feature, QUBE was on the forefront of pay-per-view programming and special interest content. QUBE soon went bankrupt and dissolved in the early 1980s. As a bit of an aside, I think I actually tried contacting the webmaster of that site a while back to ask if I could get a copy of the “QUBE DVD” for archiving but didn’t get a reply. Let’s hope he/she runs Webalizer or Google Analytics and sees some referrer traffic. Maybe it’ll be enough to spark a conversation.

So here ends my list. While the majority of these ideas are feasible, I can’t help but think a few might end up slipping too far and too fast into obscurity before their time. Other ideas on here might be too early in their lives. Doing something now, or even within the next decade, would only show a small part of the eventual picture.

Do I expect any of these to be made? Not particularly. But you never know.

Everyone gets lucky once in a while.

 

Pogo Unplugged

I got a little restless while waiting for my Raspberry Pi to get here so I decided to mess around with a few other SOCs while I wait. I was drawn to the the concept of these “plug” devices that were something of a flash in the pan a few years ago. Do you remember the SheevaPlug or the GuruPlug? Anyway, for the absent minded or unacquainted, plug computers are tiny tiny servers that run on very low power. Why keep that bulky server around when you can plug a little box into the wall, tuck it away, and forget about it for a while?

Love them or hate them, plug computers are cool little pieces of technology that are highly hackable and a good way to spend an afternoon playing with. I decided to get a Pogoplug to mess around with, as they were inexpensive when compared to some of the other plugs. They’re not the beefiest machines, but they’re not meant to be. I found a coupon that allowed me to get one at 70% off, so I took the gamble. What I got was a little NAS (which wasn’t very good at its job) with a dual core 700MHz processor and 128MB of RAM. You have to go through the hassle of registering your plug with their website to enable ssh access, but it only took five minutes and afterwards you can completely open up the hardware. With a 2GB flash drive and 20 minutes of my time, I installed Arch on my plug and then further configured it with web and IRC server software. Not bad for a cheap little box.

Pogoplug v3 Running htop

I liked the simplicity of hacking the plug and the potential it offered, so I went ahead and ordered two more.

Though the boxes have identical model numbers, the Pogoplugs I got in my second order were not the same. Apparently, my first plug was a v3, while my second two were v2s. What does that mean exactly? Pogoplugs use ARM processors. The v3 plug uses an ARMv6 while the v2 plugs use an ARMv5. So, slightly older processors but the v2s also happen to run at 1.2GHz and have 265MB of RAM. Can’t complain there.

My Pogoplugs

I found an old guide for installing Debian on a Pogoplug, and though it did not work, I followed a link to the site’s forum and was able to talk with someone to help get me going. After a painless installation, I had a second hacked Pogoplug to keep my company. Now what about the third one? Haven’t cracked into this one yet, but I have plans to try my luck with Fedora just for the variety.

What am I going to do with all these? I don’t really know. An IRC network made from just Pogoplugs sounds like fun but is completely impracticable. Any ideas?