Tiernan's Comms Closet

Geek, Programmer, Photographer, network egineer…

Raspberry Pi as an Asterisk Box

The Raspberry Pi is a pretty amazing peice of kit for its price and size. And now, you can make it even more amazing by using it as a VoIP server for your house!

Check out Raspberry Asterisk for downloads, documentation, etc, on how to setup a Raspberry Pi and Asterisk. I have a couple Pi’s in the house, and plan on setting this up in the next few days. Keep your eyes on the site… more posts coming!

Also, as an added bonus: You can now use a 3G/HSDPA modem to make and recieve calls using Asterisk and your Pi! Carrier Connect has details of how they setup a couple of Raspberry Pi devices in Germany and Cambodia and anyone ringing from Germany got redirected to Cambodia, with no noticable issue. Very cool stuff! Have to try this!

Double Bonous: Chan-Dongle (the software that you use to make and recieve calls with GSM) also allows the device to accept SMS messages!

College Bag Contents

Tomorrow, Monday the 28th January, 2013, will be the start of my final real Semester in College. I have been studying part time for the last 3 and a bit years, and tomorrow marks the begining of the end… Its the final REAL semester, meaning at the end of this i will have exams, but i wont be “finished” as such… I have a final semester from September to December where i hand up my final year project, which i plan on documenting here soon.

Anyway, thats a long way of saying that today, i have been working on the contents of my college bag: What do i bring with me to college…

well, here it is:

There is a lot in this photo, so you may want to click though to see the full size, but lets start, shall we:

  • Laptop: MacBook Pro, Late 2008, 8Gb RAM, 500GB Hybrid HDD
  • Phones: HTC Titan (Windows Phone 7.5, main phone), HTC One X (Android, backup phone), , HTC HD2 (Windows Phone 6.5/Android hack, test phone (VOIP Stuff)), iPhone 4 (iOS, Data Phone)
  • USB Keys: Multiple USB Keys ranging from small 4Gb sticks to fast 32Gb USB 3.0 Keys… total space: 140GB
  • HotSpot: Zoom Travle Router with Wireless-N connected to the iPhone to give me a wireless access point for up to 254 devices…
  • Power: Veho Pebble. enough power to charge both the iPhone and HotSpot at the same time (hotspot powers iPhone while its on, and the Pebble powers the hotspot). May replace it with something more powerfull eventually…
  • Mouse: Microsoft Arc Mouse. Small, light, foldable and works perfect for what i need it for.
  • Memory card Reader: Lexar Dual Slot USB 2.0 Memory Card Reader: this is very fast… Has UDMA support for faster CF and SD cards… Used mainly for reading memory cards from cameras, but given my project uses a Raspberry Pi, and i have 2 of these, one in my main bag is handy.
  • Camera: I carry my a Samsung Galaxy Camera with me at all times. This is my new years resolution and its something that i handy to have with me. Taking photos of notes, videos of lectures, etc, is handy…. and given its a full Android device, i can send and read emails, tweets, facebook, etc.
  • MISC: I have a small USB Hub pictured (no link, dont know where i got it). I also have all the required cables (iPhone, mini and micro usb, power, etc) and what ever else is needed to run the whole show…

I am hoping that if i manage to build the Ultimate Mobile HotSpot with a Raspberry Pi, I can get rid of a few things (mobile hotspot, battery charger, replace the iPhone with an iPod Touch) and maybe a lot of cables… Ideally, the Ultimate Mobile Hotspot should have enough power to charge other devices, and be charged while running also… but thats another post for another day…

Raspberry Pi as a Mobile WiFi HotSpot (part 1)

I have been using an iPhone 4 as a wifi hotspot for a while now. It does not have a “phone” SIM in it, with calls and texts enabled, instead it has a 3G Data SIM from a dongle… It works OK, but there are a few issues i have with it…

  • No easy way to see how much data is being used, unless you Jail Break, and then battery life goes away…
  • not very hackable… other than Jail Break, and thats not hackable enough…
  • not a lot of storage: 16Gb, and most of that is takin up by Music and Apps
  • no background network daemons… more on that in a second…

The Network Daemons i am thinking would be useful for a WiFi Hotspot would be Squid, WANProxy, SSH, PPTP or OpenVPN Client and possibly a downloader of some sort. What i am thinking is as follows:

  • Have a device, that is small enough to fit in a bag, possibly small enough to fit in a jacket pocket. It will probably not be as small as the iPhone.
  • It should have storage on board. Boot storage and cache storage
  • At least 1, possibly more, WiFi Adapters, with optional antennas
  • At least 1, possibly more, 3G or 4G Modems
  • At least 1 ethernet port, again possibility for more
  • Battery that can run the whole system for at least 4-5 hours, and should be able to run while being charged. charging via USB would be ideal also
  • Optional Screen, but more likley, some sort of web interface to show whats going on (Bandwdith usage, clients connected, connection details)

When this turns on, it should automatically start the 3/4G connections (if there are multiple connections, it should do some balancing of the connections). if there are more then 1 WiFi Connection, one should be a Client (connect to an external WiFi connection, like home, college, work) and one should be an Access Point (Your Phone, Tablet and Laptop connect to this one). Ethernet can also be used in a simular way (if one only, it could be client or server, if multiple, one can be client, one can be server). DHCP addresses will be given out on Access Point or Server connections, and on Client connections, DHCP will be accepted.

Squid would be installed and listen on its usual port. Optionally, all port 80 and 8080 traffic could be routed though Squid. Ideally, HTTPS traffic should be automatically routed, but i think thats a bit harder to setup… If VPN Clients are enabled, it could also allow All or Some traffic to be routed over the VPN connections. SSH could also be used to compress traffic between multiple Squid boxes (one in house, one on the device). WANProxy could be used in a simular manner to save bandwdith and make the connection faster.

