Sunday, October 14, 2012

GNUPlots Loops


It is possible now to use 'loop's within the GNUPlot Command. See this link for more details.

The following commands plots 10 blocks with different colours. Remember each block is separated from the other block by a pair of double lines.

gnuplot> plot for [i=0:9] './clusterpos.txt' index i u 1:2 w p



Thursday, October 4, 2012

APT Behind Proxy Server Ubuntu 12.04


This worked for me on Ubuntu 12.04


Create a new file as shown below:

$ sudo gvim  /etc/apt/apt.conf.d/02http-proxy

and enter the following line:

Acquire::http::Proxy "http://username:password@proxy.tcs.com:8080";



Save the file and run

$ sudo apt-get update 

It should work for you.

One more thing, if your password contains '@' character, then you need to replace it with '%40' in your password.




Saturday, February 12, 2011

Sunday, August 15, 2010

Working with PDFs

Join PDF files using ghostscript:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=finished.pdf file1.pdf file2.pdf


Merge Two or More PDFs into a New Document using PDFtk
pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
or (Using Handles):
pdftk A=1.pdf B=2.pdf cat A B output 12.pdf
or (Using Wildcards):
pdftk *.pdf cat output combined.pdf

Wednesday, June 9, 2010

Processes keeping your device busy while Unmounting

Many a times, when you are trying to unmount your usb device, you find it busy and can't figure out what process is keeping it busy. Some of the commands which can help you in this matter are "fuser" and "lsof". fuser displays the PID of processes using specified files or file systems. lsof  list the open files.  Just observe the output of my lsof command:


[Wed Jun 09|swg@insane:intel]$ lsof |grep Transcend
bash       8619        swg  cwd       DIR       8,17     4096      470 /media/Transcend/intel
lsof      13006        swg  cwd       DIR       8,17     4096      470 /media/Transcend/intel
grep      13007        swg  cwd       DIR       8,17     4096      470 /media/Transcend/intel
lsof      13008        swg  cwd       DIR       8,17     4096      470 /media/Transcend/intel


Transcend is my usb device which I want to unmount and it is giving me a 'device busy' error. I find that "current working directory" is accessing the this device apart from the other two commands about which I am aware of.  Hence, I need to come out of this directory called "/media/Transcend/intel" and do an unmount on the usb device.

Monday, June 7, 2010

Printing to a Samsung SCX-4300 printer shared on Windows XP from Debian Lenny

I got a Samsung SCX-4300 multi-function printer at my office. Currently, it is connected to a windows machine through a USB cable. I wanted to be able to use it as a network printer for my Debian laptop. After a bit of search on google, I could find a solution that worked for me. I must thank Anupam for helping me out during this process. I derived my understanding from this page and this article summarizes the steps that I followed.


  1. Install  "smbclient (including Samba)" and "cups" related packages using APT.
  2. I share the printer on windows machine as "EE-Print". I connect to it through samba client using following command:

    $ smbclient -L EE-Print
    Enter swg's password:
    Domain=[EE-PRINT] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

    Sharename       Type      Comment
    ---------       ----      -------
    E$              Disk      Default share
    IPC$            IPC       Remote IPC
    print$          Disk      Printer Drivers
    SharedDocs      Disk    
    G$              Disk      Default share
    Printer3        Printer   HP LaserJet P2050 Series PCL6
    Printer4        Printer   Network Printer
    Printer5        Printer   HP LaserJet 5
    F$              Disk      Default share
    ADMIN$          Disk      Remote Admin
    C$              Disk      Default share
    Samsung         Printer   Samsung SCX-4300 Series

    Domain=[EE-PRINT] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
    Server               Comment
    ---------            -------
    Workgroup            Master

  3. Now we open the browser and open the CUPS web-interface by typing in the following URL:
    http://localhost:631/

  4. Now add a new printer, give a name to it and Set the device type to "Windows Printer via SAMBA".

  5. Set the URI which includes the name that was listed earlier by smbclient, for example something like "smb://EE-Print/Samsung". If the printer is passworded, you would use something like "smb://username:password@EE-Print/Samsung".

  6. You need to install linux driver for the printer "Samsung SCX-4300". The linux driver can be downloaded from the Samsung's official site. Untar the pack and run the "autorun" script file as a root. It has a gui interface which guides through various installation process. Currently install it as a local usb based printer.

  7. Once you have installed the driver, restart the CUPS server and click on "modify properties" option for the printer. When it asks for a driver, then select "Samsung scx-4300 series" from the drop down menu. It will now ask for the root username and password. Remember to enter "root" in the username field and give root password in the password field.

  8. Now you should be able to print your test page. 

