Entertainment Hub Version 1

I received my first Raspberry Pi back in October, ten days after I ordered it online. After that I brought it back to my home in Kluang, Malaysia. The reason is that I would like to setup a home theatre with the help of Raspberry Pi. Hopefully in near future, I can have a complete entertainment hub setup for my family. Thus, I name this project, the Entertainment Hub.

Gunung Lambak, the highest point in Kluang.
Gunung Lambak, the highest point in Kluang.

Getting Raspberry Pi

Raspberry Pi is a credit-card-sized computer. According to the official website, it is designed to help the students to learn programming with lower cost. To understand more about Raspberry Pi, you can read its detailed FAQ. By saving S$1 per day, I easily got myself a new Raspberry Pi Model B (with 8GB SD card) after 2 months.

Entertainment Hub Project

Before the use of Raspberry Pi, I was using a Wireless 1080p Computer to HD Display Kit from IOGEAR to stream video from my laptop to the home TV. It requires a one-time installation of both the software and drivers on the laptop before I can use its wireless USB transmitter to connect between the PC and the wireless receiver which is connected to the TV with HDMI. Afer the installation, whenever I want to show the videos stored in external hard disk on the big screen, I always first need to switch on the receiver at TV side and then plug in the wireless USB transmitter on laptop. Now with the use of Raspberry Pi, I can easily browse the videos directly on the TV.

I only worked on the Entertainment Hub when I was at home. Also due to the fact that I only went back to home on Saturday and I would need to go back to Singapore on the following day, I didn’t really got much time to work on the project. Hence, I finally got video to show on the TV only after four times of travelling back to home.

Connecting External Hard Disk to Raspberry Pi

Before I started this project, I thought connecting an external hard disk directly to the Raspberry Pi would be enough. However, it turned out that it’s not the case. When I connected the external hard disk to the Raspberry Pi directly, the USB optical mouse, which was connected to another USB port of the Raspebrry Pi, lost its power. After doing some searches online, I found that it was most probably due to the fact that the Raspberry Pi didn’t have enough power to power up both the hard disk and the optical mouse at the same time.

The USB hard disk I have is 2.5” Portable HDD (Model: IM100-0500K) from Imation. After finding out that Raspebrry Pi had insufficient power for the portal hard disk, I chose to get a powered USB hub. Fortunately, there are nice people done a lot of tests on many, many USB hubs to find out which powered USB hubs are best to use together with Raspberry Pi. They posted a useful list of working powered USB hubs online for us to use as a guideline when choosing USB hub for Raspberry Pi. I bought the Hi-Speed USB 2.0 7-Port Hub by Belkin at Funan. Even though the model isn’t same as the one in the list, the USB hub works fine in my case.

To find out if Raspberry Pi can detect the portable hard disk or not, simply use the following command.

sudo blkid

If the external hard disk can be detected, then a similar results as follows should be printed.

/dev/sda1: LABEL=”HDD Name” UUID=”xxxxxxxxxxxxxxxxxx” TYPE=”ntfs”

Luckily my Raspberry Pi can auto detect the external hard disk and then can mount it automatically.

Entertainment Hub Version 1 Structure
Entertainment Hub Version 1 Structure

Enjoy Movies on Raspberry Pi

After successfully mounting the external hard disk on Raspberry Pi, I just need to browse to the folders on the hard disk to pick the video files and then play them using OMXPlayer, a video player pre-installed on Raspberry Pi. As I used HDMI cable to connect Raspberry Pi and TV, so by using the following command, both audio and video can be successfully transferred to the TV.

omxplayer -o hdmi -r video.flv

The reason of having -r here is to adjust video framerate and resolution. Without it, not only the video won’t be displayed in full screen on TV, but there also won’t be any audio from TV.

When I first used omxplayer, it showed a black screen after I closed the program. There are online documentation and solution about this issue as well. For me, after I rebooted the Raspberry Pi, the issue disappeared.