So, with all that, i am looking at using a Raspberry Pi for the job. I am still working on this, but here is what i have so far…

  • I have put a Wifi adapter into my Raspberry Pi (A Linksys, but forget the exact model number). Using a tutorial on Vivek’s blog on making a wifi hotspot on linux i managed to get the AP showing up on my laptop, but could not connect. I am not sure if its the adapter causing the problem, or what, but i am going to change out the adapter.
  • At the moment, i am sharing the ethernet connection, not the 3G connection… I have posted here before the link to Terence Eden’s post on getting the Raspberry Pi to connect to 3G. All that i will need to do is connect to 3g and then NAT the connection from Wifi to 3G…

So, there are a few more bits and pieces to get done over the next while… I will keep posting here…

Moving sites to NearlyFreeSpeech

I have been running a Dedicated Server from Hetzner for a while now, but have started to look at what i am running on the site, and reailized i under utilize the machine a lot… For example, this site is generated using Jekyll, which takes up very little power, and becomes static HTML files. My other blogs (Tiernan’s Comms Closet and GeekPhotographer) are both low traffic WordPress sites, and I run a couple of other static sites also for friends… All in all, not a lot of power…

Its not a fortune to run the server, the box i have has a Quad Core, Hyper threaded Intel i7, 32Gb RAM, 2 3TB Hdds (not raid…) and runs a copy of VMWare ESXi, and it costs about EUR60 a month, including a couple of IP addresses… But, i dont use it all that often… So, i am in the process of getting rid of it…

So, the 2 other blogs (GeekPhotographer and Tiernan’s Comms Closet) have already moved. They where easy enough… Export the WordPress DB, copy the file up, tweak the config, import the DB, DNS updates, etc… All done… but this site… that is more “Complicated”…

Since it is generated on a ‘git push’, Jekyll and Ruby needs to be installed on the box… I am using static sites on NearlyFreeSpeech which only charge me per meg (about 0.1c, but that reduces as you transfer more) transfered and per 5 meg stored (1c). Thats for STATIC sites… if you are running a dynamic site, its about 1c per 1mb stored, plus 1c per day, plus another 2c for MySQL instances. Check out their pricing calculator to see the magic at work!

Anyway, my GIT repo is on a machine in the house. It has Jekyll and all required bits installed. In the ‘post-receive’ hook (check the original zerosum post), i generate the site, and then do an rsync copy to NFSN servers. That is it!

Any question, leave a comment.

[update] forgot to add the gist which shows how i do the rsync call…

[update2] you in my case, the folder that Jekyll is being built in needed to be chmoded and chowned… I chowned the the folder to the gitolite user and i chmodded the folder to 777… before i did this, some files where unreadable on NFSN… with this, all works grand…

Send Emails as a Distribution Group in Office365

I am in the process of moving my Email domains from one Office365 plan (a Professional) to an Enterprise Plan. During the move, i set up some Email Aliases for older email addresses, which are still being used, but i dont send a lot of email from. But if i do need to send emails from these addresses, with the help of Powershell, I managed to set it up. The full details are listed on “how to send as an alias in Office 365”. It works perfectly! And, as a bit of shamless self promotion, if you are interested in Office365, why not drop me a mail at Tiernan at LimitedSlipNetworks dot com and i can set you up with a trial and more information.

IPv6 Firewall rules for MikroTik RouterOS

After yesterday’s post on IPv6 Networking in the house, I realized that all machines internally had publically facing IPv6 addresses! I started to panic, then went looking online, and found the following script:

This script, when run on your RouterOS board, will allow Established and Related connections, allow outgoing connections, and drop anything incoming that has not been requested… so, now everything inside the network should be more secured… I am new to this IPv6 stuff, so I am still learning… but, i am getting there…

IPv6 + MikroTik + Linux + Windows

I have been wanting to setup an IPv6 network for a while now, but never had the hardware or network to support it. My broadband Modem, a Cisco EPC3925, was pretty useless… But with the advent of Bridging on the Cisco EPC3925 it now works!

The first thing i needed to do was setup a Tunnel Broker Account with Hurricane Electric. I got a /64 block of IPv6 addresses, which should do me for a while… 🙂

Next, I followed the config example from the MikroTik Wiki Page: My First IPv6 Network. In my case, i only ran though most of router 1’s config, and did not create the “routing between segments” and “ospv-v3” backbone… I did give my internal LAN port an IPv6 address, as well as an IPv4 address.

Next, on my Windows Server machine, i gave it a static IPv6 address (since i dont have an IPv6 DHCP setup… yet…) and told it to use the IPv6 address i gave the RouteBoard as its gateway. Then i told it to use the OpenDNS public IPv6 address. I then visited IPv6 Test and Google’s IPv6 page to confirm connectivity… SUCCESS!!!

On my Linux box, I followed Soflayer’s Adding an IPv6 IP tutorial.

So far, so good…

Compressing and UnCompressing Protobuf items in C#

Part of a project i am working on required sending large amounts of data between different instances. To get this to work efficially, we started using the ProtoBuf using ProtoBuf-net in .NET. but the files where still quite large (17mb, give or take). So, we looked into compression…

here is some examples of how we managed to compress the protobuf files. We got some decient compression: 3mb files, down from 17mb. very happy.

to compress an object (obj) and write to a temp file (tmpfile):

to decompress the object back to a known type:

GIT tips and tricks

I use GIT a lot for different things, including this blog. so, here are a few tips and tricks i have found useful over the while…