Linux Notes

These notes originated with Debian Lenny. The intention is to keep the information consistent with the current stable release of Debian but most of the techniqes will work in any current Linux release. Complaints and suggestions welcome. The shop home page has an address.

Reading manual Pages

Usually I read man pages with ET in Oberon. This function, defined in .bashrc, formats a page.

mantxt () { case $# in 
  0) echo "man [<section>] <command>" ;; 
  1) man -Tascii $1    | col -bx >   $1".man" ;; 
  2) man -Tascii $1 $2 | col -bx > $2"."$1".man" ;; esac }
"mantxt bzip2" will produce the file bzip2.man which can be moved to the Oberon system with FTP and read conveniently. The section can be specified as in "mantxt 5 incron.conf".

Collecting significant lines from a configuration file

Remove any line containing only a comment and any blank line.
egrep -v '(^ *#)|(^ *$)' /etc/shorewall/interfaces

Reformatting of a Flash Store

As advised, reformat a flash drive only when necessary. 
If a flash store is reformatted carelessly, reformatting again with improved   
strategy might recover better performance and a longer lifespan. 
When a flash store fails catastrophically so that the filesystem is no  
longer accessible, reformatting may allow continued use.
The article written by Arnd Bergmann should be studied. 
https://lwn.net/Articles/428584/
Based upon the capacity of a store, these upper bounds on the size  
of "write page" and "erase segment" are assumed. 
The table is from   
http://lists.laptop.org/pipermail/devel/2011-March/031505.html 
with additional information.
{| border="1" cellspacing="0" cellpadding="2" width="100%" class="wikitable" 
! Capacity, MB 
! Upper bound on size of write page, WPUB 
! Upper bound on size of erase block, EBUB 
! Upper bound on size of erase segment, ESUB 
|- 
| 256 MB 
| 1 KiB 
| 64 KiB 
| 64 KiB 
|- 
| 512 MB 
| 2 KiB 
| 256 KiB 
| 256 KiB 
|- 
| 1 GB 
| 4 KiB 
| 512 KiB 
| 512 KiB 
|- 
| 2 GB 
| 4 KiB 
| 512 KiB 
| 512 KiB 
|- 
| 4 GB 
| 8 KiB 
| 1 MiB 
| 2 MiB 
|- 
| 8 GB 
| 16 KiB 
| 4 MiB 
| 4 MiB 
|- 
| 16 GB 
| 16 KiB 
| 4 MiB 
| 8 MiB 
|}
Then apply these rules. 
Locate your flash store in the preceeding table.
Partitioning
* Leave the first ESUB unallocated.  The partition map and signature  
will be there.
* Begin the first part at the second ESUB. Each part should be  
 a whole number of ESUBs. 
 With a capacity of 512 MB for example, the first part should begin  
 at 256 KiB.  If fdisk refers to "logical sectors" of 512 bytes, the first  
 part will begin at the 513th sector and will occupy n x 512 sectors,  
 n being a whole number.
* Each subsequent part should occupy a whole number of ESUBs.  
 This will align parts on erase segment boundaries.
Formatting a Partition
* To prevent a block write from splitting a write page, the filesystem  
 logical sector should be a whole number x WPUB.   
 In the 512 MB CF example, WPUB is 2 KiB.  This command will  
 make logical sectors of 2 KiB with 1 sector per cluster. 
 512 entries in the root directory. 
mkfs.vfat -F 32 -n MyPart -r 1536 -s 1 -S 2048 -v /dev/sdb1

Copying the filesystem in a partition into another partition, according to David Raeker-Jordan

http://lists.debian.org/debian-user/2001/11/msg00830.html

CUPS Default Printer

Whenever I attempt to print a document, CUPS presents its viewer listing "Print to File" and "HPDeskJet500". Neither is selected although the obvious choice is the DeskJet. http://www.cups.org/doc-1.1/sum.html contains the note,
"Setting the Default Printer
The administrator normally will set a system-wide default printer that is normally used as the default printer by everyone. Use the -d printer option to set your own default printer:
lpoptions -d deskjet ENTER"

Nice but as a novice administrator of my own system, exactly how can I set the system-wide default? man cupsd, under "SEE ALSO" cites printers.conf and sure enough the system has /etc/cups/printers.conf containing <Printer HPDeskJet500> ... </Printer>. Luckily, man printers.conf mentions <DefaultPrinter name> ... </Printer>. Stopping CUPS, adding the word "Default" to the extant directive and restarting CUPS selects the default printer permanently. In my instance "<DefaultPrinter HPDeskJet500> ... </Printer>". No need for lpoptions. Wew! Is the obscurity really necessary?

