Final Reflection Post

Over the past five weeks, I’ve learned countless facts and history about the hacking and open source culture of the computer world. From Steven Levy’s novel Hackers dictating the origins of hackers of the 1950s, to readings about how criminal hackers have changed our current  world, I acquired knowledge of a culture that I hadn’t known too well prior to this course. Many of the topics and information I read about over the last few weeks were intriguing and thought-provoking as well.

Steven Levy’s Hackers goes into depth about the pioneers of the hacking world, as it describes how a few lucky MIT students got their hands on one of the first few computers ever built. The students of the Tech Model Railroad Club at the university were the first true computer enthusiasts, as Levy describes. From those days in the late 1950s, computer technology has advanced incredibly. In just a couple of short decades, the ginormous computers of yesteryear became small personal computers than anyone regardless of occupation and income could get their hands on. PCs such as the Apple II and the Commodore 64 took the technology industry over and created the personal computer bubble. However, many PCs like the Commodore 64 ended up biting the dust, leaving only the healthiest competition to prosper.

This was the time period when the hacker ethic was established. These were the very first guidelines created by the hacking community of the early 1980s, and the ones that paved the way for future generations of hackers. Although the hacker ethic may have became outdated and overshadowed by “criminal hackers”, it still serves its purpose today.

As someone who grew up in the 2000s, and 2010s, I knew only a broad synopsis of the hacker culture, just like an average person would know. However, taking this course gave me a deeper understanding of the original and classical hackers that originated the whole movement. Prior to this course, I had no idea that MIT students in the 1950s originated hacking. I also didn’t know that the original hackers didn’t have any criminal intent to breach into computer systems and confidential online databases. Being alive during this millennium as given me and society a false perception of these hackers and their purposes. With movies and the news skewing an evil insight into the term “hacker”, it is easy to understand why so many people think of Anonymous and Edward Snowden when they hear the word.

Additionally, I was able to get my hands on an interactive project that helped me visually and kinetically understand the original concept of the hacker culture. Their intents were to tinker around and create computer codes and programs that were innocent and harmless. With the experiment and conduction of my micro pirate radio station, I could see what these early computer enthusiasts had in mind when creating such projects. Although with my project there was a slight risk of getting into trouble with the FCC, the odds were very small that I would be caught transmitting an unlicensed station. Working on this project for the last few weeks made me realize why many hackers are so intrigued by working with code, and how such a tight-knit community can be so innovative and intelligent.

As this course comes to a close, I can definitely say I learned a remarkable amount of information in the past five weeks. What started out as a summer class to just get out of the way and raise my GPA in, became a class that gave me insightful and meaningful knowledge into a world that drives the technological forces of the globe. In this day and age, I feel like it is essential for all types of people to learn even the most basic computer code. Learning about HTML and open-source culture/coding is the way of the future, and will impact the way the world obtains and computes its information. I enjoyed this course well, and the information I learned will help me in the years to come.

 

Video How-To

If you want a visual step-by-step clip on how to put this project together, I’ve compiled a video with all the necessary instructions to create your own micro pirate radio station. Enjoy!

The Instruct-able

SUMMARY

The Micro Pirate Radio Station is a open source project implemented using the Raspberry Pi (RPI).  The original hack is attributed to Oliver Mattos and Oscar Weigl, who over a few hours at the Code Club pihack, were able to transform the RPI into a surprisingly strong FM transmitter.  The hack uses the hardware on the RPI that is actually meant to generate spread-spectrum clock signals on the GPIO pins to output FM Radio energy.  Pretty incredible to say the least.

What makes this hack even more interesting is that the only extra piece of hardware needed is a piece of wire to plug into the GPIO pin 4.  This, in addition to some simple coding, is all you need to have your own Micro Pirate Radio Station. The process itself isn’t overly complicated at all, and even the most amateur hackers can learn to program their own transmitter. Note, however, that the RPI’s broadcast frequency can range between 1Mhz and 250Mhz, which may interfere with government bands.  As such, I advise that you limit your transmissions to the standard FM band of 87.5MHz–107.9MHz, and always choose a frequency that’s not already in use, to avoid interference with licensed broadcasters.