Watching Movie with Help of Raspberry Pi
Watching movie with the help of Raspberry Pi.

Dad’s Help in the Project

The case of my Raspberry Pi is designed and made by my Dad. I am very happy and thankful that my Dad helped making a case for my Raspberry Pi. Usually the case of Raspberry Pi is box-shaped. However, the case I have here is a cylinder. So my Raspberry Pi looks special. =)

A closer look of my Raspberry Pi.
A closer look of my Raspberry Pi.

Future Work

With this little success of having movies played on Raspberry Pi, the first part of the Entertainment Hub is done. Now, there are more things needed to be done in order to make it more user friendly and robust. First of all, there needs a playlist support. Secondly, the ability of replaying the videos. Thirdly, a better GUI to select videos, instead of just a command-line UI. All of these depend on how fast I learn to program an app in Raspberry Pi.

Let’s look forward to completion of this project.

Rubber Band Launcher. Phew, Phew, Phew!

Last month, I went to School of Computing, NUS to attend the third School of Computing Term Project Showcase (STePS). During the event, I got the opportunity to meet Jonathan Sim from Team Annikken. He was also there to take a look at the cool student projects.

Team Annikken is part of the Singapore based company, Piasim Corporation. Piasim Corporation is currently a distributor and integrator of laser and optice devices. In order to explore into other fields, they formed the Team Annikken in 2010.

I came to know about Annikken in the Google DevFest Singapore 2013. Their key product, Annikken Andee, was introduced by Harish Pillay from Red Hat. He said he was very excited about this product because it was made by a group of talented engineers in Singapore. So, what exactly is Annikken Andee?



Annikken Andee provides a solution for the developers to easily build a smartphone app to interact with the Arduino. Without Annikken Andee, developers normally need to work on both the smartphone app programming and the Arduino programming. Now, with the help of Annikken Andee as the Bluetooth shield between the smartphone and Arduino, the developers can skip the time-consuming smartphone app programming part and directly work on the Arduino programming. This is all because Annikken Andee also comes with their own libary for the Arduino IDE.

Annikken Andee can work well with different types of Arduino, such as Uno, Leonardo, and Mega. At the smartphone side, Annikken Andee offers a free Android app to download. After downloading the app from the Play Store, we can just choose the Annikken Andee that we want to connect to via Bluetooth. Then a corresponding GUI will appear on the app itself.

Rubber Band Launcher
Rubber Band Launcher

Before the closing of the STePS, Jonathan happily demonstrated a toy that he built with Annikken Andee. It is basically a rubber band launcher. By putting the rubber band on the machine, he easily controlled the position and behavior of the launcher via an Android phone. So, the launcher will face different direction and then fire the rubber band based on the commands it receives.

Jonathan Sim from Team Annikken was giving explanation to the students on how Annikken Andee worked.
Jonathan Sim from Team Annikken was giving explanation to the students on how Annikken Andee worked.

There were students watching Jonathan’s Annikken Andee demo also. The students were really actively showing their interest by asking questions. I’m guessing with the help of both Arduino and Annikken Andee, the schools will be able to get more students to show more interest in Computer Engineering. What I heard from Jonathan is that there are already many polytechnics in Singapore are interested in Annikken Andee and Arduino. That is a good news. =)

Upgrading Fedora from 17 to 18 and then to 19, yum, yum, meow!

I installed Fedora 17 in the beginning of this year. Since the 17th version of Fedora already expired in July, so now I decided to upgrade it. I would also like to see if it is as easy as updating Windows 8 to Windows 8.1.

Upgrading from Fedora 17 to 18

There is a tutorial available at the wiki page of FedoraProject to guide users to update Fedora 17 to Fedora 18. I decided to use yum command to update the system because FedUp didn’t seem to work in my Fedora 17. For some reasons I didn’t know, the following error messages were printed out at the end of sudo fedup-cli –network 18 execution.