Monday, April 12, 2010

Reliance NetConnect Broadband on Debian Lenny

Instructions for meant for people in India. Apart from the vendor information, other things should work for just anyone and anywhere.

Useful Links:

  1. Link1. The usb_modeswitch can be downloaded from this link.
  2. Link2
  3. Link3.

Basic steps are as follows:
  1. Install usb_modeswitch package. You need to have tcl and libusb (along with the headers) installed on your system. Go through the README that comes with the usb_modeswitch package.
  2. Plugin your reliance netconnect device and run "lsusb" to find it vendor and product id.

    $ lsusb
    Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 002: ID 064e:a101 Suyin Corp. Acer CrystalEye Webcam
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 006: ID 12d1:140b Huawei Technologies Co., Ltd. EC1260 Wireless Data Modem HSD USB Card
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

  3. Copy following lines to /etc/usb_modeswitch.conf

    # Huawei EC1260
    DefaultVendor= 0x12d1
    DefaultProduct=0x140b
    TargetClass=0xff
    CheckSuccess=20
    HuaweiMode=1

    I don't know much about the last 3 items. I copied the contents from a file named "12d1:1414" inside the folder /etc/usb_modeswitch.d/. Now run following command:

    $ sudo usb_modeswitch -c /etc/usb_modeswitch.conf

  4. Install the packages "wvdial" and "gnome-ppp" using synaptic manager (apt-get). You can download the packages manually as stated in the second link above. However, you may face dependency issue.

  5. $ sudo modprobe usbserial vendor=0x12d1 product=0x140b
  6. $ sudo wvdialconf

  7. Now edit the file /etc/wvdial.conf and add additional lines if you have to. Some of these lines are generated automatically by wvdialconf and hence you should not delete any of these. You should add your phone number, username and password and last few lines if necessary.

    [Dialer Defaults]
    Init1 = ATZ
    Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    Modem Type = Analog Modem
    Phone = #777
    ISDN = 0
    New PPPD = yes
    Modem = /dev/ttyUSB0
    Username = 93xxxxxxxx
    Password = 93xxxxxxxx
    Baud = 9600
    Stupid Mode = 1


  8. Now you should be ready to test your network connection. On a console, run the following command:
    $ sudo wvdial

    --> WvDial: Internet dialer version 1.60
    --> Warning: section [Dialer netconnect] does not exist in wvdial.conf.
    --> Warning: inherited section [Modem0] does not exist in wvdial.conf
    --> Cannot get information for serial port.
    --> Initializing modem.
    --> Sending: ATZ
    ATZ
    OK
    --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    OK
    --> Modem initialized.
    --> Sending: ATDT#777
    --> Waiting for carrier.
    ATDT#777
    CONNECT
    --> Carrier detected.  Starting PPP immediately.
    --> Starting pppd at Mon Apr 12 18:32:25 2010
    --> Pid of pppd: 17509
    --> Using interface ppp0
    --> pppd: ��[06][08]P�[06][08]
    --> pppd: ��[06][08]P�[06][08]
    --> pppd: ��[06][08]P�[06][08]
    --> pppd: ��[06][08]P�[06][08]
    --> local  IP address 115.184.110.26
    --> pppd: ��[06][08]P�[06][08]
    --> remote IP address 220.224.141.145
    --> pppd: ��[06][08]P�[06][08]
    --> primary   DNS address 202.138.103.100
    --> pppd: ��[06][08]P�[06][08]
    --> secondary DNS address 202.138.96.2
    --> pppd: ��[06][08]P�[06][08]

  9. Keep it running on the console. You configure your network manager (system->admin->network)  to use "PPP" connection as a default mode for connecting the internet. You may think of disabling other connections. For PPP connection, under general tab, check the box "Enable this connection" and select "serial modem" as the connection type. You can also fill in the phone number along with username and password. Under modem tab, it uses /dev/modem as the port (I don't know if it is correct). Under options, I have checked the box "set modem as default route to internet".