Thursday, October 19, 2017

AVD launch in Android Studio 2.3 and Ubuntu 17.04

Hello All,

For people who use Android Studio for Android programming and in the Ubuntu / Debian Environment, there was a recent problem loading a AVD in the latest 2.3 version.

This blog post helps you solve this peculiar problem.

The details:

1. You write some android code, and want to test with a AVD. You install the specific target machine, but after gradle build, the launch of AVD totally stops.

There is a timeout of about 300 seconds and the AVD fails to load.

One alternate method is to use your existing Android based smart phone and connect it with a USB cord.

The second approach is given below:

Issue this below command in bold and then restart Android Studio. The problem should be solved.

ln -sf /usr/lib/  /your_sdk/emulator/lib64/libstdc++/

Make sure to replace your_sdk above with your respective $ANDROID_SDK path.

Hope this helps you..

Ananth G S

Tuesday, August 29, 2017

Firefox Flem - solving the problem of Bookmarks remotely..

Hello... Most of us have the practice of bookmarking webpages... This post does not explain how to import or export bookmarks..

Read full to know more..

Recently I faced a problem where in - I had to fetch my bookmarks from  Google Chrome located at a remote machine. Unfortunately I had not taken a backup of my bookmarks.. Also I had only CLI ssh access to the machine..

What most of us do is that - we use browsers like Firefox and Chrome and we login to the browsers via an account(Chrome a/c for example) and that saves us from exports / import.

I dont have this practice.. So fetching my urls were much more difficult..

I googled to find out where the location of my bookmarks in Chrome stored in my /home location.

After finding it out... Which is: inside the respective home folder

.config/google-chrome/Default/Bookmarks [observe the . at the beginning]

I was kind of happy to find my Bookmarks.

2. The next problem was - the moment I gave cat Bookmarks

The file was in completely JSON format. I had around 97 URLs bookmarked.

3. How to fetch only the URLs from this file of JSON format was the next hurdle..

Shell commands to the rescue...

I issued the command:

cat Bookmarks | grep http

This output had enough amount of invalid characters as well... But it also fetched me https urls.. So the problem of http and https was solved..

Then the next command...

cat Bookmarks | grep http | wc -l [gave an output as 97 ]

4. Removing the invalid characters and only fetching the exact URL paths...

I now issued the command:

cat Bookmarks | grep http | cut -d : -f 2,3

This gave me all the list of URLs as 97 URLs.

5. Ok what next? How do I put them across to a text file?

It was pretty simple... cat Bookmarks | grep http | cut -d : -f 2,3 > urls.txt

... Concept of redirection..

6. Now how on earth would I put the urls.txt back to my existing browser in the local machine?

I cannot copy 97 URLs one after the other and save it yet again...?

7. Firefox Flem to the rescue..

This addon of Firefox can import a list of URLs or even a text file into its browser at one shot... !

Try Flem...

Let me know for any queries..

Ananth G S

Saturday, July 8, 2017

Canon LBP2900 driver installation - Arch Linux

Hi All,

This post explains how to setup CanonLBP2900 printer drivers in Arch Linux.

Installation of drivers:

1. You need the yaourt package manager (to install software for AUR)

2. Issue the command yaourt capt-src
    This command installs the 2.7 version of CAPT drivers.

Configuration of the CUPS driver:

1. As we know CAPT has to sit on the CUPS driver. So make sure that CUPS is installed and configured properly.

To be on the safer side, you can issue the command:

sudo pacman -S cups

Then enable the cups driver by the command:

systemctl enable org.cups.cupsd.service

Then start the service:

systemctl start org.cups.cupsd.service

Check the status by:

systemctl status org.cups.cupsd.service (you should get active status with pid values)

Configuration of the CAPT driver:

2. Make sure that the user is added to both the groups - lp and sys

gpasswd -a ananth sys lp

3. Next make sure that the ppd is registered to the path

sudo /usr/sbin/lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp://localhost:59687 -E