In order to improve the original hack (which is a few years old, and has been modified several times), I decided to broaden the scope of the audio sources to be broadcast.  That is, the original hack is meant to broadcast a single .wav file (Star Wars theme) saved on the memory card inserted in the RPI, which is sufficient as a proof of concept or for testing purposes, but it’s too restrictive for a true pirate radio station.

In order to achieve my objective, I followed the guidelines by Tony Tascioglu, but had to modify the code as detailed below.  Furthermore, I used an analog RCA switch to provide the broadcaster with various audio sources.  My original intent was to connect the RPI to a DJ Music Mixer, but unfortunately for the time being, mine is back at school.  Nevertheless, by using the RCA switch, I was able to select audio sources in real-time. It isn’t the same as creating a live mix on a DJ controller, but it’s close enough nevertheless.

MATERIALS

The components and materials needed to create your own Micro Pirate Radio Station can all be purchased at Amazon.com.  The complete list with prices and relevant links to Amazon were provided earlier on this blog.  As a summary, the list includes:

Required:

  • Raspberry Pi 3 Complete Starter Kit
  • Jumper Wires

If Needed:

  •  USB Keyboard
  •  USB Mouse
  •  HDMI to VGA Cable (to connect to a VGA Monitor)
  •  Flash Memory Card Reader

Optional:

  •  USB Audio Interface for RCA Input
  •  Multiple RCA Input Switch
  •  RCA-male to 3.5mm-female cable adapter

 

STEP-BY-STEP PROCEDURE

  1. Get the necessary files on the Raspberry Pi:
    • On your desktop, go to https://github.com/markondej/fm_transmitter and download the zip file
    • Copy the downloaded zip file (fm_transmitter-master.zip) onto a flash card/thumb drive or email it to you
    • On the RPI, insert the flash card/thumb drive or open the email with the attachment, and extract the zip file to a new folder, FMTransmitter, on the RPI file directory
    • Move all files inside the folder “fm_transmitter-master” outside that folder, but inside “FMTransmitter”, and then, delete the emptied “fm_transmitter-master” folder

 

  1. “Compile” the newly created files:
    • Open up the LXTerminal on the RPI
    • Type: sudo apt-get install make gcc g++
    • Type: cd FMTransmiter
    • Type: make

 

  1. Test your FM Transmitter by broadcasting a sample music track:
    • Plug a female jumper cable to GPIO pin 4 (I extended the antenna by adding a second jumper cable to the end of the first one)FC9060185D2C4B949B9D51E57A12B4D4.jpg
    • Type: sudo ./fm_transmitter -f 88.7 -r star_wars.wav (you can use any other unused FM frequency)
    • Tune into frequency 88.7 on your FM receiver

 

  1. Connect and configure the USB audio interface:
    • Plug the USB audio interface into the RPI
    • Open up the LXTerminal on the RPI
    • Type: sudo alsamixer (This will run the AlsaMixer application in a LXTerminal window)C52B9F1F88F8409491F36232CDC7629F.jpg
    • This shows the on-board audio device’s playback control (note that the chip is called “Broadcom Mixer”). Press “F6” and you should see a small pop-up “window” with all the available sound cards listed.alsa2.jpg
    • The item “0 bcm2835 ALSA” is the on-board audio device, and the item “1 C-Media USB Audio Device” is the USB audio device (yours might have a different name). Use the arrow keys to select the external sound card on item 1, and press Enteralsa3.jpg
    • This shows the playback controls for the USB audio device. Use the right and left arrow keys to select the control you wish to adjust and then use the up and down arrow keys to adjust the level.  Adjust the playback level near its maximum level (i.e. 90)
    • Pres Esc to exit the AlsaMixer application

 

  1. Connect external audio source and broadcast its output:
    • Using the RCA-male to 3.5mm-female cable adapter, connect an external audio source, such as a smartphone, mp3 player, computer (or if you want to go retro, a Walkman or record player) to the USB audio interface previously connected to the RPI.
    • Open up the LXTerminal on the RPI
    • Type: cd FMTransmitter
    • Type: arecord -fS16_LE -r 22050 -Dplughw:1,0 – | sudo ./fm_transmitter -f 88.7 – (this line of code tells the RPI to record audio coming from soundcard “1” as 16-bit data at 22,050 sampling rate, and, then, to playback such recording through frequency 88.7 Mhz)
    • YOUR MICRO PIRATE RADIO STATION IS LIVE…!!! You are now broadcasting your music within a 100-meter radius

 

  1. Optional Step: Add an audio mixer for a real-time DJ music set (or, alternatively, use an RCA switch to manually change audio sources)
    • Plug RCA audio output from audio mixer into the USB audio interface connected to the RPI, or
    • Plug an RCA switch into the USB audio interface, and, connect up to three different audio sources into the RCA switch (using the RCA-male to 3.5mm-female cable adapter if needed).

 

