The Americans had this:

Barack Obama - Hope

Iconic image of Barack Obama

Us Indians will have to contend with this:

Loose Change

Rahul Gandhi

Posted in Humour, Politics | Tagged , , , | Leave a comment

I have an INFRACTION on Conclave! Shudder!!

I happened to follow a link to http://conclave.notionink.com, and guess what? I had a PM from Chief.  Here’s what it reads:

Infraction - screen grab

Ooh Scary!

Can you read my comment? It was in response to the following post on Conclave.  Seems someone there is just a sensitive little sissy (oh, apologies to the ladies and the ultra gentle men…I know there are so many strong women and men in the world).

Some evolution

Reproduced without any permission

I don’t think it was the aforementioned person flagging my post.  My reply was made a long time after hers, and she seems to have never visited the site again.

It seems someone at Notion Ink does not like the fact that I make some rough comments occasionally about their Genesis program, which was aborted like an unwanted pregnancy. Oh wait, is there some religious angle to this?

Posted in Uncategorized | 5 Comments

Notion Ink deleting inconvenient posts on Conclave?

It seems people are right when they allege that Notion Ink is deleting posts that are critical from their wordpress blog and on Conclave.  Just today, I started a thread on Conclave expressing concern about their condition and the lack of any updates or sign of their various promises being carried out.  I also speculated if the ‘100 employees’ claim made by their CEO Rohan Shravan was a continuation of his saying something and then clarifying it meant something else – that it was a binary number.

Guess what? That post was deleted promptly, unlike their well-documented responsiveness to calls for support.

So here’s a screen grab from another thread where I have commented.  Let us see if they allow it to exist.

Posted in Uncategorized | 1 Comment

pppd chat scripts

Hi there, by public demand, and with all credit due to WinnerGold, here are the chat scripts used by us to connect 3G USB modems on the Adam.


SAY “GPRS modem init: press <ctrl>-C to disconnect\n”
“” AT


kdebug 7
#connect “/usr/sbin/chat -v -t 50 -f /etc/ppp/chat/cmtc-isp”
connect “/system/bin/chat-ril -v -t 500 -s -f /etc/ppp/gprs-connect-chat”



case $1 in
/android/bin/iptables –flush;
/android/bin/iptables –table nat –flush;
/android/bin/iptables –delete-chain;
/android/bin/iptables –table nat –append POSTROUTING –out-interface ppp0 -j MASQUERADE;
/android/bin/iptables –append FORWARD –in-interface ppp1 -j ACCEPT;
echo 0 > /proc/sys/net/ipv4/ip_forward;
echo 1 > /proc/sys/net/ipv4/ip_forward;
echo $PPPD_PID > /etc/ppp/ppp1.pid;
echo $PPPD_PID > /data/ppp/ppp0.pid;

# Use interface name if linkname is not available

/system/bin/setprop “net.$NAME.dns1” “$DNS1”
/system/bin/setprop “net.$NAME.dns2” “$DNS2”
/system/bin/setprop “net.$NAME.local-ip” “$IPLOCAL”
/system/bin/setprop “net.$NAME.remote-ip” “$IPREMOTE”
/system/bin/setprop “net.$NAME.gw” “$IPREMOTE”

/system/bin/setprop “net.dns1” “$DNS1”
/system/bin/setprop “net.dns2” “$DNS2”
counter=`/system/bin/getprop net.dnschange`
/system/bin/setprop “net.dnschange” $counter


Use them together. Use them in peace.

Posted in Uncategorized | 16 Comments

Success with USB 3G modems on Android

Hello there,


The author of usb_modeswitch has now written a PPP Widget for Android that automates the running of 3G/EVDO USB modems with a GUI! Rush to download your free test version!  It will later appear on Google Play Market, and remain free.

[Update 9th Aug 2011: Now get the latest versions of usb_modeswitch and data packages from its mother site, or use the links posted on Tabletroms.]

I am very happy to note that with crucial help from committed hackers, we now have a working solution for using 3G USB modems on the Adam tablet made by Notion Ink.

The most important requirements, as things stand now are:

1. A running instance of Android with inbuilt kernel support for usb-serial, ppp, option, slhc and ppp_generic, on a tablet with root access. For example, a ROM for Honeycomb (originally hacked out from the Transformer) with a modified kernel, provided by user WinnerGold here.