4. Check for the path where the printer has its device, register capt to cups through the usblp device 

sudo /usr/sbin/ccpdadmin -p LBP2900 -o /dev/usb/lp1

5. Start and enable the ccp daemon:

sudo systemctl enable ccpd.service

sudo systemctl start ccpd.service

sudo systemctl status ccpd.service (to check its running/active status)

6. Check if its all working fine with

captstatusui -P LBP2900 

Precaution commands:

Many a times, the printer might not work due to various reasons. 

Steps / Commands to be followed then:

1. Reinstall CUPS
2. Reinstall CAPT
3. ls -l /var/ccp
4. sudo mkdir /var/ccpd
5. sudo mkfifo /var/ccpd/fifo0
6. sudo chown -R lp:lp /var/ccpd
7. sudo chown -R user_name:lp /var/ccpd (replace username with $LOGNAME)

8. ldd /usr/bin/captfilter (produces this below output) (0xf76f7000) => /usr/lib32/ (0xf76b0000) => /usr/lib32/ (0xf74ef000)
/lib/ (0xf76f9000)

9. ldd /usr/bin/capt* | sort | uniq | grep "not found" (should give you no output )

Last enable both cups and capt for startup by the command

sudo systemctl enable org.cups.cupsd.service
sudo systemctl enable ccpd.service

Hope this helps...

Ananth G S

Sunday, June 18, 2017

Dual monitor display with Nouveau and xrandr

Hello fellas.... Its been a while blogging... I would not repeat this statement yet again... !

This post explains how to setup a dual monitor display with Nouveau open source drivers and using the tool xrandr.


1. Nvidia GT 730 with 3 outputs - HDMI, VGA and DVI.

Platform of setup:

1. 2 Dell monitors of 20" display (using only 1 as of now)
2. 1 TV (Vu 32 inches)

OS: Linux Sarah.

Tools and Drivers:

Nouveau open source graphics driver and xrandr

The problem statement:

If you already read my setup, my TV supports a stupid resolution of only 1360x768 where as my Dell monitor supports upto 1600x900 both in 60Hz. A xrandr query shows a much bigger resolution.

Each time I installed a OS and installed Nvidia proprietary drivers, I had enough difficulties to setup for a dual display - cos - when mirrored displays were used - both TV and Monitor would end up only with 1024x768 resolution.

Why not Nvidia? 

1. The typical wrong misconception, that a VGA cable cannot be used to upgrade a resolution.

2. Being proprietary, it did not support xrandr properly (got Bad Mismatch errors)

The ultimate solution:

1. Uninstall all installed Nvidia drivers

2. Install Nouveau drivers.

Implementation of the solution:

1. sudo apt-get remove nvidia*
2. sudo apt-get purge nvidia*
3. sudo apt-get purge bumble*
4. sudo apt-get purge bbswitch
5. sudo apt-get --reinstall install xserver-xorg-video-nouveau
6. sudo apt-get --reinstall install  nouveau-firmware
7. sudo dpkg-reconfigure xserver-xorg
8. sudo dpkg-reconfigure xserver-xorg-video-nouveau
9. Remove all blacklisted nouveau names in /etc/modprobe.d/ folder
10. Reboot - sudo reboot now

Make sure that both the monitors are connected through your graphics card outputs.

Once booted back - nouveau should automatically pickup the displays.

But the screen resolution problem is not yet solved: 1 screen shows 1600x900 and the other 1360x768

Solution: Use xrandr tool


1. gtf 1600 900 60 -x
2. xrandr --newmode "1600x900_60.00"  119.00  1600 1696 1864 2128  900 901 904 932  -HSync +Vsync
3. xrandr --addmode VGA-1 1600x900_60.00
4. xrandr --output VGA-1 --mode 1600x900_60.00

Finally I can even get a high resolution of 1920x1200 !

If need be, you can convert the above 4 lines to a shell script and execute the script at each startup.

Ananth G S