A Follow Up (7/26/16)

Today marks the halfway point of ESOC210. As I look back, quite a lot of progress has been made. Reading Hackers by Steven Levy has opened up a whole new world of the hacking culture, one that I had previously not had any prior knowledge about. Watching the documentaries about BBS gave an inside look on how computer networks begun in the 1980s, and the people who were behind the pioneering breakthrough. Discussions with other classmates have helped spark interesting topics to talk about. Most importantly, what I’ve worked on so far with my Micro Pirate Radio Station has given me a taste of what hackers have originally been working on for decades, and it’s been very exciting to work with my first programming related project.

Since I am working with a radio transmitter, it does bring up the issue with possible legal troubles. My transmitter is made to be a low-powered device, with an estimated range of only 100 or so feet. The antenna that is attached to the Raspberry Pi is very small, roughly about 10 or 11 inches. The chances of me getting caught by the Federal Communications Commission are little to none. However, when experimenting on a project like this, you always have to run the risk in case the “what if” actually happens.

This is where the hacker ethic comes in. In basic terms, it a set of beliefs that the original hackers of the early 1980s set up as guidelines for those and future hackers to go by. There are two basic concepts to the hacker ethic. The first one states that “the belief that information-sharing is a powerful positive good, and that it is an ethical duty of hackers to share their expertise by writing open-source code and facilitating access to information and to computing resources wherever possible.”1  The additional one, that is more applicable to my case, states “The belief that system-cracking for fun and exploration is ethically OK as long as the cracker commits no theft, vandalism, or breach of confidentiality.”2 Many consider this rule to be controversial, especially depending on the situation. For broadcasting a pirate station, that rule definitely comes into play to question if transmitting an unlicensed radio channel is actually considered true piracy.

While broadcasting my micro radio station, I will try not to interfere with any neighboring stations on other channels, so I don’t disrupt other possible listeners with the sound of my audio. To put it into picture, it would be unethical if I decided to broadcast on a the frequency of 99.9 MHz if there’s already a FM radio channel on there. If there are other people relatively close to me listening to that station, they would be interrupted with the sound of my station instead, which would tick off those listeners. When I broadcast from the Raspberry Pi, I will make sure to do so from a lower FM frequency, so I can avoid that issue. In the United States, many low-powered stations such as college radio or even other pirate stations tend to broadcast below 92.0 MHz. I will cooperate with that “rule” so I don’t have any infringement with any other station.

Lastly, my take on the hacker ethic relative to my project is that I don’t believe that I am doing anything seriously unethical. My purpose in creating a micro radio transmitter is to create an alternative to Bluetooth, so I could hear my music from around the house. I’m not breaking or stealing confidential information from anyone. The only very minor thing that could be considered unethical is the fact that the artists won’t get payed from me playing their songs. If I’m transmitting at such a small range, however, will anyone even pay attention to that? My micro pirate radio station is meant to be a harmless project that anybody, regardless of the amount of hacking involvement they have, can do as a learning experience without having to deal with any legal troubles.

Another eye-opening event that came to light when researching for my project is the sense of comradery among the open-source community.  The PiFM hack was originally developed three years ago, and since then, has been modified several times.  In all the subsequent work around the original hack, credit to the original developers was always given.  Moreover, the additional work done to improve the basic PiFM (stereo, RDS, multiple file formats, multiple RPI versions, external audio sources, etc.) was presented to the community with detailed guides and explanations.  In summary, I was very pleased to find a community willing to contribute, and, more importantly, eager to help others.

Initial Implementation (7/26/16)

 

After setting up the Raspberry Pi (RPI) and installing the Raspbian Operating System, I proceeded to run the basic PiFM hack by following the guidelines from here: https://www.maketecheasier.com/run-radio-station-with-raspberry-pi/

