Saturday, 26 January 2008

Debian printing via CUPS

Task: to print documents via local printers in Linux.

Solve: it is required to install CUPS printing system and add the printer, which can take less than minute.

Let's firing up the CUPS
The CUPS is Common UNIX Printing System. Before you install CUPS, you ought to look if you printer is supported, starting from here. If you printer is supported, install the next packages:

aptitude install cupsys gs-esp foomatic-bin foo2zjs
It is significant to install not only CUPS itself, but a programs used by him.

It is really common mistake when people installing only cupsys,package and forgetting to install foo2zjs when using Hewlett Packard printers. As a result, during the print process, errors like listed below appearing:
I [23/Aug/2005:14:41:46 +0400] Adding end banner page "none" to job 7.
I [23/Aug/2005:14:41:46 +0400] Job 7 queued on 'HPDeskJet930C' by 'penta4'.
E [23/Aug/2005:14:41:46 +0400] Unable to convert file 0 to printable format for job 7!
I [23/Aug/2005:14:41:46 +0400] Hint: Do you have ESP Ghostscript installed?
I [23/Aug/2005:14:41:46 +0400] Hint: Try setting the LogLevel to "debug".

When all packages will be installed, you must add printers and start to print.

In press!

For new printer to add or to change settings of already installed printer, launching any browser and go to the address:


After some time, settings page should appeare:

The CUPS page may loading in a long time if there is misconfigured DNS server in the local machine or in network. It is preferable to deactivate unnecessary network interface
ifconfig eth0 down
Pushing Printers menu item - if there are no printers, CUPS must confirm that. For new printer to add, a root privileges are required:

