The Best of 2019

Here is my fifth installment of the best things I’ve found, learned, read, etc. over the past year. These things are listed in no particular order, and may not necessarily be new.

See the 2018 post here!
See the 2017 post here!
See the 2016 post here!
See the 2015 post here!

This annual “Best Of” series is inspired by @fogus and his blog, Send More Paramedics.

Favorite Blog Posts Read

I end up reading a lot of articles over the course of the year, and cannot possibly remember all of them. Here is a good selection of that ones that I can recall:

Articles I’ve Written for Other Publications

I’ve continued to write outside of my own site in 2019, but all of this material has gone into NODE VOL 01. Below is a list of articles included in that volume. All articles are freely available by downloading the zine.

  • “Editor’s Letter” – An introduction to the zine.
  • “Dat Project 101” – Overview of the Dat protocol, including an explanation of underlying technologies and usage.
  • “So God Made a Farmer” – A look at farmers as hackers and tinkerers, highlighting issues the idea of ownership and involvement in the Right to Repair movement.
  • “Chattervox Tutorial” – Shows how to use Chattervox, an application that allows cryptographically secure chat over amateur radio.
  • “Ricochet IM” – Explanation and usage of Ricochet IM, secure chat over the Tor network.
  • “Bulletin Board Systems Today” – A list of currently-running bulletin board systems you can access today.
  • “Mesh Networking Basics” – Introduction to mesh networking technologies and examples of current mesh groups.
  • “MNT Reform: Open Source DIY Laptop” – Showcase of the MNT Reform laptop.
  • “Deciphering the Lexicon” – Definitions of common terms for the decentralized world.

Number of Books Read

A disappointing number this year 🙁

3

Still Need to Read

Dream Machines, Literary Machines, Design Patterns, 10 PRINT CHR$(205.5+RND(1)); : GOTO 10

Favorite Music Discovered

John Maus

Favorite Television Shows

Mr. Robot (2015)

Favorite Podcasts

Reply All, 99% Invisible, My Brother, My Brother and Me, Darknet Diaries

Favorite YouTube Subscriptions

Johnson’s Gee-rage, Vinsauce: The Full Sauce, GameGrumps, DIY Solar Power with Will Prowse, Techmoan

Programming Languages Used for Work/Personal

Java, JavaScript, TypeScript, Python, Bash, Batch, PowerShell.

Life Events of 2019

Life Changing Technologies Discovered

  • Othernet – Low-cost satellite datacasting.
  • DreamPi – Present-day online play for the Dreamcast using the ubiquitous dial-up adapter interfaced with a Raspberry Pi.
  • Plex – While I had previously heard of Plex, I got to use and run it for the first time this year. A big step up from Kodi and Samba shares.
  • Anderson Powerpole Connectors – The best power connectors for DC electrical power.
  • iFlash – Aftermarket SD card adapters for various models of the iPod. Perfect for replacing againg hard disks with more abundant, more reliable, less expensive storage.

Favorite Subreddits

I’ve taken a lot of steps away from Reddit this year and only reduced what I check down to a handful of subreddits.

/r/amateurradio, /r/retrobattlestations

Conferences Attended

Unfortunately, BarCamp Philly 2019, Pumpcon 2019, and Radical Networks 2019 were all booked for the same weekend this year. I hope to make it to Pumpcon in 2020!

Completed in 2019

Plans for 2020

  • Write for stuff I’ve written for already (NODE, Lunchmeat, Neon Dystopia, 2600).
  • Write for new stuff (Do you have a publication that needs writers?), maybe Paged Out!
  • Participate in more public server projects (ntp pool, etc.).
  • Do more work with packet radio.
  • Get a fully-working PBX on NPSTN and connect my vintage phones.
  • Restore a vintage payphone I already own.
  • Restore a vintage Ms. Pac-Man cocktail cabinet I already own.
  • Play with LoRa.
  • Build a blue box.
  • Start a dial-up ISP?

See you in 2020!

 

Belated News: NODE VOL 01 and Presenting at Radical Networks 2019

I was quite busy in 2019 and worked on two big things that were never shared here. Both were fairly large undertakings for me, and I figured it was good to make note of them here.

NODE VOL 01

I served as the editor for the premier issue of the NODE zine, a really cool publication to come out of NODE (which you may likely recognize from its video offering). Production of the first issue took many months, and while I had worked previously writing content for NODE, editing proved to be a new and different animal. That said, I also ended up writing a handful of articles for the issues, and am currently working towards production of a second! The zine is licensed under Creative Commons, and is available freely to download via the Dat network. A physical version was released but is currently sold out.

NODE VOL 01 is an 150 page zine for the NODE community. Volume 1 is packed with features on P2P projects, such as Dat, Beaker Browser, Ricochet IM, Aether, and more. There are many tutorials showing projects like the new NODE Mini Server, how to 3D print long range wifi antennas, how to chat via packet radio, and how to do things like Libreboot the Thinkpad X200. There’s also a handy open source directory at the back, along with lots more.