Unfortunately, this did not work.  After checking the code, and making sure I had copied it correctly, I decided to look for possible solutions.  That is when I discovered that the initial hack by Mattos & Weigl was meant for the Raspberry Pi and Raspberry Pi 1, only.  I was using a Raspberry Pi 3.

I found code that was written for the PiFM to work in any Raspberry Pi platform from this tutorial video by Tony Tascioglu:https://youtu.be/32Bo0rvc_L0

For some reason, GitHub.com on the web browser of the RPI was not able to offer me the option to download the zip file (the “download button” did not work), so I was forced to look for an alternative to get the zip file on the RPI.

These are the step-by-step instructions to get the necessary files on the Raspberry Pi:

  1. On your desktop, go to https://github.com/markondej/fm_transmitter and download the zip file
  2. Copy the downloaded zip file (fm_transmitter-master.zip) onto a flash card/thumb drive or email it to you
  3. On the RPI, insert the flash card/thumb drive or open the email with the attachment, and extract the zip file to a new folder, FMTransmitter, on the RPI file directory
  4. Move all files inside the folder “fm_transmitter-master” outside that folder, but inside “FMTransmitter”, and then, delete the emptied “fm_transmitter-master” folder

The next step is to “compile” the newly created files.  For this, do the following:

  1. Open up the LXTerminal on the RPI
  2. Type: sudo apt-get install make gcc g++
  3. Type: cd FMTransmiter
  4. Type: make

Once the files have been compiled using Make, you will see that the “fm_transmitter” is now a program (represented by an icon inside the FMTransmitter folder).  Now, we can begin broadcasting our FM signal.  To do this, the video tutorial said to type:./fm_transmitter star_wars.wav 88.7 (this is the broadcast frequency I used), but this did not work for me.  I found that typing the following did the trick:  sudo ./fm_transmitter -f 88.7 -r star_wars.wav

Progress Report (7/26/16)

So far, the project is going along fairly swiftly. There have been some minor issues, but for the most part everything seems to be going along as it should. Below are some pictures of what I’ve done, as well as the materials I’ve needed.

Initial Setup

WP_20160725_14_55_10_Rich.jpg

Installing Raspian OS

WP_20160725_14_55_00_Rich.jpg

Raspberry Pi with external devices

WP_20160725_14_55_32_Rich.jpg

Raspian OS Installed & Running

WP_20160725_15_10_31_Rich.jpg

Antenna Diagram

pifm-gpio.png

 

Progress Report (7/24/16) Part 2

Here is an extended list of materials that I will be using for this project. Each piece has an attached link and website so others that are interested in doing a similar project can follow my guidelines and materials.


To make it easier to implement, I decided to purchase all the required and optional materials and components from one source, Amazon.  Some of these may be cheaper at other retailers, but, I found that the process of researching for the right components, and then, looking for a place to purchase them online, was a challenge in and of itself.  Therefore, to produce a list of the materials needed to complete this project, with the appropriate Amazon links to purchase them, was one way to contribute to the hacker community”

 

Required:

 

–          Raspberry Pi 3 Complete Starter Kit ($64.99) https://www.amazon.com/gp/product/B00MV6TAJI/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

–          Jumper Wires ($8.99) https://www.amazon.com/gp/product/B019IIG4A4/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

 

If Needed:

 

–          USB Keyboard ($9.99) https://www.amazon.com/gp/product/B005EOWBHC/ref=oh_aui_detailpage_o01_s01?ie=UTF8&psc=1

–          USB Mouse ($7.99) https://www.amazon.com/gp/product/B005EJH6RW/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1

–          HDMI to VGA Cable (to connect to a VGA Monitor) ($10.99) https://www.amazon.com/gp/product/B01ALI4VHI/ref=oh_aui_detailpage_o01_s01?ie=UTF8&psc=1

–          Flash Memory Card Reader ($5.99) https://www.amazon.com/gp/product/B00OJ5WBUE/ref=oh_aui_detailpage_o01_s01?ie=UTF8&psc=1

 

Optional:

 

–          USB External Sound Card Audio Adapter for Microphone Input ($6.99) https://www.amazon.com/gp/product/B0027EMHM6/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

–          USB Audio Interface for RCA Input ($22.10) https://www.amazon.com/gp/product/B000KW2YEI/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

–          Multiple RCA Input Switch ($7.49) https://www.amazon.com/gp/product/B00HNCPR92/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1