YumDownloadError: [u’perl-HTTP-Message-6.06-7.fc20.noarch: failure: Packages/p/perl-HTTP-Message-6.06-7.fc20.noarch.rpm from default-installrepo: [Errno 14] curl#22 – “The requested URL returned error: 404 Not Found”‘, u’adwaita-gtk3-theme-3.10.0-1.fc20.i686: failure: Packages/a/adwaita-gtk3-theme-3.10.0-1.fc20.i686.rpm from default-installrepo: [Errno 14] curl#22 – “The requested URL returned error: 404 Not Found”‘, u’sox-14.4.1-4.fc20.i686: failure: Packages/s/sox-14.4.1-4.fc20.i686.rpm from default-installrepo: [Errno 14] curl#22 – “The requested URL returned error: 404 Not Found”‘, u’gnome-icon-theme-symbolic-3.10.1-1.fc20.noarch: failure: Packages/g/gnome-icon-theme-symbolic-3.10.1-1.fc20.noarch.rpm from default-installrepo: [Errno 14] curl#22 – “The requested URL returned error: 404 Not Found”‘, u’celt-0.11.1-6.fc20.i686: failure: Packages/c/celt-0.11.1-6.fc20.i686.rpm from default-installrepo: [Errno 14] curl#22 – “The requested URL returned error: 404 Not Found”‘, u’perl-File-Path-2.09-292.fc20.noarch: failure: Packages/p/perl-File-Path-2.09-292.fc20.noarch.rpm from default-installrepo: [Errno 14] curl#22 – “The requested URL returned error: 404 Not Found”‘, u’usermode-gtk-1.111-4.fc20.i686: failure: Packages/u/usermode-gtk-1.111-4.fc20.i686.rpm from default-installrepo: [Errno 14] curl#22 – “The requested URL returned error: 404 Not Found”‘]

Thus, although FedUp is a recommended way to upgrade Fedora 17, I have no choice but to upgrade it using yum instead.

After following the four steps listed on the tutorial, I rebooted PC. I pressed the Esc key at the loading screen. Then I realized that the system stuck at the following step at the loading screen.

[  OK  ] Started GNOME Display Manager

After doing some online searches, I found that I need to reinstall the polkit service. More details can be found online, for example the blog post that I found which shows the steps required to upgrade system to Fedora 18 successfully. Hence, what I did is while I was at the GRUB screen, I highlighted Fedora 18 and then I pressed ‘e‘ to edit the command before booting. After that I was brought to another screen where I could change the number of runlevel to 3, so that system could enter the text mode directly for me to enter the following command.

yum reinstall polkit

Then I chose to shutdown once the process was completed.

su – c “/sbin/shutdown -h now”

After that, I can successfully login to the graphical mode.

Successfully Upgraded to Fedora 18
Successfully upgraded to Fedora 18.

Upgrading from Fedora 18 to 19

When I tried to upgrade Fedora 18 to 19 with FedUp, the system displayed similar error messages as the time I upgraded Fedora 17 to 18. Thus, I have no choice but to use yum to upgrade Fedora 18 to 19 again.

To upgrade Fedora 18 to 19, it’s very straightforward. Just follow the steps listed at the tutorial then Fedora 19 will be available after rebooting.

/etc/os-release file shows that my Acer laptop is now running Fedora 19 !
/etc/os-release file shows that my Acer laptop is now running Fedora 19!

Within an hour, Fedora 19 can be used on my laptop. The upgrade is fast!

Meanwhile, threre is an article that I found online about Fedora 19, Fedora 19 Schrodinger’s Cat (Meow!) Reviews.

Personal Email Server on Windows 7 with hMailServer

Due to the fact that the number of emails that can be sent per day via the Amazon SES SMTP is limited, I decided to run my own email server on a desktop. However, it’s unfortunate that the IIS 7.0 in Windows 7 does not have SMTP server installed by default. After doing some google searches, I came to an online forum about SMTP service in Windows 7. There is where I got to know more about hMailServer, a free email server for Windows.

The good thing about hMailServer is that it is very easy to install and configure.

Installation

During the installation, we will be asked to select the components that we would like to install. Here, we will proceed with the default option, the Full Installation, which contains both server and administrative tools.

Select components.
Select components.

After that, we will have to choose a database server type. We can chose either built-in database engine (MS SQL Compact) or external database engine (MS SQL, MySQL or PostgreSQL). According to the hMailServer documentation, built-in database engine option is only suitable for personal use, instead of commercial use because the Microsoft SQL Server Compact Edition comes with hMailServer is limited to only 4GB.

Select database server type.
Select database server type.

During the installation, an admin account will be created. The admin will be in charge of managing hMailServer configuration later. Thus, we will need to enter a password for the admin account.

Before the installation process is completed, we will need to enter the password that we assigned to the admin account earlier before we can proceed.

There is a need to re-enter password before the completion of installation.
There is a need to re-enter password before the completion of installation.

If the option of using external database engine was chosen earlier during the installation, we will need to go through another step of seting up the hMailServer database. We are basically given three options to choose: MS SQL Server, MySQL, and PostgreSQL. The following screenshot shows the database created in MS SQL Server after finishing the database setup.

Tables created and used in hMailServer.
Tables created and used in hMailServer.

Configuration

After the database is created, we would be able to connect to the hMailServer by choosing the correct host and user. Here, we need to again key in the password that we used earlier.

Choose an account to connect to hMailServer
Choose an account to connect to hMailServer

We will then be brought to the hMailServer Administrator window where we can continue to configure the settings in hMailServer.

Firstly, we will create a domain and then add user accounts to the domain.

hMailServer Domain and Account
hMailServer Domain and Account

Secondly, we will choose SMTP as the only protocol that we want to use in hMailServer.

Three protocols are available in hMailServer: SMTP, POP3, and IMAP.
Three protocols are available in hMailServer: SMTP, POP3, and IMAP.

Some Internet Service Providers (ISPs) block outgoing traffic on port 25, which will be used for email. Thus, to test if the port 25 is blocked or not, we just need to telnet mail.hmailserver.com 25 on command line. If it is not blocked, a message “220 mail.hmailserver.com ESMTP” will be shown.

Port 25 is not blocked!
Port 25 is not blocked!

However, since the Telnet client has been removed in recent versions of Windows, we will need to add it back in Windows Features before we can try out the command above. Otherwise we will get an error message saying telnet is not recognized as an internal or external command.

Switching on telnet client in Windows Features.
Switching on telnet client in Windows Features.

Thirdly, the logging feature, which is by default disabled, needs to be switched on. The log gives very useful information to check if the emails are sent successfully.

Logging Configuration
Logging Configuration

Finally, to prevent this personal email server vulnerable to spam, we should configure the hMailServer IP range. By default, the option Internet has a IP range from 0.0.0.0 to 255.255.255.255. This has to be disabled otherwise hMailServer will promt a critical configuration warning at the Status page.

Internet IP Range
Internet Option IP Range

Experiment

After doing all these, the email server should be ready to go. However, when I check the log, there are messages as follows.

“Our system has detected an unusual rate of unsolicited mail originating from your IP address. To protect our users from spam, mail sent from your IP address has been blocked. Please visit http://www.google.com/mail/help/bulk_mail.html to review our Bulk Email Senders Guidelines.” (for gmail.com email)

“Sending unsolicited commercial or bulk e-mail to Microsoft’s computer network is prohibited. Other restrictions are found at http://privacy.microsoft.com/en-us/anti-spam.mspx.” (for hotmail.com email)

“Connections not accepted from IP addresses on Spamhaus XBL; see http://postmaster.yahoo.com/errors/550-bl23.html” (for yahoo.com email)

Hence, now I have no choice but to use the SMTP Relayer on hMailServer to help sending the email successfully.

SMTP Relayer
SMTP Relayer

Edit

After reading Aaron’s comment, I looked into the SMTP authentication portion and realized a new way to solve the problem above. Please click here to read more.