Radical Networks 2019 — BGP: The Internet’s Fragile Beast

In October of 2019, I had the pleasure of presenting at the Radical Networks conference in New York City. My talk was on Border Gateway Protocol, the sort of invisible glue that holds the Internet together. The talk is available for download in odp format as well as pdf!

BGP (Border Gateway Protocol) manages how all of our packets are routed across the Internet. It is one of the most powerful and important protocols currently deployed on the ‘net, but it is also incredibly fragile. Devised as a quick fix 30 years ago (without concern for security), BGP is constantly blamed in the news as Internet outages occur worldwide due to misconfigurations by multinational telecommunications conglomerates or hijackings by government actors.

This talk will demystify the misunderstood protocol that is BGP, and explain how entities exchange giant flows of data across the Internet, highlight past misuses, and consider what we may be able to expect in the future.

See you all in 2020!

 

Installing FreeBSD 12 on the Atomic Pi

By the end of April, Digital Loggers released the Atomic Pi, an x86-64-based single board computer, for sale on their website. Many speculate that these boards were bought wholesale from another company’s liquidation, and their strange assortment of navigation and audio features may indicate that they were originally built for automotive use. That said, they boast decent specifications for the inexpensive ($35) price especially compared to other x86/x86-64 boards like the Jaguarboard and UDOO:

- SoC – Intel Atom x5-Z8350 quad core processor @ up to 1.92GHz with Intel HD graphics
- System Memory – 2GB DDR3L-1600
- Storage – 16GB eMMC flash, slot for SD expansion up to 256GB
- Video Output – HDMI port
- Connectivity
    - Gigabit Ethernet via Realtek RTL8111G transceiver
    - Dual band 802.11b/g/n/ac WiFi 5 via RT5572 with IPX connectors on board
    - Bluetooth 4.0 via CSR8510
- USB – USB 3.0 and USB 2.0 ports
- Sensor – 9-axis inertial navigation sensor with compass (BNO055)
- Expansion – JST style connectors and a 26-pin header for power & GPIO
- Debugging – TTL serial debug and expansion serial ports up to 3.6Mbps
- Misc – Real time clock & battery
- Power Supply – 5V/4A recommended. 4-15 watts typ. power consumption
- Dimensions – 130 x 100 x 50 mm