The current method of installation is to copy the file to the root folder of your SDcard / external SDcard, rename it to update.zip, and run recovery (reboot with Vol ‘+’ key pressed), clear cache, select update and flash.

2. Precompiled ARM binary of usb_modeswitch, available here

3. Configuration of the USB modem inserted in a config file typically called usb_modeswitch.conf, to be copied from the reference file here

Now, with these tools by your side, proceed with the following steps to get the modem working on your Adam tablet. I hope these steps will also provide a good guide for other Android tablets.

Option A

1. Install the HC16 ROM provided by WinnerGold, as it includes the drivers in the kernel, and working dialer scripts.

2. Download the precompiled ARM binary usb_modeswitch and device_reference.txt from http://draisberghof.de.  Well, I pointed you to them earlier, didn’t I?

3. Install Android Terminal Emulator and Jota text editor on the Adam. They’re there, on the Android market.

4. Find out your modem’s vendor and device ID pairs using the internet, the Device Manager under Windows, or using dmesg on the tablet. Remember that the device IDs would be different under the ZeroCD mode and the modem mode. What you’re looking for is the device ID under the modem mode.

5. Look for the ID pairs in the device_reference.txt file, and copy the block that pertains to your device. Paste it to a text file and name it usb_modeswitch.conf (or any other file name that you prefer for brevity).

6. remount the /system folder on the tablet to a read-write mode using the command

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

You need to be root in order to do the above. Also, this is required after each reboot, until a better alternative is found

7. Copy the files usb_modeswitch and usb_modeswitch.conf to /system/xbin (or to /etc/ppp, but I haven’t tried this yet)

8. Make sure both the files have all executable and access rights

chmod 777 usb_modeswitch