X Terminal Emulator in Xfce4 in Debian Squeeze on an IBM NetVista 6578

IBM specifies an Intel 815E video adapter supporting 16M colors. In other words, 24 bit color. These lines should be in /etc/X11/xorg.conf.
Section "Screen"
...
DefaultDepth     24

X Terminal Emulator in Xfce4 crashes the X display with this color depth. If DefaultDepth is set to 16, all is well. Is this a bug in X Terminal Emulator or elsewhere in Xfce4 or in xserver-xorg?

Task Server based upon incron

When a file is written to a directory, incrond can execute a task according to the file name extension. For example, Web page development is a repetition of a cycle of edit and test. Editing of a *.html file is performed on a workstation. To test, the file is FTPed to the task server. incrond running on the task server detects the arrival of the file and executes iceweasel on it. The user can then review the display and decide what further changes might be needed.

Three simple steps suffice to create a working task server.

# Make a task invocation script.

peter@dalton:~$ cat /home/peter/IncronTask 
#!/bin/sh 
# A script to perform tasks for incrond as files arrive at ~. 
case $1 in
*.ijs ) /home/peter/j701/bin/jconsole $1 > book1.out 2>&1 ;;
*html ) iceweasel --display=:0 "file:///home/peter/"$1 ;;
*.jpg ) iceweasel --display=:0 "file:///home/peter/"$1 ;;
*.pdf ) evince    --display=:0 "file:///home/peter/"$1 ;;
*.png ) iceweasel --display=:0 "file:///home/peter/"$1 ;;
*.svg ) iceweasel --display=:0 "file:///home/peter/"$1 ;;
*docx ) abiword   --display=:0 "file:///home/peter/"$1 ;;
*.Text ) iceweasel --display=:0 "file:///home/peter/"$1 ;;
*.txt ) iceweasel --display=:0 "file:///home/peter/"$1 ;;
*     ) return 0 ;; 
esac 
exit 0

"chmod u+x /home/peter/IncronTask" to make the script executable.

# Install the incron package and, as a user, create an incrontab.

peter@dalton:/home/peter# incrontab -e 
/home/peter/ IN_CLOSE_WRITE /home/peter/IncronTask $#
When a file is written in /home/peter, IncronTask is executed with the file name as argument. If the file name ends html, a tab in iceweasel is opened and the html or xhtml file is interpreted. If iceweasel is not running, it is started. When a file with name ending .ijs is written in /home/peter/, the J interpreter is invoked on it with stdout and stderr going into jresults.out. The IN_CLOSE_WRITE event will occur whether the file is written by an editor or sent by FTP. Note that IN_MODIFY is not the appropriate mask in this circumstance. The distinction is explained in a FAQ in "http://inotify.aiken.cz/?section=incron&page=doc&lang=en". Also note that incrond takes the <path> and <command> in incrontab without shell interpretation; ~ is not expanded to the user's home directory and redirection of stdout and stderr is not available.

Installing Iceweasel

Just follow the instructions.

Invoking Icedove from Iceweasel

To allow an iceweasel to invoke an icedove when a mailto link is clicked, first put these six lines in a file in your home directory. This script was given to me; understanding is limited.

#!/bin/sh
icedove -remote 'ping()' ¦¦ exec icedove "$@"
# exec icedove if there's no instance running
icedove -remote "xfeDoCommand(openInbox)"
# otherwise raise window,
[ "${1%%:*}" = 'mailto' ] && icedove -remote "mailto(${1#mailto:})"

This is the content of a new script, compliments of M. Paduille.

#!/bin/sh
icedove "$1"

In my case the file is /home/peter/iceweasel.mailto.sh. This is a shell script; give it the execute attribute.
chmod 744 /home/<YourName>/iceweasel.mailto.sh

Next, start the iceweasel, give it the URI "about:config" and right-click on the heading Preference Name. Type or paste in "network.protocol-handler.app.mailto" and value "/home/"<YourName>"/iceweasel.mailto.sh".

Close iceweasel, restart it and try a mailto link.

Configuring a SMC 7004AWBR Router

To configure an SMC 7004AWBR through a Belkin F5D5050, the F5D5050 must be configured to allow communication. Use this command.
ethtool -s eth0 speed 10 duplex half autoneg off
Prior to this setting, the red LED on the Belkin adapter flashes as it attempts to negotiate link parameters.

Set the computer to 192.168.123.x, x in {1,..253}; address the router as 192.168.123.254.

Installing Grub

These notes refer to Grub 1 whereas Squeezes has Grub 2.

