Tracking your Route through GPS – Getting Started

It was 14th February 2013, Valentine’s Day. Inspired by one Motorola commercial, I set out to walk in a ‘heart shaped’ route, as a Valentine Gift for my beloved wife. The commercial is available at http://youtu.be/iG2DRiQt1b0 and the end result was tracked on Sports Tracker, with me walking in a heart shaped route near Lotus Temple, Delhi, India.

Image

I don’t have a good navigation sense, and rely mostly on GPS/Google Maps/Map My India for my everyday needs. Thus, to accomplish this task I’d specially bought a professional compass to track the directions, and had planned to cover at least 2 kilometers walking/running (though eventually it was restricted to 100 meters, reasons I’ll not delve into).

But, the biggest gain (apart from the delighted beloved, and learning how to use a compass) was that I came across various techniques that are used across the globe to track/plan a route. It’s more awesome than I ever imagined!

Continue reading

Wireless on Ubuntu 11.10 and Lenovo Thinkpad E420

Unlike 11.04 and earlier, Ubuntu 11.10 runs much better on Lenovo Thinkpad E420. The only glitch is the wifi drivers which don’t run by default, and it could be corrected easily

Using LiveCD or a running system

  • Press Super (Window) key, and open Terminal
  • Type sudo modprobe -r acer_wmi

That’s all. You should be able to connect to the wireless till next reboot.

Making the change permanent

Edit the file /etc/modprobe.d/blacklist.conf and in the end type

blacklist acer_wmi

Reboot and you’re done. If you’re doing it entirely from the GUI, then editing the file could be done by pressing ALT+F2 (this would open a “Run” window) and typing there gksu gedit /etc/modprobe.d/blacklist.conf

Please note: This applies to wireless card having rtl8188ce chipset. You can view that by typing lspci in a terminal and searching for the entries respective to Network Controller.

Ubuntu 11.04 on Lenovo E420

Update: 16 October 2011 – Ubuntu 11.10 works better. http://wp.me/p9bZ0-1Q

I recently got a Lenovo E420 laptop, and I just went ahead and installed Ubuntu 11.04 on it. Few are some of the things that may help those who’re facing issues with it. I got 4 GB RAM on Core i5. It’s 64bit processor, so I preferred 64bit Ubuntu instead of 32bit pae kernel.

Wireless

The machine has rtl8188ce chipset, and the Realtek drivers available from Realtek’s website don’t work well. You just need to blacklist acer_wmi module

Edit /etc/modprobe.d/blacklist.conf and add

blacklist acer_wmi

Save and reboot. This won’t work if you’ve compiled Realtek drivers and installed them. It’ll work only in the default install. Here’s more detailed link -  http://askubuntu.com/questions/53625/wireless-on-thinkpad-edge-e420s

Random screen lockups

I am not sure why it occurred – due to the kernel or due to the compiz settings. I did both. Installed Kernel 2.6.39 from http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.39-rc4-natty/

Also, I installed CompizConfig Settings Manager (ccsm) from Ubuntu Software Center, and then disabled this option

General -> OpenGL -> Sync to VBlank (uncheck this)

Reboot. The system may not hang. http://www.preshweb.co.uk/2011/05/ubuntu-11-04-x-freezing-after-screensaver-active-laptop-lid-closed/