Next, writing printer's name with Latin font and without spaces. After that considering a printer's connection type (in my case, it's a USB printer):

Thus, choosing a printer from a list:

A few clicks after and all work is done. It is a good idea to enter in Printers menu and check if it appearing in list of ready-to-print devices.

It can be easily configurable resolution, paper size and so on.

Printing from the GiMP

To print from GIMP, several additional packages are required:

aptitude install cupsys-driver-gimpprint gimp-print

Now open the GIMP, any picture and select File - Print. After that, a big dialog box should appear, where all printer properties can be tweaked.

Here are some obstacles: gimp-print by default assuming you printer definitely postscript-compatible, what is sometimes wrong. To prevent incorrect printer output, printer must be selected directly:

That means to push Configure printer, selecting a model, approving and saving tweaks. Finally, all should work perfectly.


Wednesday, 23 January 2008

Howto simply configure network card in Debian

Besides presence of eye-candy graphical configurators in Linux, in many situations it is more straightforward to change config files. It is really simple, and below it is shown how to do it.

How to see current network card settings
For brief review of network settings, it is enough to type in command prompt:

# ifconfig
sudo ifconfig
And something like this should appear:

lo        Link encap:Local Loopback
          inet addr:  Mask:
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:104 errors:0 dropped:0 overruns:0 frame:0
          TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9387 (9.1 KiB)  TX bytes:9387 (9.1 KiB)
eth0      Link encap:Ethernet  HWaddr 00:0A:E4:53:AA:2D
          inet addr:  Bcast:  Mask:
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:21 Base address:0x2c00

It is evident, that there are two interfaces had been configured: loopback named lo, and conventional Ethernet card eth0.

How to configure network connection in Linux
To do so, you need root privileges and _your_favorite_text_editor, as well as knowledge of which IP address you need to enter.

To find out which network interface need to be configured, type:
dmesg | grep -i Eth
and next strings should appear:
8139too Fast Ethernet driver 0.9.28
eth0: RealTek RTL8139 at 0xdf822c00, 00:15:f2:51:ad:da, IRQ 21
eth0: Identified 8139 chip type 'RTL-8101'
It looks like it is eth0 (because ethernet, 0 - zero device, pretty logical). Here and below it is assumed that interface is eth0

Configuring Linux network with static IP
Just edit the file:
# nano /etc/network/interfaces
sudo nano /etc/network/interfaces
For your local network static IPs are surely enough. In particular, for static IP networking you need to enter: IP-address, netmask and gateway. Change  /etc/network/interfaces to something like this:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
In this example, IP-address is set.

Configuring Linux network with dynamic IP addresses
Continue to edit network config:
# nano /etc/network/interfaces
sudo nano /etc/network/interfaces
It is simpler here:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Similarly, network interface can be configured via command line:
#dhcpcd eth0
For this, you should install in Debian aptitude install dhcp3-client.

Configuring DNS nameserver in Linux
If you don't configure DNS, you cannot connect to any Internet resource by it's name. But it's very simple to tweak it: just edit or create file /etc/resolv.conf
# nano /etc/resolv.conf
sudo nano
And type addresses like this:
as much as it is need. The word nameserver is required. It is curious, but in fresh Debian installation there is no resolv.conf...

For changes to take place immediately...
... one can reboot the system, or type:
# /etc/init.d/networking restart 
sudo /etc/init.d/networking restart 
That's all, changes will be applied for all network interfaces.

Saturday, 12 January 2008

Disk burning errors and some workarounds

Sometimes in a process of disk recording errors are happening. Such discs are often being threw away, but there are some tricks to finish the recording process. After that, disc is passing MD5 check and reads normally. Below are mentioned several tricks to do so.

Error during start or in the middle of recording
It is rarely happens, but at he beginning or in the middle of recording process growisofs suddenly broking precess and message appears:

Executing 'builtin_dd if=1.iso of=/dev/cdrom obs=32k seek=0'
/dev/cdrom: "Current Write Speed" is 16.4x1352KBps.
          0/4393730048 ( 0.0%) @0x, remaining ??:?? RBU 100.0% UBU   0.0%
          0/4393730048 ( 0.0%) @0x, remaining ??:?? RBU 100.0% UBU   0.0%
          0/4393730048 ( 0.0%) @0x, remaining ??:?? RBU 100.0% UBU   0.0%
          0/4393730048 ( 0.0%) @0x, remaining ??:?? RBU 100.0% UBU   0.0%
          0/4393730048 ( 0.0%) @0x, remaining ??:?? RBU 100.0% UBU   0.0%
    1671168/4393730048 ( 0.0%) @0.4x, remaining 1007:27 RBU 100.0% UBU   1.9%
:-[ WRITE@LBA=330h failed with SK=3h/ASC=0Ch/ACQ=00h]: Input/output error
:-( write failed: Input/output error
/dev/cdrom: flushing cache
/dev/cdrom: closing track
:-[ CLOSE TRACK failed with SK=3h/ASC=0Ch/ACQ=00h]: Input/output error
/dev/cdrom: closing session
/dev/cdrom: reloading tray

All that you need is to start burning again: growisofs restarts the process of recording from the last informational sector and will have record disc completely. After that, disc can be read without any problems and it passes MD5 check.

Close session error
Disk had been fully recorded, but I/O error appears while closing the session:

2144544*2KB out @ average 9.9x1352KBps
/dev/cdrom: flushing cache
/dev/cdrom: closing track
/dev/cdrom: closing session
:-[ CLOSE SESSION failed with SK=5h/ASC=72h/ACQ=03h]: Input/output error

It is pity, that disc had been burned completely but session isn't closed. Such disc is unreadable. But that can be corrected using simple trick from authors of dvd+rw-tools: here is a little program close, and here is the source code. Downloading it from here, installing sources of  dvd+rw-tools and copying close.cpp in the directory with dvd+rw-tools sources. After that, let's compile close.cpp :

g++ -o close close.cpp
Don't forget to give it appropriate permissions, and insert disc with unclosed session in the drive. Close session by command:
close /dev/hda
If you DVD-recorder have different device file than /dev/hda please correct it.

Sunday, 6 January 2008

TV Tuner Beholder BeholdTV 409FM in Linux

For TV Tuner to work in Linux properly, several steps should be performed. Described steps below are suitable for other devices of such type: for example, webcams. Only kernel modules parameters will be different.

Tweaking TV Tuner in Debian Linux

If you are using default distribution kernel, this section is certain can skipped. Type in terminal dmesg and there should appear something like that::

saa7130/34: v4l2 driver version 0.2.14 loaded
ACPI: PCI Interrupt 0000:06:02.0[A] -> GSI 18 (level, low) -> IRQ 18

saa7133[0]: found at 0000:06:02.0, rev: 240, irq: 18, latency: 32, mmio: 0xdfeff800

saa7133[0]: subsystem: 0000:4091, board: Beholder BeholdTV 409 FM [card=67,autodetected]

saa7133[0]: board init: gpio is c0c000

input: saa7134 IR (Beholder BeholdTV 4 as /class/input/input3

saa7133[0]: i2c eeprom 00: 00 00 91 40 54 20 00 00 00 00 00 00 00 00 00 01

saa7133[0]: i2c eeprom 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

tuner 1-0060: All bytes are equal. It is not a TEA5767

tuner 1-0060: chip found @ 0xc0 (saa7133[0])

tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))

tda9887 1-0043: chip found @ 0x86 (saa7133[0])

saa7133[0]: registered device video0 [v4l2]

saa7133[0]: registered device vbi0

saa7133[0]: registered device radio0
You can receive different diagnostic messages, but principle is the same:
  • Driver name - saa7133
  • Tuner name - Beholder BeholdTV 409 FM and card number card=67
  • Driver number for  tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
Thus, this numbers should be remembered or written. By default, a PAL standard is set for TV Tuners. To tell kernel module proper parameters, one must reload them with proper settings:
rmmod saa7134
modprobe saa7134 tuner=63 card=67

rmmod tda9887

modprobe tda9887 secam=d

chmod 777 /dev/video0
Greyed line is suitable only for countries with SECAM TV standard (for example, Russia).
This example covers Behold 409FM and kernel version below 2.6.18. For newer kernels (version > 2.6.18), one should use that parameters:

rmmod saa7134
modprobe saa7134 tuner=63 card=67

rmmod tuner

modprobe tuner secam=d

chmod 777 /dev/video0

Please pay attention that in /dev/ should appear new device file
video0 - here is our tuner, and this device file will be used by programs. Often many problems arise with incorrect (mostly, insufficient) permissions to /dev/video0. Thus, give maximum permissions to file:
sudo chmod 777 /dev/video0

If you have a customized linux kernel
In customized kernel, an I2C and Video4Linux support must be activated and a driver for TV Tuner chip as well. It is notable that one kernel module supports a couple of tuners!

Hence, let's compile i2c and
Video4Linux monolithically, and I2C drivers and tuner driver as modules. If you are uncertain of which driver is necessary, use
Moreover, in Documentation section of kernel sources, video4linux subsection, practically all driver parameters are described.

If TV Tuner does not work under Linux...
Consult with current kernel documentation - there should be answer of which tuners are supported. Consider to upgrade your kernel to fresh one. On the off-chance, documentation on kernel is located here: /usr/src/linux-2.6.zz.z/Documentation/video4linux where zz.z is your exact kernel version.

Inside this directory,
should be several files like CARDLIST.yyy, where yyy - driver name. Open this files and search you tuner name. If you can't find your tuner there, upgrade the kernel.

If you are lucky, you can find even a card number - for my Beholder409 it is:

67 -> Beholder BeholdTV 409 FM [0000:4091]
This is exact card number, just substitute it in command
modprobe saa7134 tuner=63 card=67

The same situation appears with CARDLIST.tuner - it must be only one, but this file contents tuners number. In dmesg output you should see:
tuner 1-0043: chip found @ 0x86 (saa7133[0])
tda9887 1-0043: tda988[5/6/7] found @ 0x43 (tuner)
tuner 1-0060: All bytes are equal. It is not a TEA5767
tuner 1-0060: chip found @ 0xc0 (saa7133[0])
tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
Hence, 38 is my tuner number (again, for Beholder409). The same number is in file:
tuner=38 - Philips PAL/SECAM multi (FM1216ME MK3)

Searching TV channels
I hope that your tuner is detected, so the only thing remaining is to install software:
aptitude install tvtime
This is one of the coolest program for TV Tuners that stood out from the rest of programs (tvtime, xawtv, zapper). After installation of tvtime, let's search channels:
which starting to scan all frequencies and search TV channels:
Reading configuration from /etc/tvtime/tvtime.xml
Reading configuration from /home/penta4/.tvtime/tvtime.xml
Scanning using TV standard SECAM.
Scanning from 44,00 MHz to 958,00 MHz.
Found a channel at 59,50 MHz (58,25 - 60,50 MHz), adding to channel list.
Found a channel at 63,00 MHz (62,75 - 63,00 MHz), adding to channel list.
Found a channel at 77,50 MHz (77,25 - 77,50 MHz), adding to channel list.
Found a channel at 79,75 MHz (79,50 - 79,75 MHz), adding to channel list.
Found a channel at 85,50 MHz (84,25 - 86,50 MHz), adding to channel list.
Found a channel at 111,50 MHz (110,25 - 112,50 MHz), adding to channel list.

After that, run tvtime and rearrange found channels to your own taste
Take a note that computer TV Tuners (especially internal) are known to provide worse picture quality and less channels than conventional TV. This is caused by strong electromagnetic noise and cross-talks inside computer.
As a result, in your home directory should appear hidden directory .tvtime where all TV tweaks are placed.