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