Update 26 July 2011: There are still instances of system hanging :-( Unable to identify the cause as yet. However, this time the system just hangs with no mouse movement at all. This behavior I experienced in 32bit-pae kernel too and usually happens when system has gone through more than a few standbys. Will diagnose and update further.

Update 2 – 30 July 2011 : I updated the BIOS to v1.16 (earlier it was 1.10), but it didn’t do any good. The system still got hung. It is not due to standby also as I disabled the “Suspend” option from Power Management section and rebooted the computer and used it for around 3 hours after which I got a Kernel Panic. Realtek has put a new version of their drivers for rtl8188ce chipset – I’ve just installed those and rebooted and it seems to be working. Will update later if it has cured the hanging problem.

Update 3 – 31 July 2011 : After installing the realtek rtl8188ce drivers as mentioned in the post above, I’ve not rebooted the machine since more than 24 hours. Had suspended it more than a few times, and did various experiments which earlier eventually led to a freeze. But I’m happy to report that till now all has been good and it has not yet hung. I’ll keep working on it for next few days and see if there has been a proper resolution.

Indicator icons for unsupported apps

I installed gnome-do and I was unable to see the indicator icon for that. Installed dconf-editor from Ubuntu Software Center.

Got the name of the application from .xsession-errors file (TrayChild). Opened dconf-editor and added ‘Do’ in there. Logged out and logged back in and all is well.

http://askubuntu.com/questions/36898/how-can-i-see-a-list-of-all-the-systray-icons-that-are-not-whitelisted/39750#39750

Don’t set systray-whitelist to “all” as that may lead to the icons in indicator being unclickable.

To be honest, it was horrendous to use Ubuntu 11.04 due to severe productivity issues for the first week. I installed 32bit pae kernel so that the 4GB RAM could be supported. But I couldn’t upgrade it to 2.6.39 as no pae kernel was available for 2.6.39. I rather installed 64bit Ubuntu, and updated it immediately and rest did what I mentioned above. No more hangs till now, and life has been happy.

Nokia E6 Symbian Anna IMAP with push mail

Nokia Symbian based phones have a terrible IMAP support. If you have IMAP server of your own, you only have two options

  • Use “Nokia Messaging” which means you receive your emails via Nokia servers (similar to blackberry) and it’d not be your phone but nokia servers which would connect to your IMAP server and push mails to your phone. This works better, but then you’re giving your details to Nokia, and could be a privacy issue for some.
  • Use the in-built IMAP client. This would mean you don’t have a ‘push’ email, but a check interval of 5 minutes. Not awesome.

Following is one more way to set to use IMAP via the Nokia Mail for Exchange client, and you don’t need to have any Microsoft Exchange setup.

 

Concept

  1. You need to be running an IMAP server.
  2. There’s an open source PHP based software called “z-push” which allows activesync connectivity and has IMAP backend, which means you can use it to ‘sync’ your phones using the Nokia Mail for Exchange client.
  3. You need Apache web server with php5 and php5-imap support where z-push would be setup.
  4. You download and configure z-push.
  5. You configure your phone settings, and then use Nokia Mfe client to connect to your IMAP server and thus have “push” functionality.

 

Assumptions

  1. An IMAP server is running with SSL support with self-signed certificates (I used dovecot), which has usernames as ‘user@domain.com‘ format.
  2. You have Apache with PHP5 and php-imap support. On ubuntu/debian you can install it using apt-get install php5-imap.
  3. Nokia Mail For Exchange supports only a single account on a phone. So if you have multiple email accounts to be synced, bad luck.
  4. It was tested on a Nokia E6 running Symbian Anna. Your setup may vary or could be different.

 

Server side setup

  1. Download z-push from Source Forge http://z-push.sf.net ; I used version z-push-1.5.4RC-705.tar.gz.
  2. Extract it in a suitable location, for example, /var/www/z-push
  3. You can refer to the INSTALL document too for more information inside the z-push extracted files.
  4. Make the ‘state’ directory web server user writable. So do chown www-data.www-data state or chmod 777 state.
  5. Configure z-push. We will modify the following
    $BACKEND_PROVIDER = "BackendIMAP";
    
    // ************************
    //  BackendIMAP settings
    // ************************
    
    define('IMAP_SERVER', 'localhost');
    define('IMAP_PORT', 993);
    define('IMAP_OPTIONS', '/ssl/novalidate-cert');
    define('IMAP_DEFAULTFROM', 'domain');
    define('IMAP_SENTFOLDER', 'Sent');
    define('IMAP_USE_IMAPMAIL', false);
  6. So that the “Sender Name” when sending out email works well, there’s a IMAP_DEFAULTFROM setting, which didn’t work too well in my case, so I modified the backend file to display the “Sender’s Name” correctly in the format Firstname Lastname <user@domain.com>. The following changes were done in backend/imap.php
    # Added the following lines in the section below
    # $v = "$this->_domain <$this->_username>";
    # $envelopefrom = "-f$this->_username";
    
                if ($k == "from") {
                    if (trim($v)) {
                        $changedfrom = true;
                        $v = "$this->_domain <$this->_username>";
                        $envelopefrom = "-f$this->_username";
                    } elseif (! trim($v) && IMAP_DEFAULTFROM) {
  7. In Apache configuration, I have SSL setup. So in the configuration file for the SSL, I specified an alias as under
            Alias /Microsoft-Server-ActiveSync "/var/www/z-push/index.php"
  8. Restart Apache and your z-push is ready.

 

Client side/phone setup

  1. Now that the server side setup is ready, we’ll configure the phone.
  2. You can enter the settings as per the requirements while configuring the Mail For Exchange client.
  3. The “domain” would be your full name (as you wish to display when you send someone an email).
  4. That’s all. Sync it and you’re ready to go!

 

Troubleshooting

  1. To enable debug logs, create a file debug.txt in the z-push directory and assign it web server user writeable privileges. For example:
    cd /var/www/z-push
    touch debug.txt
    chown www-data.www-data debug.txt # or; chmod 777 debug.txt
  2. You may want to experiment with the IMAP_OPTIONS by referring to http://php.net/imap_open
  3. Your ‘Sent’ items folder could be different. You may want to keep it blank (the default).

Making a WiFi Hotspot / Access Point using Linux & wifi lan card/USB adapter

If you have a wifi LAN card / USB adapter, then you can use it as an access point so that other machines can connect to the internet via your machine using Wifi. The process is fairly simple, but requires you to have a compatible set of drivers which allow a wifi lan card to come into “Master” mode.

It didn’t work well for

  • Linksys WUSB54GC v3 USB adapter. Till Ubuntu 10.04, there were no good drivers for use with hostapd (supporting mac80211 / nl80211). In Ubuntu 10.10, though the drivers were working, but the connection was highly unstable – in fact unusable. The drivers that I tried were rt2800usb (which allowed the adapter to come into Master mode), and rt2870sta which didn’t allow the adapter to come into “Master” mode. It always remained “Auto” or “Managed” (checked via iwconfig). Need to test in 11.04 when it arrives.

What worked pretty well

  • 02:00.0 Ethernet controller: Atheros Communications Inc. AR5001 Wireless Network Adapter (rev 01), using ath5k drivers. hostapd didn’t complain at all and all was smooth. This was in Ubuntu 10.04.

Concept

  1. There’s an application called hostapd which allows converting a wifi adapter into an access point and provide privileges such as WPA authentication and ssid name definition etc. I used it and it worked well.
  2. When a client connects to the access point, apart from authentication it’ll require IP addresses to be assigned. For that a DHCP server is used.
  3. You need to have 2 interfaces, one which accesses the net (e.g. eth0), and other which provides the access point services (e.g. wlan0).
  4. You start the wlan interface, assign it an IP address, start the dhcp server, setup firewall/nat and start hostapd. That’s all to it. Your devices would be able to use the wifi adapter as the access point.

Procedure

apt-get install dhcp3-server hostapd

Modify /etc/hostapd/hostapd.conf and put the following

interface=wlan0
driver=nl80211
ssid=MyAP
hw_mode=g
channel=11
wpa=1
wpa_passphrase=MyPasswordHere
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
wpa_ptk_rekey=600

The dhcpd.conf section in /etc/dhcp3/dhcpd.conf would have something like the following

subnet 10.10.0.0 netmask 255.255.255.0 {
        range 10.10.0.25 10.10.0.50;
        option domain-name-servers 8.8.4.4, 208.67.222.222;
        option routers 10.10.0.1;
}

Modify /etc/default/dhcp3-server

INTERFACES="wlan0"

Check what name your adapter got via iwconfig. You can change the name also and make it persistent via /etc/udev/rules.d/70-persistent-net.rules so that it always gets a single type of name. In our example we’re assuming wlan0, but it could be changed. Make necessary changes in your configuration too.

Configure the new interface

ifconfig wlan0 10.10.0.1

The above could also be done in a better way via the /etc/network/interfaces file, but didn’t try it out. In any case if you shutdown hostapd, the network interface (wlan0) loses its address, so need to put a script which assigns it again before hostapd is started. An example could be

iface wlan0 inet static
 address 10.10.0.1
 netmask 255.255.255.0

Restart the dhcp3-server. It should now be ready to serve addresses and is also bound to the network interface too.

Allow ip masquerading

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Now start hostapd and see the messages that it shows

hostapd -dd /etc/hostapd/hostapd.conf

Wait for a few seconds, it should show some probes being done by other wifi devices. If it shows, then probably you’re in good luck.

Now try to connect via your device to this access point. It should work.

To make this work on boot, can put the relevant config in /etc/default/hostapd

RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-dd"

and also put the firewall rules in /etc/rc.local (make sure its executable).

Remember – if you shutdown your hostapd, the network card would lose its address. So you have to assign that again before starting hostapd. The usual practice would be

  • Stop hostapd
  • Stop dhcp server
  • Restart network (or rather ifup wlan0 / ifconfig wlan0 10.10.0.1 would do)
  • Restart dhcp server
  • Start hostapd

Miscellaneous

  1. You can check the wifi interfaces via
    iwconfig
  2. To set a wifi adapter into master mode, try the following. If it doesn’t work and shows an error that it’s not possible or something, fret not – use hostapd as that’ll do that in any case.
    iwconfig wlan0 mode Master
  3. Network Manager could create issues, though in my test environment – instead of using an ethernet interface, I used two wlan interfaces, one being controlled by Network Manager for internet access, and other for making it an access point.
  4. modprobe -r ath5k / modprobe -r rt2800usb etc. is to be used for unloading the modules.
  5. If you wish to proceed without using authentication so that you can test it easy, then put the following in /etc/hostapd/hostapd.conf
    interface=wlan0
    driver=nl80211
    ssid=MyAP
    hw_mode=g
    channel=11

Asterisk Basics, and Load Balancing via DUNDi

IMPORTANT: The configurations, that is, the code sections underneath are not wrapped. However, if you want to copy paste them, you can just select them and despite they being not visible to you, they’ll get copied into the clipboard. Otherwise you may want to refer to the PDF version.

Prepared by : Vivek Kapoor http://exain.com
Prepared on : 01 July 2010
PDF Version : Asterisk_Basics_Load_Balancing_DUNDi_Vivek_Kapoor

Purpose of this document

Asterisk is an open source PBX. Which means, you can setup your own little telephone exchange in your home/office environment. On a much larger usage, you may look forward to setting up a redundant phone setup wherein multiple boxes are interconnected with each other and provide some sort of failover capability and easier management, which is possible through something called DUNDi. This document aims to provide such a solution with a possibility of horizontal scaling instead of vertical scaling. So, this may mean that by using low-end commodity hardware, you can setup a strong telephone infrastructure which can cater to thousands of users.

Read the document carefully. Read it fully before you start implementing it. It is intentionally detailed so that you know what you’re doing.

Acknowledgements

All credit of this document goes to JR Richardson. I’m afraid I’ve not been able to find a suitable link for him, but his whitepapers and presentations are the ones which helped me move forward. And of course, Mark Spencer – the guy behind Asterisk. Without him this document wouldn’t have existed.

The writings by JR Richardson

Continue reading

Board800 – My first Flex and Red5 Application

A few months back I was not even aware that it was now possible to do Adobe Flex development on Linux. Adobe has made the Flex SDK freely available, and Red5 is the media server which can easily integrate with a Flex application.

The possibilities are endless, and I personally feel that this is the way future applications would be developed. What I thought Java Web Start could have achieved (had it been a bit faster and the plugin etc. didn’t involve huge download and cumbersome installation), now I see that in Adobe Flex.

Regardless, I spent last few months working on a Flex application, and it has now culminated into what I’ve named as Board800 (http://www.board800.com). It is an interactive multi-user whiteboard application, on the lines of Dabbleboard, though much simpler. You can use it to collaborate with other users, and also *purchase* it if you wish to deploy it on your own servers. Go check it out now! http://www.board800.com

WikiReader – End of the World doesn’t scare me now!

I got my shiny new WikiReader. For the uninitiated, it’s the entire Wikipedia (well, atleast the textual content of entire Wikipedia in English language) stored on a memory card (MicroSD), and visible from inside a touch screen device.

http://thewikireader.com/

I have always been fond of encyclopedias – when I was a kid, I loved the World Books, then when I grew up and got familiar with computers, had heard of Microsoft Encarta – but I think since childhood I wasn’t a big fan of MS, so went ahead and bought IBM Worldbook CDs. It was amazing, and helped much in the school projects.

Now, at this date, I’ll admit I am getting a lot paranoid. That is more related paranoia associated with 2012, End of the World and what not. I have always believed in stuff which is WITH YOU and in your reach WHEN YOU WANT. Internet is something which scares me – a lot of stuff I “need”, which is there, but as soon as you get offline, all’s gone (well, this scare has prompted me to setup 3 different ISP connections at my home, apart from the mobile wireless internet). I don’t want that. I had been attempting to understand and planning that I”ll download the entire Wikipedia some day, and set up on my machine so that I can access it offline. Well, it would have been cumbersome and real painful. I couldn’t believe when I read about WikiReader, and I realized that’s the device I need (originally I’d been reading about Openmoko and FreeRunner). So, I found out the dealers in India (IDA Systems), and immediately placed the order.

I have been so happy with the purchase that now I can concentrate on the other survival tactics for EoW ;-) I don’t think anyone wouldn’t want knowledge at their fingertips, in such a convenient and cheap manner. If you don’t have WikiReader, then I think you’re missing out on a lot of stuff that you could’ve learnt.

Booting Ubuntu without Monitor plugged in / switched off

There is a major issue with Ubuntu partly due to BulletproofX and the X window system, which requires the presence of a monitor for X window to start. If the monitor is switched off, or is not connected, then Ubuntu / X would not be able to detect it and thus would go into “low graphics mode”. So, basically your GDM would not start.


There are two scenarios in which the monitor is not connected / switched off

  1. You wish to save energy and thus switch off the monitor, and then remotely reboot the machine
  2. You have Ubuntu running as a Server and thus no dedicated monitor is connected to it and you remotely reboot the machine. Specially, if you have automatic login enabled along with Remote Desktop (vino/vnc) enabled, and rely on Network Manager to start your session (through Wifi perhaps). In this case, Ubuntu would go into low graphics mode, and your network manager would not be able to assign you an IP, and you have lost complete remote access to the machine. Isn’t it pathetic?


I am still not aware on how to take care of the first part, that is, monitor switched off intentionally by you.


However, if you are running Ubuntu as a server and have/need a GUI, then the solution is here. Thanks to nikgare / http://ubuntuforums.org/showpost.php?p=7681232&postcount=8 for the pointer.

  1. Modify /etc/X11/xorg.conf and remove all content and add the following

    Section "Device"
    Identifier "Configured Video Device"
    Driver "vesa"
    EndSection

    Section "Monitor"
    Identifier "Generic Monitor"
    HorizSync 58-62
    VertRefresh 75-117
    EndSection

    Section "Screen"
    Identifier "Default Screen"
    Device "Configured Video Device"
    Monitor "Generic Monitor"
    DefaultDepth 24
    SubSection "Display"
    Depth 24
    Modes "1024x768"
    EndSubSection
    EndSection

  2. You also may want to disable Bulletproof-X by modify /etc/gdm/gdm.conf and commenting out the line

    #FailsafeXServer=/etc/gdm/failsafeXServer


Now reboot, and X would start without monitor plugged in.

Skype Video on Ubuntu 64 Bit

I was very happy when I had got my new Core 2 Duo E8400 processor. I immediately installed Ubuntu Jaunty 9.04 64Bit on it. Everything I wanted to use worked, except Skype.  After a lot of research, I did manage to install Skype, but the Video always gave a green screen, and crashed when I started the video. Here’s how to make it work successfully.

  1. Download the Skype for 64Bit Ubuntu OS. It is not a true 64Bit version, but manages the dependencies well. http://www.skype.com/go/getskype-linux-ubuntu-amd64
  2. Sign In to Skype and see all works as per requirements. You may need to go to Skype Options and fiddle with the Audio settings and select your audio card instead of pulseaudio.
  3. Through Synaptic, install lib32v4l. Through console, you can do apt-get install lib32v4l
  4. Download skype.start script (right click and select Save Link As) and save it in the /usr/bin directory. You may need root privileges for that. Otherwise save it on your Desktop, and use it to run Skype with Video compatibility. The privileges of the script need to be made executable. Through console you can do chmod 755 /path/to/skype.start and through GUI you can right click on the file, select Properties and under the Permissions tab, select “Allow executing file as program”. Remember, you need to start skype.start and not skype for the video to work.

The new version of Skype probably will fix the issues. There has been a long thread on Skype Forums regarding Linux this where the developers have promised that it will be out “Real Soon Now(tm)”. However, a month and a half has passed. Regardless, the solution works for voice and video both, and I’m happy using it.

And yes, if you need the content of the skype.start script, here it is

#!/bin/bash
LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so /usr/bin/skype

Have fun Skyping!