(Specs via https://www.cnx-software.com/2018/12/22/atomic-pi-low-cost-intel-atom-x5-board/)

I’ve been eyeing a board like this for some time in order to run a BBS on low-cost, small-footprint hardware without having to emulate x86 architecture on top of ARM via some other SoC. That said, gigabit ethernet and onboard wireless (with an antenna connector, even!) could make this board viable for homebrew mesh-networking applications in the future.

Atomic Pi overview.

Getting Started

Upon receiving the board, the first hurdle you must face is powering it. The board itself has no power jack, whether it be a barrel plug or micro USB female. Some bundles include a breakout board that supports a barrel-type connector, which can also be purchased separately from resellers. However, with one of those you will also need a DC adapter with a 5.5mm/2.1mm plug that can pump out ~3 amps.

I happened to already have a 5-volt power supply (similar to this one) that went unused for a past project, so I chopped up a PC power cord to feed it AC. I then cut two dupont jumper wires in half (down the middle), stripped away some insulation, and screwed two halves into each of the two 5-volt pos/neg terminals on the supply (cut side on the terminals). To connect the power supply to the board, the two positive wires can be plugged into any two of pins 3, 5, 7, 9, 11 or 13 for +5 while the two negative wires can be plugged into any two of the pins 2,4,6,8,10,12 or 14 for GND.

 

At this point the board should power up and boot into its default operating system, which should help you determine if the hardware is performing properly. However, we want to install something different.

Installing FreeBSD

So first, we need to prepare some installation media. I had bad luck booting FreeBSD from an external DVD drive, so I recommend preparing either a microSD card or a flash drive. Due to the Atomic Pi only having one USB port, you will need to use a USB hub if you decide to use a flash drive so you can connect the drive along with a keyboard.

Insert your drive/card into a separate machine and download the FreeBSD-12.0-RELEASE-amd64-memstick.img image file from here. Then, write the image to your device following the instructions under section 2.3.1.1. Writing an Image File to USB in the guide here.

Now, insert your device into the Atomic Pi and power-cycle it. While it is restarting, repeatedly press the Esc key to boot the machine into the UEFI. Then, cycle through to the Boot tab and change the boot order, putting your device before the eMMC.

Make sure your device is first, while Android-IA (the eMMC) is second.

Then, press F4 to save and exit, which will restart the system again. This time, the FreeBSD installer should boot up. On the initial installer screen selection option 3. Escape to loader prompt.

You will now have a limited terminal to configure some configuration options. Enter the following to disable UART (otherwise the install will freeze) and then start bsdinstall (thanks to u/ArchiKola via Reddit for this):

set hint.uart.0.disabled="1"
set hint.uart.1.disabled="1"
boot

Now, you can go about the install process as normal.

Once finished, elect for the option to boot into the live environment to perform configuration before rebooting system. We need to apply those same UART changes or the new installation won’t boot properly. To do this, edit the loader configuration:

# vi /boot/loader.conf

Then, add the following two lines to the bottom of the file:

hint.uart.0.disabled="1"
hint.usart.1.disabled="1"

Everything’s done! We can now remove the installation media and reboot:

reboot

FreeBSD 12.0!

Happy hacking!

 

The Best of 2018

Here is my fourth installment of the best things I’ve found, learned, read, etc. over the past year. These things are listed in no particular order, and may not necessarily be new.

See the 2017 post here!
See the 2016 post here!
See the 2015 post here!

This annual “Best Of” series is inspired by @fogus and his blog, Send More Paramedics.

Favorite Blog Posts Read

I end up reading a lot of articles over the course of the year, and cannot possibly remember all of them. Here is a good selection of that ones that I can recall:

Articles I’ve Written for Other Publications

I’ve continued to write for a few different places outside of my own site. Here is a complete list for 2018:

Favorite Technical Books Read

Favorite Non-Technical Books Read

  • The Philip K. Dick Reader (1997) – My second time reading any Dick, this collection is amazing, lengthy, and inexpensive to pick up. You’ll be up all night reading this and surprised how sci-fi from the ’50s is so relevant today.

Number of Books Read

Back up to a good amount of books read this year!

9

Still Need to Read

Dream Machines, Literary Machines, Design Patterns, 10 PRINT CHR$(205.5+RND(1)); : GOTO 10

Favorite Music Discovered

Favorite Television Shows

Black Mirror (2011)

Favorite Podcasts

Reply All99% InvisibleMy Brother, My Brother and Me, Darknet Diaries

Programming Languages Used for Work/Personal

Java, JavaScript, Python,Objective-C, Swift.

Life Events of 2018

  • Visited Ireland.
  • Got my Amateur Radio Technician license.

Life Changing Technologies Discovered

  • Baofeng radios – Inexpensive amateur radios. You can get a decent handheld for about $30
  • MuckRock – A 3rd party service for submitting information requests.
  • TIL Wiki – A wiki idea for doing small today-i-learned posts as a way of note taking. 

Favorite Subreddits

/r/amateurradio, /r/vintageaudio

Conferences Attended

Completed in 2018

Plans for 2019

  • Write for stuff I’ve written for already (NODE, Lunchmeat, Neon Dystopia2600).
  • Write for new stuff (Do you have a publication that needs writers?).
  • Participate in more public server projects (ntp pool, etc.).
  • Launch a BBS?
  • Continue work for Philly Mesh.
  • Continue rebooting Raunchy Taco IRC (Have one server and a certificate authority configured).

See you in 2019!

 

The Brain Mutator For Higher Primates — A bOING bOING Retrospective

This article was originally written for and published at Neon Dystopia on June 13th, 2018 It has been posted here for safe keeping.

In 1988, Mark Frauenfelder and his wife Carla Sinclair started a small zine out of their apartment in Sherman Oaks, California. This wasn’t a full-time job for Frauenfelder, who studied mechanical engineering in school and worked professionally designing hard disk drives during the day. The drudgery of his work got to him, and he desperately needed a creative outlet, and that outlet would become bOING bOING.

Frauenfelder was fascinated by self-produced magazines of the time like Screamsheet and Reality Hackers, which in many ways acted as a precursor to amateur websites and blogs that permeate the Internet today. Zines were a bit different than the magazines you may pick up in a corporate bookstore. They were rough, uncensored, and often handmade by a group of amateurs having fun. Maybe you’d find some on a table at a trendy coffeehouse, or maybe the employee bathroom at work, but more often than not you would have to seek them out by mailing cash to the creators and hoping they sent something back. This wasn’t the first foray into publishing for Mark, who had created two issues of a mini-comic called Toilet Devil, and a one-issue zine titled Important Science Journal some time earlier. This new zine would be different. It would be for cool things, cyberpunk, wacky stuff, high weirdness, and anything downright crazy the husband and wife duo found interesting.

Carla Sinclair and Mark Frauenfelder.

Frauenfelder, an avid punk rock fan, enjoyed music by acts like The Ramones and The Clash throughout his youth. When asked what he liked about punk music during a 2011 interview, Mark responded, “It was the DIY aspect of the punk culture. You didn’t need to have expensive equipment or a record contract. I also liked the primitive sound. It’s hard to say, but as soon as I heard it, I loved it.” In many ways, the new zine would mirror punk culture and the DIY aesthetic: it wasn’t perfect, there wasn’t any backing or stability— it was raw and unfiltered and noisy and fun.

As a child, Frauenfelder was drawn to computers and comics, which eventually inspired his love of all things geeky and his fascination with alternative media. He first learned about zines from the Winter 1987 issue of Whole Earth Review titled “Signal” (co-edited by Kevin Kelly, who would later be among the founders of Wired magazine) in which an article explained the concept of zines and even mentioned a zine directory (which was actually a zine itself!) titled Factsheet Five. Frauenfelder ordered a copy and immediately sent away for as many zines as he could.

The first issue was layed out before the pair needed to move to Boulder, Colorado in 1989. Carla took on the role of editor, which she would retain for the run of the magazine, while Mark settled into the co-editor/publisher position. Packed full of cyberpunk sci-fi, underground comix, and mind-altering media, Carla xerox’d about 100 issues of the 36-page zine, and began to distribute it. The first issue was a trip: there was an interview with futurist Robert Anton Wilson, a comic about taking LSD, and a libertarian-cyberpunk manifesto titled “Crossbows to Cryptography: Techno-Thwarting the State!”, amongst others. bOING bOING, the World’s Greatest Neurozine, was born!

bOING bOING issue 1 (1989) cover. Read the whole issue here.

Stop right there. I can already see the candy-colored cogs in your brain cranking away trying to understand the text you just sucked off the page. bOING bOING… as in Boing Boing… as in boingboing.net, the popular group blog that arguably pioneered blogging as a concept in the early days of the Internet. Few people know that Boing Boing started its life as a humble zine, printed on dead-tree paper— not electronic bits ethereally whirling around the ‘net. Boing Boing may now be a staple of the Internet for those interested in science fiction, futurism, technology, and left-wing politics, but 30 years ago, it was a brand new zine called (and stylized as) bOING bOING.

bOING bOING stayed in Colorado for several issues and were hitting their stride as distribution ramped up. They refined their manic, madcap, eclectic style to become the premier net rag, full of punk attitude and sassy style. While the first issue of the magazine featured content from a handful of technoid misfits, the contributions were soon creeping in from all over. Back before the Internet, zines had to rely on a combination of luck and word-of-mouth to be successful. You could distribute copies of your zine to your friends, send them to other zines you like in the hopes that they’d review it, or trade them with others to spread far and wide. If it was any good, you’d have insatiable, bug-eyed mutants clamoring for more. If it was bad, it would fizzle out, and be all but lost to time. Early contributors for bOING bOING included science fiction authors like Paul Di Filippo and Rudy Rucker, as well as cyberculture writers and zine editors like Going Gaga helm Gareth Branwyn and FringeWare Review wizards Paco Nathan and Jon Lebkowsky. Within the zine microcosm, bOING bOING was a hit!

Mark Frauenfelder pasting paper together to assemble copies of bOING bOING issue 2 (1990). Read the whole issue here.

It is important to understand just how much cyberpunk influence bOING bOING was amassing in this early period of publication. Just three years before bOING bOING’s first issue, Bruce Sterling edited the acclaimed Mirrorshades: The Cyberpunk Anthology (1986), featuring short stories by prominent, front-wave authors in the cyberpunk subgenre. bOING bOING would go on to feature articles by authors from this anthology such as Rudy Rucker, Marc Laidlaw, Paul Di Filippo, John Shirley, and even Sterling himself. Others such as William Gibson and Lewis Shiner would ultimately be interviewed. Di Filippo in particular would even use bOING bOING Second issue as a launching point to share his ideas on a half-serious new subgenre he was developing called “ribofunk,” a blend of “ribosome” and “funk” (a direct response to “cyberpunk”), that acted as a prototype for what we would later come to call “biopunk.”

Around the time that Mirrorshades was hitting hardback, before bOING bOING launched, Mark and Carla would run into R.U. Sirius and Queen Mu selling the poster-sized second issue of their High Frontiers zine (a psychedelic counter-culture zine which would eventually morph into the cyberpunk Mondo 2000 a few years later) at a Timothy Leary show in San Francisco. Frauenfelder vividly describes the duo by stating “RU was this grinning hobbit-looking character with a floppy hat with a Andy Warhol button on it. Queen Mu was a very delicate blond woman with Stevie Nicks clothes and granny glasses and she [had] a permanent blissful smile and didn’t say much.” After buying a copy of their zine, Mark and Carla would attend High Frontiers Monthly Forum events in Berkeley thrown by R. U. and Mu, eventually meeting like-minded cyberpunks and tuned-on mutants such as author Rudy Rucker and future Mondo 2000 art director Bart Nagel. The friendship between the group grew, with both Rucker and Sirius eventually writing for bOING bOING.

R.U. Sirius and Timothy Leary.

bOING bOING covered culture in a no—holds-barred way. No topic seemed too taboo or salacious or untouchable. Drugs, kinky sex, and absurd humor littered the pages— sometimes comprising the entire issue. You could get the latest news about the ‘net, independant comics, goth culture, punk music reviews, and everything in between. You might see a cyberpunk short story sharing a spread with a Schwa alien cartoon or recruitment advertisement from Church of the SubGenius. bOING bOING dripped with Gen X culture, and as with Frauenfelder, appealed to those fed up churning in a stuffy office all day or burning out in their McJob. bOING bOING, like a lot of technology-soaked publications of the ’80s, followed a natural evolution with roots in the counter-culture movement of the 1960’s. Instead of the dirty, free-loving and peace-wheeling hippies, bOING bOING was more in tune with the punks of ’77 who scornfully rejected the old political idealism and subconscious with a rebellious, no-bullshit attitude. Music, culture, and technology were getting more personal; the milieu was different. The average bOING bOING reader was more likely reading Amok Dispatch (1986) rather than the Whole Earth Catalog (1969), and listening to Black Flag instead of the Grateful Dead. Kerouac made way for Coupland. This was something new— this was theirs.

For issue eight, their first with full color, Frauenfelder and Sinclair moved back to California. They didn’t stick around in one place for too long, pin-balling from Hollywood to Los Angeles to San Francisco, and eventually back to L.A. throughout the remaining years of the zine. bOING bOING was booming throughout this period, and benefited from an influx of cash attributed to Mark being employed to design Billy Idol’s Cyberpunk (1993) album. While in Los Angeles (the first time), Frauenfelder was offered a job as a writer at a small magazine startup, also run by a husband and wife team, called Wired. “They saw Boing Boing and they really liked it,” Mark has said previously, “so they called me up and asked if I could come work for them as an editor and inject some of Boing Boing’s sensibility into the magazine.” The couple relocated to San Francisco, and set up bOING bOING on the first floor of the Wired building, then located at 544 2nd Street.

Wiley Wiggins who you may remember as Mitch Kramer in Richard Linklater’s Dazed and Confused (1993) was also actively involved in early ’90s cyberculture. He wrote for bOING bOING as well as Mondo 2000 and FringeWare Review.

Wired released its first issue in 1993, but before that, it was just a group of writers and publishers trying to throw together a new concept for a generation of MTV-watching punks, immersed in the fresh world of cyber-culture. Publisher and co-founder of Wired, Louis Rossetto, pitched his magazine concept by saying, “We’re trying to make a magazine that feels as if it has been mailed back from the future.” This fit in nicely with Frauenfelder’s style. The Wired building was truly a melting pot of San Francisco culture in the early ’90s. Wired had recently moved from the first floor, a large, open, warehouse-like space, to the second floor when it needed something roomier. bOING bOING moved into Wired’s old digs in the corner of the gigantic room, which was already buzzing with activity from other independent zine makers in the Bay Area. Other publications sharing the space included Dave Egger’s Might (a magazine aimed at Generation X), Just Go! (a travel magazine), Hum (a magazine for young South Asians), CUPS (a more eclectic culture zine), and Star Wars Universe (I think you can figure this one out). Mark continued to work on bOING bOING while also netting income from the burgeoning Wired, though Carla took over most of the production at this time. Issue 9 of bOING bOING would become notable with such content as an interview with Bruce Sterling about his new book The Hacker Crackdown (1993), a regular music column by Richard Kadrey, and a 7-page pastiche of Mondo 2000 (starting on the back cover, so it actually looks like a Mondo 2000 issue when upside down) featuring articles with titles like “I’m Gonna Morph You Up,” and “Virtual Neural Jacks.”

Cover and first page of the mONDO mONDO parody in bOING bOING issue 9 (1992). Read the whole issue here.

By this time, issues began to feel more and more refined— both in content and physical appearance. Once printed on cheap paper, the zine now had dazzling, glossy covers, and was filled with content from a loyal band of the fringe-elite. bOING bOING never seemed to lose its quirky, geeky, out-there edge that had been so crucial in cultivating the zine’s culture and feel. At its peak, bOING bOING reached a circulation of 17,500 issues. Unfortunately, nothing lasts forever.

By 1995, bOING bOING would release what many might consider its last “regular” issue, though the year also marks what many would say is a much more crucial event for bOING bOING: the launch of its website, which we can still visit some 23 years later. Behind the scenes, the independent printing industry was changing for the worst. In 1994, shortly before this penultimate issue of bOING bOING was released, the two largest independent magazine distributors in the country went bankrupt. bOING bOING ended up losing about $30,000 because of this, causing delays in the production of another issue. While the launch of boingboing.net may be seen as a deathblow to the zine, it might have actually been the only thing that saved it. It was clear that publishing on paper was not going to be a long term solution. Publishing on the ‘net could be done for free.

The print zine may have been fading, but that doesn’t mean the culture built around it was left to decay. 1995 became a year of handbooks. Aligning with The Real Cyberpunk Fakebook, a satirical cyberpunk handbook written by select Mondo 2000 staff, Frauenfelder, Sinclair, and bOING bOING regular Gareth Brawnwyn collaborated on the 205-page Happy Mutant Handbook, a guide to offbeat pop culture. Sinclair would also release her first book, Net Chick: A Smart-Girl Guide to the Wired World, an optimistic yet sassy guide for women carving out their place in the early days of the web. Further, Frauenfelder was continuing to work for Wired where he would attain the position of editor. bOING bOING ultimately released its final print issue, #15, in 1997 after a two year hiatus. Unlike previous issues, this one more closely resembled a book, with more standard binding and a squarish appearance; the contents however were the same weird and wacky that bOING bOING was known for.

The Happy Mutant Handbook (1995) was actually designed by Georgia Rucker, author Rudy Rucker’s daughter! Read the whole book here.

Frauenfelder would eventually leave Wired in 1998, following his tenure there with a stint as the “Living Online” columnist for Playboy from 1998 to 2002, a job he was recommended for by Playboy editor and former zinester Chip Rowe (who had published Chip’s Closet Cleaner in the early ’90s). Later, Frauenfelder would become editor-in-chief for Make: magazine, a DIY/hobbyist bimonthly, while also producing a few books before settling into a role at the Institute for the Future as a research director. He also serves as Editor-in-Chief and podcast co-host with Kevin Kelly (again, of Wired and Whole Earth Review fame) at Cool Tools, a site about the tried-and-test tools and gadgets. Sinclair would later publish a technothriller, Signal to Noise (1997), and become editor-in-chief of a Make: spin-off magazine titled Craft: which ran from 2006 to 2009. Frauenfelder still maintains top position on the boingboing.net masthead, along with bOING bOING zine regular David Pescovitz. Carla has contributed to the site as recently as 2016, but additional writing is currently provided by Cory Doctorow, Xeni Jardin, and Rob Beschizza.

In May 2011, Frauenfelder would publish a bOING bOING anthology of favorite interviews from the zine era in a free, online-only PDF file. “The first few issues of Boing Boing had print runs in the low hundreds, and the biggest was 17,500 copies. Today, the blog easily gets that many page views in an hour,” Frauenfelder states in the the article announcing the anthology. The zine may be gone, but its legacy lives on through boingboing.net. “I think I’ll always be involved in some media. Who knows what Boing Boing will evolve into. But, I kind of imagine that it might not be too different than it is now,” Frauenfelder says in a 2012 interview, “I see myself continuing to make Boing Boing into an even better experience for its audience.”

For me, it can’t get much better than a three-color zine made by a husband and wife team exploring the weird and wonderful world. I only became aware of bOING bOING a few years back when I was searching for issues of Mondo 2000, and stumbled upon it quite accidentally. Before long, I was able to track down almost every issue and began to scan them, page by page, in an attempt to save them for future generations. I never did find the first two issues for purchase, but luckily I uncovered some PDFs of them online that were scanned at some point by Frauenfelder himself many years ago! After my scanning was complete, I uploaded each issue to the Internet Archive where you can download or browse them today, completely free. I’ve been lucky enough to have a few interactions with Mark Frauenfelder online after this, and he’s always been quick to answer my obscure questions about the old days and provide new insights. bOING bOING, the zine, remains a point of pride for him and he seems to love sharing it. It was and is something he loved, and he was there to see it mutate, evolve, and grow over time, while he did the same.

The print is dead, but the brain jack is warm. You can always go online.


Some of the links included in this article are Amazon affiliate links. If you would like to purchase these items, consider using the links provided and help support Neon Dystopia.

 

Building a Replica Hackers Pager

Ever since I saw Hackers (1995), I always wanted one of the iconic yellow pagers that Cereal Killer sports at various points during the film. I missed out on the whole era of pagers, but I always thought there was just something cool about them that seems a little less amazing now that we are in a text-messaging world.

The Motorola Advisor from the film.

Many months ago, I became aware of an awesome website called Hackers Curator that attempts to index every prop (among other great things) from the Hackers film, and even make some reproductions. Of course, they showcased the iconic Motorola Advisor pager, and even gave a custom-made replica away to an online buddy of mine via a scavenger hunt contest. I inquired to see if they had any for sale, and they did, but a single pager from them was outside of my price range. I thought I could so something similar for significantly less money — and it turns out that I can (you can too)!

I in no way want to sound as though I am disparaging Hackers Curator. I think they do a really good job, and I’ve even contributed a few scans to their site. If you don’t like the idea of piecing together supplies to customize your own pager, don’t have a lot of free time, or just don’t like getting spray paint over your hands, I’d definitely recommend you send them an email to see if they have any pagers in stock. I’d also like make it known that they have a video on their YouTube channel that outlines how they made one of the pagers. I got a few ideas from their video, but ultimately used a few different techniques and hope to share my individual findings (and source files!) to create a more complete build solution guide for tinkerers out there.

Build List

  • Motorola Advisor pager – $10+
  • Krylon Fluorescent Yellow spray paint – $4
  • Krylon All Purpose Bonding White Primer spray paint – $4
  • Masking tape – $1
  • Fine grit sand paper – $1
  • X-Acto Knife (or other precision cutting tool like a razor blade or box cutter- $1-$5
  • Scrap cardboard (to put the pager body on for painting) – Free
  • 5x Sheets waterslide decal paper (and a printer to print on it with) – $4-$8
  • 1x Sheet metallic-gold paper – $1
  • Motorola sticker (optional) – $3

The heart of this project is of course the Motorola Advisor pager. Technically, there are two different versions of the original Motorola Advisor, and the difference comes down to the arrow buttons having triangles inset into the rubber or just printed right on top. Cosmetically, this doesn’t seem to make much of a difference, but if you want to be accurate to the movie I believe the pager they use has the inset triangles. Also keep in mind there have been many Motorola pagers in the Advisor line, like the Advisor II, Advisor Gold, Advisor Elite, etc. I may have made some of those up, but it’s hard to tell when they have names like that. You just want the original blocky one. I ended up just buying the most inexpensive one I could find on eBay, for $10 including shipping. The internals in mine appear to work, but if you are just making a prop, it likely doesn’t matter if the thing works at all. You may also notice that a lot of these pagers have some other company’s name in the front nameplate where “Motorola Advisor” should be. This is fairly common, so unless you happen to find a sticker that will fit over top of the weird company’s name, you might want to pay a little more for a pager that actually says “Motorola Advisor.”

You’ll want to get some spray paint to paint the pager with, and I recommend a basic white primer to cover up the black plastic entirely, and fluorescent yellow paint to match the color of the pager in the film. For whatever reason this paint has awful reviews online, but works great and even glows under black light! More on that later. Aside from the paint, you will want some basic supplies like masking tape (to tape off areas on the pager you don’t want paint on), an X-Acto (or other precision cutting tool to slice of excess masking tape), some fine grit sand paper (to sand down some paint during finishing to make the pager look worn), and scrap cardboard (or wood, etc. to place the pager body on for painting). For these supplies, I used stuff I had around, which included 100 grit sandpaper that I probably should not have used as it was too low grit. You may want to get a variety of sandpaper and work your way down the grit levels. Lastly, before I forget, unless you have long fingernails, you are going to want some sort of pry tool like a small jewelers screwdriver or guitar pick (which is always good to keep in the tool box).

The last important items you will need to get are waterslide decal paper and metallic-gold craft paper. Waterslide paper allows you to print directly onto a paper-backed transparent plastic film that you will later apply to the pager’s screen (from the back). They make different types for laser and inkjet printers, so be sure to buy the proper type for the printer you have. I bought a pack of five sheets so I had some extras if I messed up or wanted to do a slightly different design at some point. The metallic-gold craft paper is easy to find in a giant sheet at any craft store, just inspect it before you buy it as some sheets looked streaky. We will use this gold paper as a backing for our waterslide paper.

Disassembly

Okay, so now we have our pager.

The majestic Motorola Advisor!

Flip it over and remove the battery cover. It should slide out from top to bottom.

Battery cover removed.

Next, we need to open it up. If we flip the pager onto its side, we can locate the locking plastic tab keeping it together. These pagers have a tool-less assembly, so we can pry up this piece of plastic by slipping a fingernail or a piece of plastic (okay, or a jewelers screwdriver) into the crease closest to the corner (shown at the right of the picture here) and sliding the cover to the right, towards the pried-up end.

The plastic cover should slide right out when you get it to this point.

At this point, the pager should basically break down into its components, which we can easily reassemble later. If you ever find a part that seems to be held in by adhesive (like a side of the screen), you can safely wiggle this loose using a small screwdriver and mild pressure. The actual LCD screen is attached to a separate plastic case piece through three plastic tabs that can be released (again) with a small screwdriver or prying device of some kind.

Depressing the tabs to release the screen.

Now, everything should be completely broken down.

All of the components separated.

Painting

Before we can actually do some painting, we need to tape off the areas that we don’t want any paint to get on. This includes, the screen, the name plate, plastic parts on the side, labels, or pretty much anything that isn’t black plastic. Apply tape liberally and use the precision knife to gently cut away excess.

Taping off the nameplate.

Make sure to also tape off components or clear plastics from the underside of the case as well! You don’t want back-spray to leave any paint flecks here. Also, I didn’t do this, but try to tape off the back of the locking plastic tab and corresponding parts of the case that the tab normally covers. This will make assembly and disassembly easier in the future if you want to get back inside the pager, the layers of paint can make it really hard to slide the tab out again!

Ready to go! There should be 5 pieces to paint.

The primer we have is designed to bond to plastic, so we should be good to go with a first coat. You might want to clean the pager’s shell with alcohol or maybe do some sanding here, but I didn’t find that necessary. Place the case pieces on some cardboard and paint them following the directions on the can. When done, follow the drying instructions as well. Two coats should cover the case completely.

Primer done!

Next up, the yellow paint! Again, follow the painting and drying instructions on the can. For this, I ended up doing three coats total, but two might be good enough.

Fluorescent yellow looking good!

We can now carefully remove the masking tape.

Tape removed.

At this point, we can start sanding down the edges of the pager to remove some layers of paint. Remember to work applying light pressure, as you can always take more paint away but not get any back. It helps if you keep a screenshot from the film nearby when working on your wear pattern.

After some sanding, we’re looking pretty good.

Preparing the Decal

The coolest part of this pager is going to be mimicking the display of the pager in the movie so it reads “GRAND CENTRAL HACK THE PLANET”. To achieve this, I had to combine a few different things.

First, I wanted make a canvas for the screen, so I made a Photoshop document sized at 2.628 inches by 0.872 inches (a little larger than the screen size) with a resolution of 250 pixels/inch.

Then, I wanted to work on the text. Instead of making the typeface from scratch, I found an almost identical typeface called LCD Solid, which is freely available. I was able to create two lines of text, and adjust the kerning so the characters were spaced out more like in the film.

Next, I used a screenshot from the film to draw the little display icons by tracing over them in the screenshot.  I ended up modifying them a bit to level them out and generally make them look a bit more flat. Ultimately, I was able to get a pretty close representation of the screen shown in the movie.

My completed screen.

You can download my finished PDF here for free. Please use it, and modify it, and make it better for other hackers to use!

The next step was to print it out on standard white computer paper, cut it down, and do a fit test to make sure it would look okay and not be cut off when it was printed on plastic for the final product.

Just holding a cut piece of white paper with the printed image shows how well it will fit.

Everything looked good, so now we can move on to printing on the waterslide decal paper. Our waterslide paper is clear plastic backed by white paper. After we print out our image on the plastic side, the paper is soaked in water and the backing slides off, leaving a “sticky” side we will affix to the back of our pager screen. Because of this, we will need to flip our newly created image horizontally before printing on the waterslide paper. Additionally, I copied and pasted the image many times to fill out the sheet of paper in the event that the application didn’t work or came out poorly. It is a good idea to do this to give several attempts as waterslide paper can be a bit tricky.

A big sheet of waterslide paper with the image printed all over it.

Now, we can cut away one of the decals and make sure it fits the space of the screen. Rough measuring can be helpful here.

Decal ready for application.

Follow the instructions included with waterslide paper to remove the backing. Generally, you will place the decal in a bowl of warm (not hot) water for 30 seconds then remove it. Flatten the decal out and line it up on the backside of the pager screen (text facing you). With your finder holding down the long edge of the decal, slowly work the backing up, away from your finger until it is completely removed. Use a cloth or your finger with light pressure to smooth out any wrinkles or air bubbles between the decal and the screen. Do not use a credit card or your fingernail if suggested by the waterslide paper instructions, this will scratch away some of the ink on the decal and leave it splotchy. If the decal doesn’t look good, don’t be afraid to start over. It can take a few tries to get the desired result.

Here is the applied decal posed next to a cropped screenshot of the pager from the film.

At this point, I assembled the unit, but was very dissatisfied by the gutter shadow between the screen and the display. Also, the display somehow had a ton of scratches that were not on the screen.

Look at that shadow!

You can also see that I applied my Motorola sticker to the nameplate at this point to make the pager look a little more stock. I could only find a “Motorola OPTRX” sticker for sale on eBay, so I used a Sharpie to black out the “OPTRX” text.

Here is the sticker before application.

But anyway, we want to eliminate that shadow. This is where the metallic-gold craft paper comes in. Cut a piece roughly the size of the screen, and place it between the screen and the display. No tape or glue is needed to secure it in place, it just stays in from friction. This is not only cheaper than spraying the area with gold paint, but it also makes it easier to change out the decal or reverse the whole modification so the original pager display can be used for any reason.

The completed pager.

One of my favorite properties of the fluorescent yellow paint is its ability to glow under black light.

The pager body pops under UV light.

Also, it looks pretty good in the holster.

Ready to be clipped on to a belt.

Conclusion

That finishes up the Hackers pager. There is a bit of room for improvement, but I’m really satisfied by the result. To see some of my progress posts and to see what others are doing, be sure to check the #hackerspager tag on Mastodon. In total this build cost me a bit less than $30.

Aside from showing this pager off at cons, I hope to one day look into modifying it to run POCSAG so it will act as an actual pager and not just a show piece. That’s definitely further down the line, however.

This guide is organic, and subject to change. Let me know if you attempt it, how it works for you, and if you successfully make a cool pager by using it! Don’t hesitate to reach out.

Hack the planet!

 

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.