"Installing grub" can mean "installing the grub software package in Linux". Otherwise it can mean "installing the Grub boot loader into the MBR of a disk drive" or "... into the head of a partition on a drive".

Installing the grub software package is a simple exercise. Start aptitude, select grub and install, or issue "apt-get install grub".

Installing the Grub Boot Loader Using a Working System

If a Linux system is installed by a CD based installer, Grub will probably be installed near the end of the process. Otherwise an independent installation of Grub may be needed. This can occur, for example, if the CD fails to install Grub or if a Debian system is installed by debootstrap.

Review the Grub Manual, found by Googling "grub manual".

The easiest way to install the boot loader to a drive, is to connect it temporarily to a working system which has the grub package. This method is described in the manual under the heading "3.2 Installing GRUB natively".

The target drive can be connected to the ATA bus; more conveniently through a USB adapter. Verify that the drive is connected properly by checking the output of the Linux command "fdisk -l".

Copy the directory /boot/grub from the working system to the target location with these commands.

# Mount the <target> filesystem. For an ATA attached drive, <target> might be hdb. A USB attached drive is likely to be sda or sdb. Be certain you have identified <target> correctly.

mount -t ext3 /dev/<target> /mnt

# verify that the grub directory is present, copy and unmount.

cd /boot
ls
cp -r ./grub /mnt/boot
umount /mnt

Next you need to write the grub boot code into the MBR of the target drive. Rarely the target location will be a partition rather than the MBR. If you do not understand this, read. Grub can be installed with the linux command "grub-install" but working in the grub shell after issuing the command "grub" is better. The identity of the target location is critical. At the Grub prompt, "find /boot/grub/stage1" as the manual instructs. Usually only two locations will be found. The first is in the working host system. The second is in the target system.

# Set the location where /boot/grub/stage1occurred in the target system.
root (hd<m>,<n>)

# Write the boot code to the MBR.
setup (hd<m>)

All that remains is to edit /boot/grub/menu.lst in the target system to represent the ultimate working configuration, move the drive there and test. This is a sample stanza.

title          Debian GNU/Linux, kernel 2.6.22-3-686
root          (hd0,0)
kernel          /boot/vmlinuz-2.6.22-3-686 root=/dev/hda1 ro
initrd          /boot/initrd.img-2.6.22-3-686
savedefault

If booting fails, note the error message from Grub and read about it in the manual. If the problem is just an error in menu.lst, it can probably be fixed with vi after booting from Tom's RTBT. If the boot loader is installed incorrectly, the drive will have to be reconnected to the working host system.

The notes in this page might also be helpful.
http://lists.debian.org/debian-user/2004/10/msg00148.html

Installing Grub from Diskettes

In the Debian Lenny system here, /usr/sbin/grub-floppy contains only a script for the message "This program ... has been deprecated in favour of grub-mkrescue ...". Booting the system from the grub-rescue diskette made from the image in /usr/lib/grub-rescue/grub-rescue-floppy.img produces only the message "Welcome to Grub!" and a frozen system. I can not recommend making a Grub diskette at this time. If the grub diskette package is ever fixed, the following instructions will probably need updating.