[CODE chmod 777 usb_modeswitch.conf[/CODE]
You could try 766 too.

9. Mount the usbfs file system to /proc/bus/usb. This is necessary to avoid the “Couldn’t opendir()” error you get otherwise on running usb_modeswitch

mount -t usbfs usbfs /proc/bus/usb

Again, this is currently necessary after each reboot.

10. Plug in your modem to the normal sized USB port on the tablet. You can check if it is identified in ZeroCD mode by running dmesg from the command line

11. From the shell, cd to the directory where you copied the usb_modeswitch files, and issue the command, as root, to switch the mode

usb_modeswitch -I -W -c usb_modeswitch.conf

If you’re in another directory, it would make sense to embed the full path, e.g

/system/xbin/usb_modeswitch -I -W -c /system/xbin/usb_modeswitch.conf

12. Issuing the above command should get you an output showing usb_modeswitch searching for your device, matching it against the likely ID pairs in the .conf file and hopefully, succeeding in switching the mode. Run dmesg at the command line to see if the mode has been switched and the device linked to /dev/ttyUSB0, /dev/ttyUSB1 etc., which are the nodes for USB modems.

13. Assuming that you were successful in getting the dongle recognised as a modem, now read the dialer script pair.

The dialing script, according to WinnerGold’s implementation, is /etc/ppp/peers/gprs. It has two lines for your UserID and Password given to you by your service provider.

14. Edit the file /etc/ppp/peers/gprs with Jota editor, replace the ‘cmnet’ user ID with yours, and the ‘cmnet’ password with your password. Save and close the file. You need to do this just once.

15. Open the file /etc/ppp/gprs-connect-chat, which is the config script, and look at the line containing OK ATDT. The part following OK ATDT is the number you have to dial to connect the modem. If you have an EVDO modem, the default number is #777, and for GSM modems, it can be *99# or *99****1# or something like that. Please check your user manual or instructions on the internet, and change the default dialing number with what is applicable in your case. Save and close the file. You need to do this just once.

16. In case you get a ‘could not save’ error for steps 14 or 15, you did not have write permission. Get it.

17. Now close your eyes, say a word of thanks to free software developers, and run the command

pppd call gprs

where pppd is the PPP daemon, gprs is the dialer script, which also contains the link to the config script. If you decide to write your own alternate dialer, you’ll need to change the pointer to the correct config script too.

18. Look at the modem: does it show lights flashing to indicate dialing / successful connection?

19. Check from the command line with a ping to google.com if you are indeed connected. It helps to have the Hacker’s Keyboard installed so that you can ctrl+c to stop ping, or specify the number of attempts as a command parameter

20. If you can ping, you’re through. I hope at this moment you didn’t have your wifi working and giving you a false positive

21. Enjoy. Else, rinse and repeat step 17, 18, 19 till you’re successful.

22. Ask someone what to do when you want to disconnect. It may not be safe to pull out the modem, as it might damage the circuitry on the rare occasion.

Option B:

1. Instead of WinnerGold’s ROM, you could try just his kernel, which is not yet available separately. In this case, you might need to edit the file /etc/ppp/ip-up to include the following, as suggested by WinnerGold:

You have to add to /etc/ppp/ip-up
on the bottom

/system/bin/setprop "net.dns1" "$DNS1"
/system/bin/setprop "net.dns2" "$DNS2"
counter=`/system/bin/getprop net.dnschange`
/system/bin/setprop "net.dnschange" $counter

Then follow the other steps as per Option A.

Posted in Uncategorized | 55 Comments

Provisional success with usb_modeswitch on Adam / Android


[Update: The modems are working now!  See my newer blog post, and this thread on TabletROMs.]

I have good news with a caveat, if you are a pessimist, but if you are an optimist, I have bad news with saving grace.

Remember my effort to get USB datamodems (3G and EVDO) working on the Adam with usb_modeswitch?

I had to stop short of running usb_modeswitch on the Adam due to the missing support in the kernel for some drivers (usb-serial and option, i.e. gsmmodem).  Of course, getting the said support added had been held up because Notion Ink had not released the kernel source, nor pointed to where we could get it.

Later, someone leaked the kernel source related to the Adam, and Notion Ink followed it up with their official release.  Thank goodness.

I had been asking everyone I met (well, the hackers / developers at least) on the forums if someone could compile a kernel for me with the requisite support.  I am very happy to say that the person better known to Android tablet owners as MrGuy sent me a modified kernel and a driver for Option modems [CAUTION: these files are for testing purposes only. Use them at your own risk!].

I have now installed the kernel on the Adam, and inserted the driver module by following these steps:

  1. Download the latest recovery files from Notion Ink.  Use this FAQ to learn more.
  2. Extract the files to a folder on your hard drive
  3. Download / copy the kernel image (Boot2.img) and the module (option.ko) linked above to this folder, where you will also find the nvflash utility
  4. Connect the Adam via USB to your computer and switch it on in the recovery mode (press Vol ‘-‘ and Power On)
  5. Depending on whether you have run the recovery mode earlier, you may or may not need to add drivers if prompted by Windows.  Follow these steps if prompted.  Follow the steps for Linux if you are on a Linux PC.
  6. Once it boots to the APX recovery mode (blank screen), run the command shell on Windows and enter the following command: nvflash --bl bootloader.bin --getpartitiontable parttable.txt
  7. This will create a file named parttable.txt, which lists all the partitions on the Adam’s internal memory
  8. Identify the partition number denoted by the label LNX.  It will be 8 or 9, depending on the version of nvflash / recovery file used
  9. Run the command: nvflash -r --download X Boot2.img (where X is the number of the LNX partition you have noted down) [in case you happened to disconnect or reboot the Adam after Step 6, run nvflash --bl bootloader.bin --download X Boot2.img instead]
  10. This should flash the new kernel to the appropriate location. If successful, shut the Adam down, reboot into normal mode
  11. Next, you need to copy the option.ko file to /system/lib on the Adam.  There are some alternative methods for doing this:
  12. Alternative 1: if you have a rooted Adam (obviously), open a terminal emulator, become root, and issue mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system to make /system writable. Then proceed to copy the file to /system/lib or any other folder you think is better suited for it, then run /system/xbin/insmod /PATH/TO/option.ko (replace /path/to/ with the actual path to where it has been copied).  Run /system/xbin/lsmod to check if the option module has been loaded.  Proceed to Step 17.
  13. Alternative 2: If you are masochistic, download the Android SDK and Android USB Driver for Windows, install the SDK and then modify the driver according to instructions here, connect Adam powered up normally, update driver to modified driver, and then proceed to Step 15 if successful, else Step 14
  14. If you are at Step 13 and after connecting the Adam to Windows, you don’t see the driver installation prompt, you may need to uninstall the driver actually in use (if you see the Adam connected with a Mass Storage Driver), by using this utility.  You may need to run the utility with Administrator rights.  Look for the Mass Storage driver for NI Adam USB device.  Once you uninstall it, plug the Adam in again.  Windows will reinstall the drivers, and probably install one for Android Debug Bridge from Windows Update.  If this happens, you can go to device manager, switch to ‘View Devices By Connection’ view, locate the Adam with the said ADB driver, and update the driver to the one modified as per Step 13.  Now, check if your device registers with Windows and ADB by issuing the command adb devices (the command prompt needs to be in the directory ‘platform-tools’ within the tree where you installed Android SDK).  If you see something listed, you’re through.  At this point, you will realise that a third alternative, that of using Linux would have been much better as it does not require a USB driver for ADB.
  15. Next, make /system on the Adam writable by issuing adb remount. Then push the kernel object to the Adam by running adb push /PATH/TO/option.ko /system/lib (again, replace /PATH/TO/ with actual path, and you can use another folder instead of /system/lib if you think that is a better idea).
  16. Reboot the Adam normally, (disconnect it from your PC as it might obstruct access to the internal sdcard, but do so safely), go to Terminal Emulator, become root, and run /system/xbin/insmod /PATH/TO/option.ko (replace /path/to/ with the actual path to where it has been copied).  Run /system/xbin/lsmod to check if the option module has been loaded.  If you get any permission denied errors for insmod, make the /system folder writable by issuing mount -0 rw,remount -t yaffs2 /dev/block/mtdblock3 /system
  17. Now read my earlier post again, and proceed according to the steps mentioned therein, starting at number 4.
  18. After you complete the 21st step as per the old post, you need to make the Option driver aware of the switched ID of your modem on the fly.  Issue the command echo "12d1 140b" > /sys/bus/usb-serial/drivers/option1/new_id as root (replace “12d1 140b” with the ID specific to your modem. I use a Huawei EC1262.  Instructions in the old post).  You see that path?  The original NI kernel did not have the usb-serial support necessary, and hence that path was missing.
  19. Now follow instructions of step 22 and 23 in the old post.  If everything goes well, you should see an output from usb_modeswitch that says it found and switched your modem.  Now run dmesg, and check if its output looks like this one. If it matches, you’re successful.  Congrats!  Now your 3G USB modem can run on the Adam!

Now the bad part, as I have discovered.  I have been able to get usb_modeswitch to run on my Adam, and get it to correctly identify and switch the modem.  However, when it comes to using the modem, I am stuck, because the kernel still lacks PPP support.

I need PPP to use dialer scripts to dial the modem and get it connected.  As of now, /system/etc/ppp is empty except for a VPN driver, and it seems Notion Ink did not include the requisite kernel modules or system libraries.  It should be trivial to add this support though, and MrGuy is our guy.

I have asked MrGuy for help, and hopefully he will send me a new kernel with all requisite support compiled in it.  Once I am successful, I will post again with sample dialer scripts etc.  You can view the hints in the original thread on draisberghof.de.

Once I am through with all of this, I will write a clean and lean how-to, so that my readers don’t get put off by all these recursive steps and my weird sense of humour.

Lastly, I hope someone at Notion Ink takes note of all of this, and gives us an update that includes a kernel with (a) usb-serial support; (b) ppp support; (c) option modem driver; and a modem manager that can be used from the GUI, for configuring and dialing a USB modem.  Is it too much to ask?

Posted in Uncategorized | 3 Comments

Help us update the TabletROMs Wiki

Hi all,

The nice guys at TabletROMs, the forum dedicated to developing and discussing ROMs for different tablets, have created a Wiki page for comparison of features for the various ROMs available for the Notion Ink Adam.

The forum members are trying to put together a snapshot of the various ROMs available, so that any potential user can immediately see what each option has to offer in terms of the underlying system, hardware support, native software, bugs etc.  The table featured on the Wiki can also sport links to the latest version available for download.

We need your help to populate the feature comparison table, and to keep it updated.  Please feel free to pitch in, if you have the necessary information.  You will need to register at the site, which is a reincarnation of the Notion Ink Hacks website.

Editing the table is a bit difficult at first, but you’ll get hang of it soon.  Just keep it clean and honest.

Thank you for listening.

p.s. By the way, you can also add how-tos and knowledge-based articles to the Wiki.  Remember, the more you share, the more you learn.

Posted in Uncategorized | Leave a comment