Archive for the ‘Projects’ Category
Wednesday, May 20th, 2015
TechTV, the 24-hour technology-oriented cable channel was a never ending source of inspiration to me when I was growing up. Back then, TechTV was only available in my area on digital cable, a newfangled platform that people didn’t want to pay the extra money for. By the time I had ditched analog cable, TechTV was long gone, absorbed into G4, with any programming carried over reduced to a shell of its former self.
Back in the heyday (2001-2002 for this example), TechTV decided to release direct-to-video VHS tapes of various one-off programs and specials designed as something of an informational/instructional reference. I remember these being advertised, and the concept excited me as it was a way to get TechTV content without needing the cable service. That said, I never got to view a single one of these tapes. Unfortunately, they were priced a just a little too high. It was a big financial investment for an hour of content.
Over a decade later, a few of these tapes have made their way online. By my research, I can find that TechTV produced six (Maybe more?) VHS tapes, three of which some kind souls have digitized and put on YouTube or The Internet Archive. But, that means that there are three other tapes out there which I or anyone else have a hard time getting at unless we want to spend a bunch of money working our way through Amazon resellers. Not something I want to do. To add to this, the digitized videos available online are not the best quality. Again, thanks to the kind souls who went through the trouble, but I would really like to see the maximum quality squeezed out of these bad boys. Over the years, there have been many efforts to find old TechTV recordings from over-the-air, but these tapes remain mostly lost.
Let’s try to fix that.
I’ve created a project page to track as much information as I can on these tapes and am looking for any people who can create digital rips themselves or send these tapes my way to rip. I can’t offer any money to buy them, but you’ll be doing a good service getting these videos out there. Once again, I would like to find fresh sources for each of the tapes listed if possible.
The titles I can find existing are as follows, let me know if I missed any:
TechTV’s Digital Audio for the Desktop (2001)
TechTV’s How to Build Your Own PC (2001)
TechTV’s Digital Video for the Desktop (2002)
TechTV Solves Your Computer Problems (2002)
TechTV’s How to Build a Website (2002)
TechTV’s How to Build a Website (2002)
Saturday, April 4th, 2015
Since both TechTat and ChannelEM are essentially no longer updated, I didn’t want to have to worry about maintaining them on the server. I’ve backed up their installations, and created static html versions of each website which are now up at the URLs below.
The static sites are not perfect, and may have some missing thumbnails, background images, or pages that were created on-the-fly by applications. Regardless, all the pages and their information should be intact. The original domains should work until I let them expire, but for now they will offer up a redirect to the new static sites. Neither Techtat nor ChannelEM ever got the traction I hoped they would, though they proved to be interesting projects when they were active. ChannelEM in particular, when it worked, worked very well and I would love to apply the approach of an online television station developed there to another project down the road.
Until then, I’ll narrow my focus a bit, and continue my “Spring Cleaning” as best as I can.
Tuesday, April 8th, 2014
A few months ago, I got involved with my university’s radio station. It happened unexpectedly. I was out with some friends in the city and two of us made our way back to the school campus. My friend, a member of the station, had to run inside to check something out and ended up calling me in because there was some older gear that he wanted me to take a look at. I was walked past walls of posters and sticker-covered doors to the engineering closet. The small space was half the size of an average bedroom, but was packed to the brim with decades of electronics. Needless to say, I was instantly excited to be there and started digging through components and old part boxes. A few weeks later, after emailing back and forth with a few people, I became something of an adjunct member with a focus in engineering. This meant anything from fixing the doorbell to troubleshooting server issues, the modified light fixtures, the broken Ms. Pac-Man arcade machine, or a loose tone-arm on a turntable. There are tons of opportunities for something to do, all of which I have found enjoyment in so far.
Let’s take a step back. This radio station isn’t a new fixture by any means. I feel that when people think of college radio these days they imagine a mostly empty room with a sound board and a computer. Young DJ’s, come in, hook up their iPod, and go to work.
This station is a different animal. Being over 50 years old means a lot has come and gone in the way of popular culture as well as technology. When I first came in and saw the record library contained (at a rough estimate) over 40,000 vinyl records, I knew I was in the right place. I began to explore. I helped clean out the engineering room, looked through the production studio, and learned the basics of how the station operated. After a few weeks, I learned that the station aimed to put out a compilation on cassette tape for the holiday season. One of the first tasks would be to get some 50 station identifications off of a minidisc to use between songs. Up to the task, I brought in my portable player and with the help of a male/male 3.5mm stereo cable and another member’s laptop, got all the identifications recorded. While the station borrowed a cassette duplicator for the compilation, it would still take a long time to produce all the copies, so I brought in a few decks of my own and tested some of the older decks situated around the station. It was my first time doing any sort of mass duplication, but I quickly fell into a grove of copying, sound checking, head and roller cleaning, and packaging. If felt good contributing to the project knowing I had something of a skill with, and large supply of old hardware.
A little later, I took notice of several dust-coated reels in the station’s master control room containing old syndicated current-event shows from the ’80s and ’90s. I took these home to see if I could transfer them over to digital. I ran into some problems early one with getting my hardware to simply work. I have, at the time of writing, six reel-to-reel decks, all of which have some little quirk or issue except one off-brand model from Germany. I plugged it in, wired it to my computer via RCA to 3.5mm stereo cable, and hit record in Audacity. The end result was a recording in nice quality.
Stacks of incoming reels.
I decided to go a little further and use this to start something of an archive for the radio station. I saved the files using PCM signed 16 bit WAV, and also encoded a 192kbps MP3 file for ease of use and then scanned the reel (or box it was in) for information on the recording, paying attention to any additional paper inserts. I scanned these in 600dpi TIFF files which I then compressed down to JPG (again, for ease of use). Any interesting info from the label or technical abnormalities were placed in the file names, along with as much relevant information I could find. I also made sure to stick this information in the correct places for the ID3 tags. Lastly, I threw these all into a directory on a server I rent so anyone with the address can access them. I also started asking for donations of recordings, of which I received a few, and put them up as well.
What’s up next?
After I transferred all the reels I could find (about 10), I went on the hunt for more. Now, until this point, I had broadcast quality 7-inch reels that ran at 7.5ips (inches per second) with a 1/4-inch tape width. A lot of higher quality recordings are done on 10.5-inch reels that run at 15ips, though sometimes 7-inch reels are used for 15ips recordings. Reel-to-reel tape can also be recorded at other speeds (such as 30ips or 3.75ips), but I haven’t come across any of these besides recordings I have made. Now, while my decks can fit 7-inch reels okay, they can’t handle any 10.5-inch reels without special adapters (called NAB hubs) to mount them on the spindles which I currently don’t have. Additionally, there are other tape widths such as 1/2-inch which I don’t have any equipment to play. The last problem I encounter is that I don’t have any machines that can run at 15ips.
Doing more exploratory work, I got my hands on several more 7-inch reels and also saw some 10.5-inch reels housing tape of various widths. Some of the 7-inch reels I found run at 15ips, and while I don’t have a machine that does this natively, I’ve found great success in recording at 7.5ips and speeding up the track by 100% so the resulting audio plays twice as fast. As for the larger reels, I may be able to find some newly-produced NAB hubs for cheap, but they come with usage complaints. While original hubs would be better to use, they come with a steep price tag. There is more here to consider than might be thought at first. Additionally, there is a reel-to-reel unit at the station that though unused for years is reported to work and be able to handle larger reels and higher speeds. However, it is also missing a hub and the one it has doesn’t seem to come close to fitting a 10.5-inch reel properly. At the moment, there doesn’t look to be anything I can use to play 1/2-inch width tape, but I’m always on the hunt for more hardware.
There are literally hundreds of reels at the station that haven’t been touched in years and need to be gone through, it’s a long process but it yields rewarding results. I’ve found strange ephemera: people messing with the recorder, old advertisements, and forgotten talk shows. I’ve also found rare recordings featuring interviews with bands as well as them performing. This is stuff that likely hasn’t seen any life beyond these reels tucked away in storage. So back to transferring I go, never knowing what I will find along the way
From this transferring process I learned a lot. Old tape can be gummy and gunk up the deck’s heads (along with other components in the path). While it is recommended to “bake” (like you would a cake in an oven) tape that may be gummy, it can be difficult to determine when it is needed until you see the tape jamming in the machine. Baking a tape also requires that it is on a metal reel while most I have encountered are on plastic. Additionally, not all tape has been stored properly. While I’ve been lucky not to find anything too brittle, I’ve seen some tape separating in chunks from its backing or chewed up to the point that it doesn’t even look like tape anymore. More interesting can be some of the haphazard splices which may riddle a tape in more than one inopportune spot or be made with non-standard types of tape. I’ve also noticed imperfections in recording, whether that means the levels are far too low, there’s signs of a grounding loop, or the tape speed is changed midway through the recording. For some reels there is also a complete lack of documentation. I have no idea what I’m listening to.
I try to remedy these problems best I can. I clean my deck regularly: heads, rollers, and feed guides. I also do my best to document what I’ve recorded. I listen to see if I can determine what the audio is, determine the proper tape speed, figure out if the recording is half track (single direction, “Side A” only) or quarter track (both directions, “Side A + B”), and determine if the recording is in mono or stereo. Each tape that goes through me is labelled with said information and any information about defects in the recording that I couldn’t help mitigate.
After dealing with a bad splice that came undone, I’ve also gone ahead and purchased a tape splicer/trimmer to hopefully help out if this is to happen again. As for additional hardware, I’m always on the lookout for better equipment with more features or capabilities. I don’t know what I’ll ultimately get my hands on, but I know that anything I happen to obtain will lend a hand in this archiving adventure and help preserve some long-forgotten recordings.
After doing this enough times, I’ve started to nail down a workflow. I put all the tapes in a pile for intake, and choose one to transfer. I then feed it into the machine, hit record in Audacity, and hit play on the deck. After recording, I trim any lead-in silence, speed correct, and save my audio files. At this point, I also play the tape in the other direction to wind it back to its original reel and see if there are any other tracks on it. From here, I label my files, and go on to make scans of the reels or boxes before then loading these images into Photoshop for cropping and JPG exporting.
It is a lot of work, but I can easily crank out a few reels a day by setting one and going about with my normal activities, coming back periodically to check progress. I have many more reels to sift through, but I hope one day to get everything transferred over – or at least as much as I can. Along the way, I’ve come across other physical media to archive. There are zines, cassette tapes, and even 4-track carts that are also sitting away in a corner, being saved for a rainy day.
I’ll keep archiving and uncovering these long forgotten recordings. All I can hope for is that some time, somewhere, someone finds these recordings just as interesting as I do.
Even if nobody does, I sure have learned a lot. With any luck, I’ll refine my skills and build something truly awesome in the process.
Tuesday, January 28th, 2014
This article was originally written for and published at Philly Mesh on January 28th, 2014. It has been posted here for safe keeping.
The first time I remember hearing about mesh networks was sometime around 2005. Through rigorous searches, I had finally tracked down a complete run of Seattle Wireless TV, a proto-podcast that ran from July of 2003 until June of 2004. This hunt was undergone for my own personal interests; I was and am something of an online-video-series junkie, and I have since posted all the episodes for download on Archive.org where they will be preserved for anyone to watch for years to come. The topics of these episodes varied from interviews with operators, to wardriving tips, and even antenna creation. Pretty popular topics back then, but now the show serves as a fantastic time capsule from a technologically-simpler time. Even ten years ago, “getting into” wireless networking seemed radically different. Everyone tried their hand at wardriving, embraced 802.11g, and wired cantennas to their Orinoco cards. Here is a prime example of the times — some Seattleites setting up their own mesh network in 2002. Essentially, Wi-Fi was king and you could have it in your own home. I didn’t end up jumping into the mix until years later. I got my first laptop in 2006 and even then I usually embraced a wired connection. Watching these video shows was my own little outlet into what the cool kids were doing. It wasn’t until a little later that I decided it was time to play.
In 2007, I received a La Fonera router from Fon courtesy of a free giveaway (I actually managed to snag one on the very last day they offered the promotion). I thought it might be cool to join their Wi-Fi collective, but I was much more interested in what else I could do with the device. The day it came in the mail I promptly researched what others were doing with it and joined in on the popular act of flashing dd-wrt firmware onto the little device to get some expanded functionality. This process was harder than I expected and my lack of knowledge on the subject at the time showed. After many frustrating hours — flipping back and forth between telnet, tftp, and IRC chatter — I had a fully functioning dd-wrt router of my very own. While this was a feat all in itself, it went on to inspire me to see what I could do with other routers. I soon grew a little collection of second-hand Linksys WRT54G routers to tinker with and take up space on my work bench. I tried out different firmwares like OpenWrt and Tomato and always tried to keep something new running on a separate network for me to play with so I didn’t accidentally bring down the whole house’s internet access with a bad flash or misconfiguration.
Years later, I ended up working with wireless technology in a professional capacity. However, I was no longer handling everyone’s favorite suite of 802.11 protocols but the new-fangled 802.15.4 for low-rate wireless personal area networks. I focused on the ZigBee specification and its derivatives, which were and are a popular choice for technologies like home automation systems, wireless switches, electrical meters, etc. I spent months toying with the technology, working to understand the encryption, capture and dissect the traffic, and create and transmit my own custom packets. While the technology itself was enough to hold my interest, I felt a draw toward the technology’s use of wireless mesh networking to create expansive networks.
This wasn’t my first foray into the world of mesh networking per se. Prior to my work with ZigBee, I focused on meshing briefly to combat network interruption when creating the topology for a hobby-run IRC network I was administrating. This was, however, my first time applying mesh ideas wirelessly. I quickly learned the ins and outs of the Zigbee specification and the overarching 802.15.4 standard, but I couldn’t help thinking about how these technologies applied to Wi-Fi and how much fun an 802.11 mesh network would be.
Soon, I discovered the existence of Philly Mesh, a Philadelphia-based mesh network in its infancy that connected with Hyperboria: a global decentralized network of nodes running cjdns. I made a few posts to its subreddit, added my potential node to the map, and ordered some TP-Link routers to play with. While the group seemed to be gathering support, it ultimately (and much to my dismay) stagnated. Expansion stopped and communication dwindled. People disappeared and services started to fall apart. Over the next year I tried to work through getting my own node up but hit several setbacks. I bricked a router, ran into configuration problems, suffered from outdated or missing documentation, and then bricked another router. Eventually, after a seemingly endless process of torment and discovery, I connected to the network using a Raspberry Pi. My first cjdns node was up.
After this, I made a push to revive the Philly Mesh project. I constructed a new website, revived some of the services, and started my push for finding community involvement. Though it stands to be a slow process, things are coming together and people are coming forward. Whether or not we will have a thriving mesh network in the future is unknown, but the journey in this case interests me just as much as the destination.
As of now, I’m embracing wireless mesh as a hobby. I still have a pile of routers to play with and test firmware on, and am getting new hardware every so often. As for the bricked TP-Links, I’ve picked up USB/TTL adapter in an attempt to correct my wrongdoings and get cjdns set up properly. I’m also constantly playing with my settings on the Raspberry Pi installation as I have to firewall things off, assure reliability for an application crash, and generally make sure things are running smoothly. Additionally, I’ve been toying around with different technologies to set up an access point through the Raspberry Pi such as a USB/Ethernet adapter to bridge a connection between an old router and the Pi, and a USB dongle to create an access point in a more direct model. Aside from the Raspberry Pi and assorted routers, I’m also interested in getting cjdns installed and configured on plug computers like the Pogoplug and single board computers like the BeagleBone Black.
Where will all of this take us? Hopefully this is a stepping stone on the way to building a thriving local mesh, but the future is unknown. I’d love to get some nodes set up wirelessly within the city, but I’m only one person out in the suburbs tinkering away. While I’m sitting here learning about setting up devices, I only hope to share what I find with others who might benefit from having someone else carve out an initial path. I, by myself, can work to build a local mesh but it wouldn’t be nearly as robust or expansive as if I worked within a team sharing ideas and experience.
If you’re reading this, you have the interest. You may not have the know-how, the money for high-tech equipment, or a location nearby other potential operators, but you have the desire. If there’s anything that I’ve learned throughout my ongoing mesh adventure, it’s that good things take time and nothing happens overnight.
Tomorrow, we can work to build a strong mesh for our city. As for today, why don’t we get started?
Friday, September 6th, 2013
If you have not done so already, please read parts 1, 2 & 3 of this series.
As of writing this, I’ve spent one week running my setup with one USB Block Eruptor and one week running my setup with three. In my first week, I received about two payouts of 0.01 bitcoin each while in the second week I received that payout almost daily.
The current average Bitcoin rate in USD (as of this writing) is $144.99322. This means my payout, one hundredth of that value, is $1.4499322. Now, this doesn’t sound like too bad of a payout. However, there is a lot to consider when figuring out whether or not I will actually make any money off of this in the long run.
First, we have to consider that the price of a bitcoin is constantly fluctuating. When I started this project, the exchange rate was ~$119.00 USD. This amount could change at any time as the value inflates or deflates. Next, we have to consider the change in mining complexity – as more people start mining, the harder it will be. This is not only a problem of competition, the difficulty of generating a block increases systematically every 2016 blocks (roughly two weeks) Thus, as time goes on, you’ll make less money.
Aside from these variable rates, we have some constants to think about. The initial investment wasn’t enough to break the bank, but it wasn’t anything to ignore.
Recall our initial build list, this time with some prices:
- 1 x Raspberry Pi ($35 + $4.98 shipping = $39.98)
- 1 x ~4GB SD Card ($5.01 + $0 shipping = $5.01)
- 1 x Micro USB Cable ($2.60 + $0 shipping = $2.60)
- 1 x Network Cable ($5.49 + $0 shipping = $5.49)
- 1 x Powered USB HUB ($19.95 + $0 shipping = $19.95)
- n x USB Block Eruptor (($42.99 + $3.99 shipping) * 3 = $140.94)
Total = $213.97 USD
Pretty big when you put it all together, but this is worst case scenario – when you don’t start with anything. I already had most of this around the house. Besides the USB Block Eruptors, I did need to purchase a USB hub, but I wouldn’t consider this part of my investment as I needed one anyway (the project more or less gave me an excuse to get it). I’m more concerned with making back my money from the Block Eruptors, which total $140.94 USD.
Next, we should consider power requirements. Again, this doesn’t matter to me much, I’m just focused on earning back money for the USB Block Eruptors, but let’s hook the whole rig up to my Kill A Watt electricity usage monitor and see what it says.
Kill A Watt reading for kWh over 44 hours.
The Kill A Watt states that the consumption is 0.55 kWh, this was taken over a period of 44 hours. Now let’s say our monthly electricity rate was 15 cents per kWh. We can plug all of those numbers into this handy formula: 0.55 kWh / 44 hours * 732 hours [hours in a month] * $0.15 [price per kWh] = $1.37 per month. So overall the power cost isn’t too bad, especially compared to old GPU rigs.
Okay, now we know the power consumption, have our initial costs, are mindful of the changing rates, etc. How do we put it all together?
The Genesis Block has created the Mining Dashboard just for this sort of thing. We can plug in all of our information here and see what’s what. They do have some fields for power, but that doesn’t take into account the Raspberry Pi and the hub. Plug in what matters to you. You cannot retroactively compute values, so I’ll have to base my start in September. However, this doesn’t take into account that I’ve already mined $9.96 (in the current exchange rate), so I’ll subtract that from my investment of $140.94 to get $130.98. It’s a dirty workaround, but this is an estimate after all. After putting in all the values, hit ‘Calculate.’ Here are my results:
My Mining Dashboard projection.
From the projection, I will never break even and will forever be $44 in debt because my setup will be completely obsolete in around 10 months time.
Now as I said, this is a projection but it’s likely closer to being accurate than it is to inaccurate. I likely won’t make my money back unless the value of a bitcoin continues to rise and/or the mining complexity grows at a slower rate (which is unlikely).
I’m not the only one in this boat. As more and more powerful ASIC rigs are being produced, the window for profit gets smaller and smaller. Some new ASICs sold now won’t even be able to turn any profit for owners because the time between ordering and arrival leaves too small a window to mine back the initial investment at the current complexity.
While it is unfortunate to (likely) not turn a profit, this still proved to be a fun and incredibly interesting project. I may not have come out of it with financial wealth, but the ability to look down at my little Raspberry Pi chugging away (actually turning electricity into money, who knew?) was completely worth the time and effort I put into it. I’ll likely end up sitting on the bitcoins I mine now for a little while, just like I did back when my wallet got its first deposit. I’m more infatuated with mining and collecting the currency than I am with spending it, at least for right now..
Hopefully you, one way or another, have learned something from my little journey.
I know I did.
Thursday, September 5th, 2013
If you have not done so already, please read parts 1 and 2 in this series.
So I have a mining rig that’s successfully rewarding me with bitcoins. Normal people would probably stop at this point. One nice thing about mining in Slush’s Pool is that it has a handy email notification option that tells you when credit is being transferred to your Bitcoin wallet. This is pretty cool, but what if I want more in-depth information? For example, what if I want to know my hash rate, or if my miner is alive (did the system crash?) or how many bitcoins I have total?
The next step for me was to create a mobile application which could provide all this information – whenever or wherever I wanted it. So, I got to work.
The platform I chose to work with was Android. A logical choice for me as I had prior experience developing Android applications and own an Android phone myself. Programming for Android, as many know, means programming in Java. If you have any prior Java experience, you’re already have a head start if you ever wanted to get into Android development.
A fantastic thing about Slush’s Pool is that it offers an API (Application Programming Interface) which allows users to pull down information on their miners using the de facto JSON format. So from this I can get at my mining information, but what else do I want? I decided it would be wise to pull down the average value of a bitcoin in USD, at any given moment. This way, I can do some simple calculations to determine a rough estimate of how much I’m generating and getting payed in USD. Lastly, I wanted to get the balance of my Bitcoin wallet, again to be displayed in both Bitcoin and USD.
I already had the API information for Slush’s Pool, as it is linked on everyone’s profile and accessed via a common base url and unique key for each user. Here is an example of the JSON output for my account:
Next, I needed an API for the average value of a bitcoin in USD. I went on the hunt. Finally, I found that Mt. Gox, the largest Bitcoin exchange, has a public API for bitcoin rates (located at this ticker URL). This works perfectly for my needs. Here is some sample JSON output from this API:
So far, so good.
Lastly, I wanted wallet information. I discovered that Blockchain shows records of transactions (as they are all recorded in the block chain), so I did some probing and found they also offered an API for attributes of individual wallets (Here’s a link using my wallet info, it’s all public anyway). This includes balance, transactions, etc. The units for bitcoins here is the Satoshi, one millionth of a bitcoin. Some sample JSON output from this service looks like so:
So now I had the APIs I was going to use and needed to put them all together in a neat package. The resulting Android application is a simple one. Two screens (home and statistics) with a refresh button that pulls everything down again and recalculates any necessary currency conversions. Android does not allow you to do anything system-intensive on the main (UI) thread anymore, so I had to resort to using an asynchronous task that spawns a new thread. This thread is where I pull down all the JSON (in text form) and get my hands dirty manipulating the data. I utilize a 3rd party library called GSON to parse the data I need from the JSON string. Then, it’s just a little bit of math and we have all the necessary data. After all of that is done, the application prints everything on the screen. Pretty basic, and with plenty of room for potential additions.
When running the application, provided there’s network connectivity and all the servers are up, you will be rewarded with a screen like this:
The application in action
Not too shabby. If you wanted to use it yourself, it would be necessary to hard-code your own key from Slush’s pool. There doesn’t appear to be an API call by username (by design), so it needs to be implemented manually at some point (which happens to be in code as of right now).
The source for this application, which I call SlushPuppy, is freely available on GitHub. Feel free to fork it, or just download and mess around with it. If anything, it provides a small example of both Android-specific programming as well as API interaction.
Wednesday, September 4th, 2013
If you have not yet, please read the first article in this series: Mining Bitcoin for Fun and (Basically No) Profit, Part 1: Introduction
I have a few Raspberry Pis around my house that I like to play with – four in total. Prior to this idea of a Bitcoin project, I had one running as a media center and another operating as a PBX. Of the remaining two, one was an early model B with 256MB of RAM while the other was the shiny new revision sporting 512MB. I wanted to save the revised model for the possibility of a MAME project, so I decided to put the other, older one to work. It would help me on my quest to mine bitcoins.
Raspberry Pi Model B
But what is mining exactly you may ask? Bitcoin works on a system of verified transactions achieved through a distributed consensus (a mouthful I know). Every transaction is kept as a record on the Bitcoin block chain. Mining is more or less the process of verifying a “block” of these transactions and appending them to the chain. These blocks have to fit strict cryptographic rules before they can be appended, else blocks could be modified and invalidated. When someone properly generates one of these blocks, the system pays them in a certain amount of bitcoins (currently 25). This process repeats every ten minutes.
I knew that at this stage in the mining game I had to go with an ASIC setup and I new I wanted to run it off of my Raspberry Pi. Simple enough. The Raspberry Pi is a fantastic platform for this considering its price, power consumption, and horsepower. For mining hardware, I decided to buy the cheapest ASIC miners I could get my hands on. I found the ASICminer USB Block Eruptor Sapphire for the low price of $45 on Amazon. They cost more money on eBay and I couldn’t buy them from any sellers with Bitcoin because I didn’t have any (and didn’t want to bother with exchanges) so this seemed like the way to go. The Block Eruptor could run at ~330MHash/s, which is pretty hefty compared to GPU mining and at a fraction of the price. It is also pretty low power, using only 2.5 watts.
ASICminer USB Block Eruptor
So I figured that I would get one of those, but also devised a more complete and formal parts list:
- 1 x Raspberry Pi
- 1 x ~4GB SD Card
- 1 x Micro USB Cable
- 1 x Network Cable
- 1 x Powered USB HUB
- n x USB Block Eruptor
That’s the basics of it. I already had the Raspberry Pi, and the necessary cables and SD card. These were just lying around. I needed to purchase a USB hub, so I bought a 7-port model for about $20. The hub needs to be powered as it will be running both the Raspberry Pi and the USB Block Eruptor. Considering power, the Raspberry Pi claims to draw somewhere around 1-1.2 Amps maximum while the USB Block Eruptor claims to draw 500 milliAmps maximum. I tested things out using my Kill A Watt and found that my setup with the USB hub, Raspberry Pi, and three USB Block Eruptors draws only 170 milliAmps and uses only 12.5 watts! So the projected power usage seems off for me, but I can’t guarantee the same results for you.
After buying my USB Block Eruptor on Amazon, I got it in about a week. The day after I got it and made sure it was working, I ordered two additional units to fill out the hub a little more.
To do anything with Bitcoin, we’re first going to need a wallet and a Bitcoin address. Which wallet software you use is up to you. For desktop apps, there is the original Bitcoin-qt, MultiBit, and other third-party wallets. There are mobile applications like Bitcoin Wallet for Android, and even web-based wallets like BlockChain that store your bitcoins online. Figure out what client works best for you and use it to generate your Bitcoin address. The address is a series of alphanumeric characters that act as a public key for anyone to send bitcoins to. This address is also linked to a private key, not meant to be distributed, which allows the address holder to transfer funds.
In order to use the USB Block Eruptor, we’re going to need mining software. One great thing about using the Raspberry Pi as a platform is that someone has already made a Bitcoin mining operating system called MinePeon, built on Arch Linux. The distribution combines existing mining packages cgminer and BFGminer with a web-based GUI and some nice statistical elements. You’re going to need to download this.
To copy the operating system image file onto the SD card for your Raspberry Pi, insert the card into your computer and format it with the application of your choosing. Since I did this with a Windows system, I used Win32 Disk Imager. It is fairly straight forward: choose the image file, choose the drive letter, hit write, and you’re done.
Win32 Disk Imager
Okay, software is ready. Now to set up the Raspberry Pi, insert the SD card into the Pi’s slot. To power the Pi, plug your Raspberry Pi into one of the USB ports via Micro USB cable. Then, plug the USB hub into one of your Raspberry Pi’s free USB ports. Any USB Block Eruptors you have can be plugged into the remaining USB ports on the hub (not the Raspberry Pi directly), but keep heat flow in mind as they get pretty hot. Next, connect the Raspberry Pi to your home network. Finally, plug your hub’s power cord in and let the Pi boot up.
To go any further, you will need to determine your Raspberry Pi’s IP address. If your router allows for it, the easiest way is to log in to it and look for the new device on your network list. Alternatively, plug a monitor or television into your Raspberry Pi and log directly into the system using minepeon as the user and peon as the password. From there, run the ifconfig command to retrieve the internal IP address.
Navigate to MinePeon’s web interface by typing the IP address in your browser. You’ll have to log in to the web interface using the previously defined credentials: minepeon as the user and peon as the password. You should be presented with a screen similar to this (But without the graphs filled in):
MinePeon Status Screen
If you receive an in-line error about the graphs not being found, don’t worry. You just need to get mining and they will generate automatically, making the message go away.
In order to utilize the software, you will now need to register with one or more Bitcoin mining pools. Mining pools work using distribution. The pool you are connected to will track the progress of each user’s attempt at solving a block for the block chain. On proof of an attempt at solving the next block, the user is awarded a share. At the end of the round, any winnings are divided among users based on how much power (how many shares) they contribute. Why use a mining pool at all? Payout usually only happens for one user when a block is solved. It can be very difficult for a user to mine a bitcoin, even after months of trying as the odds of success are always the same. Mining independently offers the opportunity of a giant payout at some point, but pooled mining offers smaller, more regular payouts.
Mining pools can differ greatly in how the payout is divided. I’d advise that you do some research as to which method works best for you. Alternatively, you could go about setting up your own mining pool, but I wouldn’t advise it without a substantial amount of processing power unless you’re willing to wait for a payout (if it even comes at all).
Anyway, I chose two mining pools: Slush’s pool (my primary) and BTC Guild (my fail-over in case my primary is down).
Registering with a mining pool is as simple as registering with any other website. After completing registration, you will be supplied with a worker name/password and the server address. These credentials can then be pushed into the MinePeon Pools configuration like so:
MinePeon Mining Pools
Next go to the Settings page and change your password for the MinePeon web interface (it’s a good idea), the timezone (this is buggy right now and won’t look like it’s working on the settings page) and any time you want to donate to the MinePeon maintainer (if any).
If everything is configured correctly, within a few hours (or instantly), you should see some activity on your MinePeon Status screen. Additionally, be sure to check your account on the mining pool you signed up with to make sure everything is working as expected.
My MinePeon Pool & Device Status
My Slush’s Pool Worker Status
Now, just sit back and let your machine go to town. The only thing you have to do at this point is make sure the USB hub continues to get power (don’t let anyone unplug it) and it should run continuously. On your first day or two, it may take a while before your status update and payout will take even longer.
My mining rig, hub side
My mining rig, Raspberry Pi side
Most mining pools offer status tracking for your payout, so you should be able to see how things are progressing fairly quickly. As of this article being published, I receive a payout of 0.01 Bitcoin near every 24-30 hours while running three USB Block Eruptors.
Wednesday, September 4th, 2013
Note: This article is the first entry in a series I am writing for Philly2600.
If you’re anything like myself, you’ve been keeping loose tabs on Bitcoin over the years. When I first read about the cryptocurrency, I thought it was an awesome concept. Now, I had heard about electronic currencies before. The first mental link I made upon hearing about Bitcoin was that it reminded me of e-gold. Founded in 1996, years before Paypal, e-gold was a gold-backed digital currency created by a few guys in Florida. e-gold was the de facto currency for underground transactions, and was recently referenced in Kevin Poulsen’s Kingpin as the choice of the carder market – the collection of online outlets to buy and sell credit card information.
Though it was forged near the tail of e-gold’s run and adopted a similar concept, Bitcoin turned out to be a different beast entirely. While it is still favored for underground transactions, closely integrated with controversial websites like The Silk Road, the currency had striking differences that allowed it to come into its own. Bitcoin is distributed (read peer-to-peer), decentralized, and considered fiat money (as opposed to representative money). There is no central authority to go to with legal matters, you cannot simply flick a switch and shut down the network, and the currency only has value because we give it value – it isn’t backed against gold or silver or another currency.
Bitcoin also has an interesting history. The identity of the creator, who goes by the name Satoshi Nakamoto, is still unknown to the public. Many theories have come up to who the man behind Bitcoin really is. Some speculations range from an academic team to a government agency to a reclusive cryptographer. If you want to see more speculation, there’s an interesting Vice article about the whole thing I’d recommend checking out.
In 2011, I got interested enough in Bitcoin to set up my own wallet, download the block-chain, and set up little donate buttons on a blog or two. The donations never rolled in (and why would they), but my fascination with the technology did. The idea of a monetary system that worked sort of “like BitTorrent” not only held my attention because of the possibility of financial success but also because it made me feel like I was at the forefront of something cool and exciting. I pictured scenes straight out of Serial Experiments Lain or Neuromancer with a dingy apartment somewhere in a dense city. A patchwork of tangled computer cables linking unknown and mysterious hardware together to just run and create money for me while I’m out. Nothing ever sounded both so cyberpunk and actually possible (though probably not as bleakly artistic).
At the time, CPU mining was on its way out as GPU mining was taking over. The internet was flooding with pictures of enthusiasts’ mining rigs. Case-less computers, motherboards with a large amount of PCI slots, each filled with a top-of-the-line graphics card. One of these setups was big, hot, messy, expensive, and beautiful. Usually a person would have a few of these chaotic mining machines all running in the same room and they caught the cyberpunk feel I so badly wanted to create for myself. I wanted the hectic rat’s nest of wires and satisfaction of a successful rig build.
The “Super Rig”
I never got that far. Building a machine to do this was an expensive process and I didn’t want to put a huge investment on the line when I was operating on a limited budget in the first place. So, ultimately, I steered away from mining as a whole.
That didn’t turn me off from the whole technological concept though. I did end up surveying the field to see what people were using Bitcoin for. The possibilities seemed endless. Aside from sales of underground goods, I saw there was gambling, web hosting, and even retails sales (including some coffee shops). Pretty much any type of business that could accept Bitcoin was starting to have outlets that accepted the digital currency. I did what any Bitcoin novice did: got my 0.005 BTC from BitFountain for free (now defunct), and sat on it. No use doing anything with it. One bitcoin was worth around $8 USD at the time, so I had about four cents.
After the GPU mining wave, I next saw the FPGA generation. FPGA stands for Field Programmable Gate Array and is pretty much self-explanatory. An FPGA has a hardware array of logic gates like your typical AND or XOR operations. Sequences of logic gates can be put together to form half-adders and multiplexers and eventually processors (when you chain enough smaller components together). Normally, you would have all of these components pre-determined into some type of integrated circuit called an ASIC (standing for Application Specific Integrated Circuit) which are designed and programmed only for certain unique tasks. Think of an FPGA as a breadboard for the final ASIC design. Both the FPGA and ASIC are programmed in an HDL (hardware description language) such as VHDL or Verilog (or any other ones you might remember from a System Architecture class). Unlike your typical object-oriented or scripting languages, an HDL is more suited for the Electrical Engineer instead of the Software Engineer (me). An HDL allows you to create models and interactions of hardware components as though you had them available physically.
XILINX Spartan-3E FPGA
As you’d guess, FPGAs were a favorite for Bitcoin mining enthusiasts. Developers would program the boards to mine Bitcoin and leave behind anyone still pushing their GPUs to the limit. For me, FPGAs were still a massive investment. Though likely not as much as an outfit of new GPUs, coupled with enough electricity to power a small town, the amount of money for an FPGA was still a few hundred dollars. On top of that, I’d still have to dust off some of my class notes and program the thing. It would have been fun and a great learning experience but at the time I didn’t want the hastle. Besides, something better was coming soon anyway.
In the summer of 2012, I started discussing with my co-workers the feasibility of having us set up a Bitcoin mining operation. The whole concept was relatively simple: we were all going to throw money in for a new USB connected ASIC chip and run it off of a computer of our own. We did the math to figure out power consumption, our initial investment, mining complexity increase, etc. and the numbers for our break-even point looked pretty good. The company were were looking at for our miner was Butterfly Labs, who boasted they could provide a chip with an incredible hash rate at only a few hundred dollars. Split between a few people, it didn’t seem like too bad of a deal. Then, we started looking into the company. They were plagued with manufacturing delays. When you couple the time delay with the growing mining complexity, your return takes much longer. Couple that with the fact that Butterfly hadn’t delivered anything yet, the whole thing could have been someone’s pie-in-the-sky idea or giant scam. We decided to shut down our little plan and save ourselves the aggravation. This ended up being a wise decision. Butterfly Labs continued to be plagued by delays and people ended up auctioning off their pre-orders. There are still not that many Butterfly Labs ASIC chips out in the wild, even now.
Butterfly Labs ASIC Miner
After all this, I still wanted to try my hand at Bitcoin mining.
I knew that I wasn’t going to make a lot of money, but I thought it would be fun. If it made me any money, any at all, that would be something. So I got to work doing a little research.
Tuesday, August 20th, 2013
Every Summer I speculate that I’m going to have an unbelievable amount free time. It will always be so fantastic and freeing. I’ll be done school, working a stress-free job, and there will be so much unscheduled time that I’ll just get bored and come up with hundreds of new tasks for myself.
This never happens.
Well, the having-free-time-thing never happens but I do take on new activities anyway. After enough time, I end up with a bunch of things I’ve been meaning to do, and work on them impulsively at sporadic intervals. Everything moves forward, slow and steady, but in an agonizing and chaotic fashion.
I do make time for my projects, but the available time is fluctuating as the years go by. When I started these projects all I had was time and energy, but no money. Now, I seem to find myself with a modest amount of money and energy, but no time. Eventually, I’m doomed to have time and money, but no energy. This is the vicious cycle, and here I find myself in the second stage.
Without organization, every project falls on its face. I’m a big proponent of organization, especially when I have so much going on. After a while, you just need to keep track and work smarter (or risk meeting some men who want to put you in a straitjacket). Below, I’ve outlined (to the best of my ability) the various projects I’m working on, and where they need to go next. Hopefully this not only helps me stay on track but also gives you something to yell at me about the next time you see me.
I’ve actually had most of an episode filmed for a long time by this point. The only problem that I faced was the audio cut out at the end of one of the shots. After I redo it, which I wanted to do anyway, the footage should be mostly set to go into editing. Additionally, I’d like to film a little skit for the intro if I can manage it. Editing usually doesn’t take a whole lot of time, though I do want to try out some new software and I have to cut a brand new introduction. High definition video also proves to be more of a hassle and take some more (read unplanned) time.
This one is going along pretty well, especially recently. On the scanning side of things, I have plenty of stuff coming in but not a lot going up. The scanner I have is awful when it comes down to conducting magazine scans and I’ll have to look for something beefier before going full tilt on my library. As an aside, I’ve more or less created the most complete wiki of hacker magazines complete with information on them as far as I can tell. With my current rig, I can pump out some more Blacklisted! 411 issues without much hesitation.
Going after Revision3 has slowed a little, but I can get back into it with some one-liners soon. Getting to other odds and ends comes and goes as I find them. The only section that could have hours poured into it is the hacker con category. The videos I find not only have different ways of being obtained but also get updated with a new crop annually, so everything is constantly in flux. I’m trying to hunt down some of the more difficult stuff as well as fill in actual information about the conferences. If you want to help out, please do.
This one is more or less dead due to lack of interest. While it was cool having a collaboration site for retro tech, it lost its luster after a few months. I considered turning TechTat into an audio podcast but I’m not sure how that would turn out. I’m certain I can find some use for the concept.
ChannelEM keeps trucking on, but is prone to frequent crashing. It does seem to get more stable after software updates, but still ultimately hangs. I want to take a look at the scripting done to run the station and see if I can put in any fail-safes to stop the crashing. CEM also needs a rotation update with any new episodes. Further, the idea of getting new shows to join up is a bit fruitless now, but the site does well as it stands. For no real reason at all, I’d like to see if I can add on to the existing scripts and create a JSON API with scheduling information.
Moonlit has also been working on some very interesting video projects that I’d like to integrate which would completely change the look and feel of both the site and the content.
More or less in a standstill. The stability fluctuates and there isn’t that much going on there anyway. The IRC server is really only kept up if Ethan, Pat, and myself need a place to chat. For a network that has been off-and-on for 6-7 years, we have empty periods like this all the time. I’d like to just keep it up if I can.
The IPTV Archive
More or less in waiting. I put up a hefty amount of content, and then ultimately mirrored it to Internet Archive where it can live forever. If I had the time, I’d spend it doing more detective work for the missing shows- there is always more detective work to do. There are probably a half dozen more smaller shows I could throw up at some point but nothing too pressing.
Additionally, when I started the site I used Blip because it had (arguably) the best quality at the time. Now, YouTube has eclipsed it. There was a bit of panic a few months back about some Blip channels being closed down for no reason and I have to entertain the idea that this could happen to me. If that happens, the whole library would likely need to be moved to YouTube. A big move, but likely a nice one for the content.
Moreover, I’ve also considered moving the content over to Anarchivism as it would be a much more flexible platform.
House Keeping and Solo Projects
I enjoy writing and I’d to do more of it. Besides just being more active here, I’d like to get back into writing for other outlets. I’m thinking of more for The New Tech, and another for my local 2600 group. I’ve also been playing around with Medium (I like the concept but it still might be pretentious dribble) and would like to publish another article through it. I’m looking into 2-3 print publications as well if I can come up with the right topics and go into those pieces with the right energy.
Aside from my web work, I have a bunch of little, lower-profile things going on that I need to get out of the way.
I recently got a display for my Apple G5, so I can let it run as a capture PC for video transfers. I already have an ADVC box hooked up and the machine captures great… but it needs a monitor hooked up to run. Then, I can do more video transfers which can ultimately pop up in other places (Maybe a found footage section on Anarchivism).
I want to set up a dedicated headless Linux server for staging web projects amongst other things. I might also have it just run wget scripts all day or some custom web crawlers or who knows what else.
I have an old cocktail arcade cabinet that needs some love. If the original electronics are beyond repair, it would be nice to outfit the cab with new hardware and set up a MAME machine.
More Raspberry Pi projects would be nice. I like having the Incredible Pi set up as a PBX but I feel like I could do more with it. I have another Pi set up as a media center that I use often. I’m currently on setting up a Bitcoin mining rig with another and still have many more ideas. Raspberry Pi cluster? Telnet BBS? BBS hooked into the PBX? The possibilities are endless.
Paranoia kicks in with regard to my data. I have a dozen or so terabytes worth and I need to clean data off of old drives, sort it, duplicate it, and duplicate the data that’s already there. To make matters worse, I’m constantly downloading more.
A CJDNS Meshnet node has also been in the works for a long time. I tried to set up my first one on a PogoPlug and while I eventually got the software to compile, I couldn’t connect to anybody. It may be time for another try, and possibly on a “normal” box before adapting it to the PogoPlug.
And the list goes on.
There’s a lot of things here- a hell of a lot of things. I’d be lying if I said that there weren’t going to be even more. Hopefully, as I now have a nice little outline, I’ll be able to zero-in my focus and get some work done.
In the meantime, sit back and enjoy the show.
Tuesday, April 23rd, 2013
Yeah, I stole the title from the Halloween series. It seemed fitting.
So here we are about a year later. Guess what? Revision3 has killed off a few more shows, started a bunch more, and redesigned their site.
A few days ago, Moonlit and I got into an interesting Twitter conversation with Revision3, the results of which can be found here and here. Basically, with their site redesign they lost a bunch of shows which they then regained after we brought it up. They also claimed to fix some dead links, so some possible good news there. On the negative, they did say that some shows have been removed purposefully. Thankfully I believe I have a copy of everything they’ve taken down to date. On the whole, it felt as though they danced around issues I brought up, but at this point I find it unsurprising. It’s probably a good thing they didn’t Google me while we were talking.
I checked my download script from last summer, and sure enough it didn’t work. Upon doing a few trials, it’s a simple fix to change “small” to “medium.” So, I went ahead and updated it. This now works perfectly again (woohoo!).
I went through the wiki page and added in the shows that they had cancelled while I was out of the loop. I’m just going off of their “Archive Shows” page, which may be incomplete, but I don’t know enough about this age of Revision3 to tell you if something is missing or not. It doesn’t look too much as if they throw out shows altogether these days.
I count 10 more dead shows.
On a similar topic, I’m also finally getting work done with Hack College (One of the baby Rev3 Beta shows) and am in the process of uploading it. Let’s walk through how I did this finally because you might be curious.
I know that they have the series up on http://blip.tv/hackcollege. This is good for starters. I also know that youtube-dl supports Blip.tv. Excellent. After a little trial and error, I settled on this command:
youtube-dl -c -i -t http://blip.tv/hackcollege
This downloads all the videos from the hackcollege account, puts titles in the file names, continues incomplete downloads, and skips errors. I only added that last part because one video gave me an error (I eventually just downloaded it manually). Then, I forgot I wanted descriptions for each video, so I ran this:
youtube-dl -i -c -t –write-info-json http://blip.tv/hackcollege
See how easy that was? JSON descriptions in just a few seconds. Okay. A few people still know a little trick for getting RSS from Blip.tv: just add “/rss” after the account url. You can go ahead and load it yourself at http://blip.tv/hackcollege/rss. Now, if you’ve been downloading along, you might notice that youtube-dl only snags the .m4v files and there are these beautiful giant .mov files in the RSS feed. Wouldn’t it be nice to grab these? Unfortunately, you can’t fine-tune youtube-dl for these just yet (maybe if I hunt around in the source code I can set this up, but I honestly didn’t think of that until right now). How do we get these files? I came up with this one-liner:
curl http://blip.tv/hackcollege/rss | grep -o ‘http.*mov’ | sort | uniq > out.txt
Pretty self explanatory. Grab the RSS, filter for .mov links, and sort it to get rid of duplicates. Then, save it to a text file. You might notice that the RSS feed doesn’t contain links for every video. There really isn’t anything we can do about that, but it does appear that the .mov files were a semi-recent addition to these videos and earlier videos most likely don’t have the option. I’d say it’s a pretty safe bet that we’ve got them. Next, we will want to download those links. You can probably pipe that one-liner into wget, but I wasn’t ready to download when I wrote it, so I saved the text for later. Here’s how I eventually used it with wget:
wget –user-agent=”iTunes/10.6.1″ -c -i out.txt
It appears that Blip.tv white-lists your user-agent, so it knows to not allow wget, or probably a slew of other bots and/or browsers. You can find this out if you can download a file in your browser but running something automated on the site results in redirects and file fragments. There’s always a workaround. If you trick it into thinking you are iTunes, you not only get access to the files, but also get them faster than if you just manually downloaded from your browser (throttle-free!). Very nice. So after feeding the text file into wget, the .mov files download rather quickly. You don’t get the nice fancy file names like with youtube-dl, but you do get the files.
So there. Only took an hour or two to work everything out.
Well, as you can see, I’m finishing up a few parts of SaveRev3. Unfortunately, there is still work to be done and the list keeps on growing.
Here’s to another summer of hard drives and bandwidth. It’s going to be a hot one.