# Install the grub and grub-disk packages.
# To make a bootable grub installer diskette, put a diskette in the drive and issue this command.
grub-floppy /dev/fd0
# Making a spare diskette at this time is advisable.
# Now go to /usr/share/grub-disk/.
cd /usr/share/grub-disk/
ls
# ls should report a *.gz image. gunzip it.
gunzip ./*.gz
# Confirm that you have an ext2fs image.
ls *2fs
# Now make a /boot/grub diskette using this command.
dd if=*2fs of=/dev/fd0 bs=512
# Again, a spare is advisable.
# Finally you need a bootable rescue diskette or CD.
# I use Tom's RTBT which is available from servers. Find it with Google.
# Now you are ready to proceed with installation of Grub.
# Boot from the Grub installer diskette and issue this command to install the boot loader in the MBR of the first drive. Refer to the Grub Manual for more complex cases.
setup (hd0)
# Now you must copy /boot/grub to the target drive.
# Reboot from the rescue diskette or CD. Once the system is running again, put the /boot/grub diskette in the drive. If you used Tom's RTBT, it can be replaced with the /boot/grub diskette.
# Make mount points for the diskette and the HDD and mount them.
mkdir /source /target
mount /dev/fd0 /source
mount /dev/hda1 /target
# Now copy /boot/grub to the target.
cp -r /source/boot/grub /target/boot
# Now apply a text editor such as vi or nano on /boot/grub/menu.lst on the HDD so that it is consistent with the names of the kernel and ramdisk image in /boot on the HDD.
vi /target/boot/grub/menu.lst
# Refer to the Grub Manual and comments in menu.lst.
# Now you can try to boot the HDD. If it fails, read what the manual has to say about the error, edit menu.lst and try again.

Rebooting the Foxconn System

Squeeze freshly installed on a machine based on a Foxconn Model 661M05-6ELRS would shutdown properly but would hang on reboot. Updating the BIOS code from 4A2F1P20 122004 to 4A2F1P43 110105 yielded no change. This explanation turned up.
http://linux.koolsolutions.com/2009/08/04/howto-fix-linux-hangfreeze-during-reboots-and-restarts/

After adding this line to /etc/default/grub;
GRUB_CMDLINE_LINUX="reboot=bios"
and executing update-grub2 the system reboots. Thanks to Kushal Koolwal for the well written article.

Autostarting VoIP Clients

Notice the use of sleep to avoid contention for sound devices when the cllients probe during initialization.

Pidgin in Lenny and Squeeze

This file /home/peter/.config/autostart/pidgin.desktop starts Pidgin automatically when LXDE is opened.

peter@dalton:~$ cat ~/.config/autostart/pidgin.desktop
# ~/.config/autostart/pidgin.desktop
[Desktop Entry]
# Encoding=UTF-8
Type=Application
Name=pidgin
#Comment=pidgin
Exec=sh -c "sleep 5; /usr/bin/pidgin"
# StartupNotify=false
# Terminal=false
# Hidden=false

Skype in Lenny and Squeeze

Interesting essay by Peter Naus, "Skype can have a costly drawback".

This refers to kernel 2.6.32-5-686 and Skype 2.2.0.25 released for Lenny and for Squeeze.

I've tested a Microsoft LifeCam NX-6000. The v4l1compat.so shared object library must be loaded before Skype starts. Loading the kernel module v4l1_compat is not sufficient to load v4l1compat.so. For starting Skype with a command, this alias is convenient.

peter@dalton:~$ egrep skype ~/.bashrc
alias skype='LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so /usr/bin/skype'

This file /home/peter/.config/autostart/skype.desktop starts Skype automatically when LXDE is opened.

peter@dalton:~$ cat ~/.config/autostart/skype.desktop
# ~/.config/autostart/skype.desktop
[Desktop Entry]
# Encoding=UTF-8
Type=Application
Name=skype
#Comment=skype
Exec=sh -c "sleep 8; LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so /usr/bin/skype"
# StartupNotify=false
# Terminal=false
# Hidden=false

Twinkle in Lenny and Squeeze

This file /home/peter/.config/autostart/twinkle.desktop starts Twinkle automatically when LXDE is opened.

peter@dalton:~$ cat ~/.config/autostart/twinkle.desktop
# ~/.config/autostart/twinkle.desktop
[Desktop Entry]
# Encoding=UTF-8
Type=Application
Name=twinkle
#Comment=twinkle
Exec=sh -c "sleep 15; /usr/bin/twinkle"
# StartupNotify=false
# Terminal=false
# Hidden=false

Resetting the clocks when the Lithium backup cell has failed

sudo date --set="2012-12-17 7:10"
sudo hwclock --systohc

A Modem Chatscript for Ringback

Ringback is a simple idea which allows a phone line to be used for voice and also for an incoming modem connection; just what is needed to connect to an office workstation from a domicile lacking high speed TCP/IP. It is explained in the mgetty manual, the html version of which is found by googling "mgetty manual".

To get a chatscript for a linux client, I first made a script with pppconfig. The new /etc/chatscripts/blah was edited to this. The protocol is to ring the server modem, pause briefly to let it close the circuit, hang up, pause 11 seconds, ring again and proceed as for a "ringonce" connection.

# This chatfile was generated by pppconfig 2.3.17.
# Please do not delete any of the comments. Pppconfig needs them.
#
# ispauth PAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
'' ATZ
OK "ATDT16041234567,,;H0"
OK \d\d\d\d\d\d\d\d\d\d\d\c
# ispconnect
#OK-AT-OK "ATDT16041234567"
'' "ATDT16041234567"
# ispconnect
CONNECT \d\c
# prelogin
# ispname
# isppassword
# postlogin
# end of pppconfig stuff

The ringback script for Oberon is discussed on the Oberon page under Dialer.

USB Audio Adapters

The adapter supplied with the Altec Lansing USB Headset has a C-Media CM 108 chip. A red LED indicates activity. In Squeeze, sound works for Skype and VLC.

The Syba FG-UAUDV1-C119 is similar to the Altec Lansing. Appearance matches the SD-CM-UAUD. The chip appears to be a C-Media CM 119. A green LED indicates activity. In Squeeze on Joule, sound works for Skype and VLC.

Griffin iMic, not tested. Reports are inconsistent.

M-Audio Transit http://www.theory.physics.ubc.ca/transit.html

Tenx 3D Sound Adapter
Photos: Tenx.jpg, TenxBack.jpg .
LEDs: one green, one red.
Documentation: http://www.tenx.com.tw/ProductHome.aspx .

In Debian Lenny at 02009-03-12 there was no sound in or out with Ekiga, Skype and VLC.

Excerpt of output from lsusb.

Bus 003 Device 006: ID 1130:f211 Tenx Technology, Inc. USB audio headset

Excerpt of output from lshal.

udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial' 
  info.linux.driver = 'usb'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1d6b_1_0000_01_0e_1'  (string) 
  info.product = 'USB audio headset'  (string) 
  info.subsystem = 'usb_device'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial'  (string) 
  info.vendor = 'Tenx Technology, Inc.'  (string) 
  linux.device_file = '/dev/bus/usb/003/004'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'usb'  (string) 
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1'  (string) 
  usb_device.bus_number = 3  (0x3)  (int) 
  usb_device.can_wake_up = false  (bool) 
  usb_device.configuration_value = 1  (0x1)  (int) 
  usb_device.device_class = 0  (0x0)  (int) 
  usb_device.device_protocol = 0  (0x0)  (int) 
  usb_device.device_revision_bcd = 267  (0x10b)  (int) 
  usb_device.device_subclass = 0  (0x0)  (int) 
  usb_device.is_self_powered = false  (bool) 
  usb_device.linux.device_number = 4  (0x4)  (int) 
  usb_device.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1'  (string) 
  usb_device.max_power = 500  (0x1f4)  (int) 
  usb_device.num_configurations = 1  (0x1)  (int) 
  usb_device.num_interfaces = 5  (0x5)  (int) 
  usb_device.num_ports = 0  (0x0)  (int) 
  usb_device.product = 'USB audio headset'  (string) 
  usb_device.product_id = 61969  (0xf211)  (int) 
  usb_device.speed = 12.0 (12) (double) 
  usb_device.vendor = 'Tenx Technology, Inc.'  (string) 
  usb_device.vendor_id = 4400  (0x1130)  (int) 
  usb_device.version = 1.1 (1.1) (double)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_usbraw' 
  info.capabilities = {'usbraw'} (string list) 
  info.category = 'usbraw'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial'  (string) 
  info.product = 'USB Raw Device Access'  (string) 
  info.subsystem = 'usb_device'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_usbraw'  (string) 
  linux.device_file = '/dev/bus/usb/003/004'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'usb_device'  (string) 
  linux.sysfs_path = '/sys/class/usb_device/usbdev3.4'  (string) 
  usbraw.device = '/dev/bus/usb/003/004'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if4' 
  info.linux.driver = 'usbhid'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial'  (string) 
  info.product = 'USB HID Interface'  (string) 
  info.subsystem = 'usb'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if4'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'usb'  (string) 
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.4'  (string) 
  usb.bus_number = 3  (0x3)  (int) 
  usb.can_wake_up = false  (bool) 
  usb.configuration_value = 1  (0x1)  (int) 
  usb.device_class = 0  (0x0)  (int) 
  usb.device_protocol = 0  (0x0)  (int) 
  usb.device_revision_bcd = 267  (0x10b)  (int) 
  usb.device_subclass = 0  (0x0)  (int) 
  usb.interface.class = 3  (0x3)  (int) 
  usb.interface.number = 4  (0x4)  (int) 
  usb.interface.protocol = 1  (0x1)  (int) 
  usb.interface.subclass = 1  (0x1)  (int) 
  usb.is_self_powered = false  (bool) 
  usb.linux.device_number = 4  (0x4)  (int) 
  usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.4'  (string) 
  usb.max_power = 500  (0x1f4)  (int) 
  usb.num_configurations = 1  (0x1)  (int) 
  usb.num_interfaces = 5  (0x5)  (int) 
  usb.num_ports = 0  (0x0)  (int) 
  usb.product = 'USB HID Interface'  (string) 
  usb.product_id = 61969  (0xf211)  (int) 
  usb.speed = 12.0 (12) (double) 
  usb.vendor = 'Tenx Technology, Inc.'  (string) 
  usb.vendor_id = 4400  (0x1130)  (int) 
  usb.version = 1.1 (1.1) (double)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if4_logicaldev_input' 
  info.addons.singleton = {'hald-addon-input'} (string list) 
  info.capabilities = {'input', 'input.keys', 'button'} (string list) 
  info.category = 'input'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if4'  (string) 
  info.product = 'USB  AUDIO'  (string) 
  info.subsystem = 'input'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if4_logicaldev_input'  (string) 
  input.device = '/dev/input/event7'  (string) 
  input.originating_device = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if4'  (string) 
  input.product = 'USB  AUDIO'  (string) 
  input.xkb.layout = 'us'  (string) 
  input.xkb.model = 'evdev'  (string) 
  input.xkb.rules = 'base'  (string) 
  input.xkb.variant = ''  (string) 
  linux.device_file = '/dev/input/event7'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'input'  (string) 
  linux.sysfs_path = '/sys/class/input/input9/event7'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if3' 
  info.linux.driver = 'usbhid'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial'  (string) 
  info.product = 'USB HID Interface'  (string) 
  info.subsystem = 'usb'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if3'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'usb'  (string) 
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.3'  (string) 
  usb.bus_number = 3  (0x3)  (int) 
  usb.can_wake_up = false  (bool) 
  usb.configuration_value = 1  (0x1)  (int) 
  usb.device_class = 0  (0x0)  (int) 
  usb.device_protocol = 0  (0x0)  (int) 
  usb.device_revision_bcd = 267  (0x10b)  (int) 
  usb.device_subclass = 0  (0x0)  (int) 
  usb.interface.class = 3  (0x3)  (int) 
  usb.interface.number = 3  (0x3)  (int) 
  usb.interface.protocol = 1  (0x1)  (int) 
  usb.interface.subclass = 1  (0x1)  (int) 
  usb.is_self_powered = false  (bool) 
  usb.linux.device_number = 4  (0x4)  (int) 
  usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.3'  (string) 
  usb.max_power = 500  (0x1f4)  (int) 
  usb.num_configurations = 1  (0x1)  (int) 
  usb.num_interfaces = 5  (0x5)  (int) 
  usb.num_ports = 0  (0x0)  (int) 
  usb.product = 'USB HID Interface'  (string) 
  usb.product_id = 61969  (0xf211)  (int) 
  usb.speed = 12.0 (12) (double) 
  usb.vendor = 'Tenx Technology, Inc.'  (string) 
  usb.vendor_id = 4400  (0x1130)  (int) 
  usb.version = 1.1 (1.1) (double)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if3_logicaldev_input' 
  info.addons.singleton = {'hald-addon-input'} (string list) 
  info.capabilities = {'input', 'input.keyboard', 'input.keypad', 'input.keys', 'button'} (string list) 
  info.category = 'input'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if3'  (string) 
  info.product = 'USB  AUDIO'  (string) 
  info.subsystem = 'input'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if3_logicaldev_input'  (string) 
  input.device = '/dev/input/event6'  (string) 
  input.originating_device = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if3'  (string) 
  input.product = 'USB  AUDIO'  (string) 
  input.xkb.layout = 'us'  (string) 
  input.xkb.model = 'evdev'  (string) 
  input.xkb.rules = 'base'  (string) 
  input.xkb.variant = ''  (string) 
  linux.device_file = '/dev/input/event6'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'input'  (string) 
  linux.sysfs_path = '/sys/class/input/input8/event6'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0' 
  info.linux.driver = 'snd-usb-audio'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial'  (string) 
  info.product = 'USB Audio Interface'  (string) 
  info.subsystem = 'usb'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'usb'  (string) 
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.0'  (string) 
  usb.bus_number = 3  (0x3)  (int) 
  usb.can_wake_up = false  (bool) 
  usb.configuration_value = 1  (0x1)  (int) 
  usb.device_class = 0  (0x0)  (int) 
  usb.device_protocol = 0  (0x0)  (int) 
  usb.device_revision_bcd = 267  (0x10b)  (int) 
  usb.device_subclass = 0  (0x0)  (int) 
  usb.interface.class = 1  (0x1)  (int) 
  usb.interface.number = 0  (0x0)  (int) 
  usb.interface.protocol = 0  (0x0)  (int) 
  usb.interface.subclass = 1  (0x1)  (int) 
  usb.is_self_powered = false  (bool) 
  usb.linux.device_number = 4  (0x4)  (int) 
  usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.0'  (string) 
  usb.max_power = 500  (0x1f4)  (int) 
  usb.num_configurations = 1  (0x1)  (int) 
  usb.num_interfaces = 5  (0x5)  (int) 
  usb.num_ports = 0  (0x0)  (int) 
  usb.product = 'USB Audio Interface'  (string) 
  usb.product_id = 61969  (0xf211)  (int) 
  usb.speed = 12.0 (12) (double) 
  usb.vendor = 'Tenx Technology, Inc.'  (string) 
  usb.vendor_id = 4400  (0x1130)  (int) 
  usb.version = 1.1 (1.1) (double)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_oss_mixer__1' 
  info.capabilities = {'oss'} (string list) 
  info.category = 'oss'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  info.product = 'USB Audio OSS Control Device'  (string) 
  info.subsystem = 'sound'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_oss_mixer__1'  (string) 
  linux.device_file = '/dev/mixer2'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'sound'  (string) 
  linux.sysfs_path = '/sys/class/sound/mixer2'  (string) 
  oss.card = 2  (0x2)  (int) 
  oss.card_id = 'USB  AUDIO'  (string) 
  oss.device_file = '/dev/mixer2'  (string) 
  oss.device_id = 'USB Audio'  (string) 
  oss.originating_device = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  oss.type = 'mixer'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_alsa_control__1' 
  alsa.card = 2  (0x2)  (int) 
  alsa.card_id = 'USB  AUDIO'  (string) 
  alsa.device_file = '/dev/snd/controlC2'  (string) 
  alsa.originating_device = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  alsa.type = 'control'  (string) 
  info.capabilities = {'alsa'} (string list) 
  info.category = 'alsa'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  info.product = 'USB  AUDIO ALSA Control Device'  (string) 
  info.subsystem = 'sound'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_alsa_control__1'  (string) 
  linux.device_file = '/dev/snd/controlC2'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'sound'  (string) 
  linux.sysfs_path = '/sys/class/sound/controlC2'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_oss_pcm_0_0' 
  info.capabilities = {'oss'} (string list) 
  info.category = 'oss'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  info.product = 'USB Audio OSS PCM Device'  (string) 
  info.subsystem = 'sound'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_oss_pcm_0_0'  (string) 
  linux.device_file = '/dev/audio2'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'sound'  (string) 
  linux.sysfs_path = '/sys/class/sound/audio2'  (string) 
  oss.card = 2  (0x2)  (int) 
  oss.card_id = 'USB  AUDIO'  (string) 
  oss.device = 0  (0x0)  (int) 
  oss.device_file = '/dev/audio2'  (string) 
  oss.device_id = 'USB Audio'  (string) 
  oss.originating_device = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  oss.type = 'pcm'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_oss_pcm_0' 
  info.capabilities = {'oss'} (string list) 
  info.category = 'oss'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  info.product = 'USB Audio OSS PCM Device'  (string) 
  info.subsystem = 'sound'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_oss_pcm_0'  (string) 
  linux.device_file = '/dev/dsp2'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'sound'  (string) 
  linux.sysfs_path = '/sys/class/sound/dsp2'  (string) 
  oss.card = 2  (0x2)  (int) 
  oss.card_id = 'USB  AUDIO'  (string) 
  oss.device = 0  (0x0)  (int) 
  oss.device_file = '/dev/dsp2'  (string) 
  oss.device_id = 'USB Audio'  (string) 
  oss.originating_device = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  oss.type = 'pcm'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_alsa_capture_0' 
  alsa.card = 2  (0x2)  (int) 
  alsa.card_id = 'USB  AUDIO'  (string) 
  alsa.device = 0  (0x0)  (int) 
  alsa.device_file = '/dev/snd/pcmC2D0c'  (string) 
  alsa.device_id = 'USB Audio'  (string) 
  alsa.originating_device = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  alsa.pcm_class = 'generic'  (string) 
  alsa.type = 'capture'  (string) 
  info.capabilities = {'alsa'} (string list) 
  info.category = 'alsa'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  info.product = 'USB Audio ALSA Capture Device'  (string) 
  info.subsystem = 'sound'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_alsa_capture_0'  (string) 
  linux.device_file = '/dev/snd/pcmC2D0c'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'sound'  (string) 
  linux.sysfs_path = '/sys/class/sound/pcmC2D0c'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_alsa_playback_0' 
  alsa.card = 2  (0x2)  (int) 
  alsa.card_id = 'USB  AUDIO'  (string) 
  alsa.device = 0  (0x0)  (int) 
  alsa.device_file = '/dev/snd/pcmC2D0p'  (string) 
  alsa.device_id = 'USB Audio'  (string) 
  alsa.originating_device = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  alsa.pcm_class = 'generic'  (string) 
  alsa.type = 'playback'  (string) 
  info.capabilities = {'alsa'} (string list) 
  info.category = 'alsa'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0'  (string) 
  info.product = 'USB Audio ALSA Playback Device'  (string) 
  info.subsystem = 'sound'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if0_alsa_playback_0'  (string) 
  linux.device_file = '/dev/snd/pcmC2D0p'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'sound'  (string) 
  linux.sysfs_path = '/sys/class/sound/pcmC2D0p'  (string)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if2' 
  info.linux.driver = 'snd-usb-audio'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial'  (string) 
  info.product = 'USB Audio Interface'  (string) 
  info.subsystem = 'usb'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if2'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'usb'  (string) 
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.2'  (string) 
  usb.bus_number = 3  (0x3)  (int) 
  usb.can_wake_up = false  (bool) 
  usb.configuration_value = 1  (0x1)  (int) 
  usb.device_class = 0  (0x0)  (int) 
  usb.device_protocol = 0  (0x0)  (int) 
  usb.device_revision_bcd = 267  (0x10b)  (int) 
  usb.device_subclass = 0  (0x0)  (int) 
  usb.interface.class = 1  (0x1)  (int) 
  usb.interface.number = 2  (0x2)  (int) 
  usb.interface.protocol = 0  (0x0)  (int) 
  usb.interface.subclass = 2  (0x2)  (int) 
  usb.is_self_powered = false  (bool) 
  usb.linux.device_number = 4  (0x4)  (int) 
  usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.2'  (string) 
  usb.max_power = 500  (0x1f4)  (int) 
  usb.num_configurations = 1  (0x1)  (int) 
  usb.num_interfaces = 5  (0x5)  (int) 
  usb.num_ports = 0  (0x0)  (int) 
  usb.product = 'USB Audio Interface'  (string) 
  usb.product_id = 61969  (0xf211)  (int) 
  usb.speed = 12.0 (12) (double) 
  usb.vendor = 'Tenx Technology, Inc.'  (string) 
  usb.vendor_id = 4400  (0x1130)  (int) 
  usb.version = 1.1 (1.1) (double)
udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if1' 
  info.linux.driver = 'snd-usb-audio'  (string) 
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial'  (string) 
  info.product = 'USB Audio Interface'  (string) 
  info.subsystem = 'usb'  (string) 
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1130_f211_noserial_if1'  (string) 
  linux.hotplug_type = 2  (0x2)  (int) 
  linux.subsystem = 'usb'  (string) 
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.1'  (string) 
  usb.bus_number = 3  (0x3)  (int) 
  usb.can_wake_up = false  (bool) 
  usb.configuration_value = 1  (0x1)  (int) 
  usb.device_class = 0  (0x0)  (int) 
  usb.device_protocol = 0  (0x0)  (int) 
  usb.device_revision_bcd = 267  (0x10b)  (int) 
  usb.device_subclass = 0  (0x0)  (int) 
  usb.interface.class = 1  (0x1)  (int) 
  usb.interface.number = 1  (0x1)  (int) 
  usb.interface.protocol = 0  (0x0)  (int) 
  usb.interface.subclass = 2  (0x2)  (int) 
  usb.is_self_powered = false  (bool) 
  usb.linux.device_number = 4  (0x4)  (int) 
  usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:01:0e.1/usb3/3-1/3-1:1.1'  (string) 
  usb.max_power = 500  (0x1f4)  (int) 
  usb.num_configurations = 1  (0x1)  (int) 
  usb.num_interfaces = 5  (0x5)  (int) 
  usb.num_ports = 0  (0x0)  (int) 
  usb.product = 'USB Audio Interface'  (string) 
  usb.product_id = 61969  (0xf211)  (int) 
  usb.speed = 12.0 (12) (double) 
  usb.vendor = 'Tenx Technology, Inc.'  (string) 
  usb.vendor_id = 4400  (0x1130)  (int) 
  usb.version = 1.1 (1.1) (double)

/etc/X11/xorg.conf.d/xorg.conf for the IBM ThinkPad A22m

Section "Monitor" 
     Identifier "Monitor0" 
     HorizSync 73-80 
     DisplaySize 305 229 
EndSection
Section "Screen" 
     Identifier "Screen0" 
     Device     "Card0" 
     Monitor    "Monitor0" 
     SubSection "Display" 
          Viewport   0 0 
          Depth     16 
          Modes     "1024x768" 
     EndSubSection 
EndSection
Section "DRI" 
     Mode 0666 
EndSection


Copyright © 2011, Peter Lyall Easthope. All rights reserved.

Valid HTML 4.01!
Best viewed with a Web browser.









HTML.Compile * ~ Desktops.OpenDoc DebianPage.html ~ ET.OpenAscii DebianPage.html FTP.Open peter@carnot.yi.org FTP.PutFiles DebianPage.html => "~/public_html/DebianPage.html" ~ FTP.Close