Wednesday, January 24, 2007

Running Linux on the Lenovo Thinkpad T60

(Link to webpage)
I've recently purchased a Lenovo Thinkpad T60 (reviews: here and here). The machine is powered by an Intel Core Duo processor, with two cores of each 1.83Ghz. More specs:
  • 1GB RAM
  • Intel IPW3945 ABG WiFi chip
  • 14" 1400x1050 TFT display
  • 60GB harddrive
  • CDRW / DVD combo drive
  • Intel Corporation 82573L Gigabit Ethernet Controller
  • ATi x1300 graphics

Kernel and drivers

Not all of the hardware in the T60 is supported out of the box. VGA and WLAN chips are pretty new, so I had to manually install drivers for those. With recent kernels (2.6.17 and higher) CPU hotplugging works - you can switch off one CPU while everything is running and switch it back on. It is even possible to set different cpufreq governors for each core and have the cores running at different speeds, those speeds are 1,0Ghz, 1,33Ghz and 1,83Ghz.

Intel IPW3845 WLAN

Intel has released a driver for the WLAN chip on http://ipw3945.sourceforge.net. In order to use the driver, you first need to compile and install the ieee80211 subsystem. Additionally, you need a binary microcode image for the WiFi chip, and a userspace daemon. The installation of the driver is a little complicated because you need 4 different components, but once done, the driver behaves stable and works very well with the exceptions that power management does not seem to be supported yet. (Note that I'm not refering to suspend and resume hooks in the driver, but to the wireless powermanagement you're setting with iwconfig [iface] power.) WPA supplicant works well with those drivers, using no encryption, WEP and WPA-PSK encryption. I did not yet test others.

I've created a patch containing the ieee80211 subsystem updates and the ipw driver, you can get it in the Files section. This patch can be applied to the kernel source directly, it saves you reinstalling the driver after a kernel rebuild.

ATi X1300 Graphics

Currently, there is no Open Source driver for the ATi x1300 chips other than VESA, which is quite slow.
ATi has recently released a binary driver that also works with the x1300 chips, albeit with minor problems: I'm getting minor corruption of the framebuffer consoles. (The problem is known to the ATi developers and should be fixed in one of the upcoming releases. Update: This problem is fixed in recent versions, the packages in the files section do not have this problem any more.)

I've generated suitable driver packages for Kubuntu Dapper Drake (6.06) and Edgy Eft (6.10). You can download the packages from the Files section.

Suspend2 (suspend-to-disk)

I've added Suspend2 to the kernel. This makes the suspend process quite a lot faster (I measured 40% compared with vanilla's swsusp) and adds possibilities for a nice progress bar, along with some other neat features. If you use the kernel image I've put in the files section, that would save you the hassle of patching and compiling it yourself. I've also put a hibernate.conf example in the Files section. In order to test, change the file so it says

ProcSetting userui_program /usr/local/sbin/suspend2ui_text
#ProcSetting userui_program /usr/local/sbin/suspend2ui_fbsplash
You can add a snazzy framebuffer splash later. How to do so is documented on suspend2.net.

Using ATi's binary driver, it took me some time to figure out that I need to setting

ProcSetting extra_pages_allowance 36000 
in /etc/hibernate/hibernate.conf, otherwise the machine would hang on suspend. With this setting, suspend2 is completely reliable for me.

(disk-backed) suspend-to-RAM

Suspend-to-RAM works reliably on this machine. I'm using a disk-backed implementation provided by suspend2 and the hibernate script (that's also used for suspend-to-disk in fact). The only change I made is setting
PowerdownMethod 3  
in hibernate.conf. 3 stands for S3 (suspend-to-RAM), 4 is S4 (suspend-to-disk). Setting it to 3 will make the notebook write a memory image to disk and then enter suspend-to-RAM. The notebook will actually need a little energy then, but you'll be able to resume much faster than with S4 (about 10 seconds with S3, around 30 seconds with S4, depending on imagesize and other variables). The memory image on disk adds the advantage that in case you run out of battery (or something else goes wrong with suspend-to-RAM), you're still able to resume from disk and continue working. Neat.

Minor suspend-related problems and workarounds

Note that in order to make suspend working with the fglrx binary ATi driver, the fglrx kernel module needs to be loaded. Having it not loaded, it's still possible to use X, albeit with slower rendering and no 3d, but suspend will crash reliably.
After a suspend/resume cycle the scrolling features of the touchpad is lost, switching to another VT and back to VT7 makes it work again. Compiling the evdev driver into the kernel image also solves this problem. (CONFIG_INPUT_EVDEV=y, this is done in the provided kernel image.)

Multimedia

Controlling the volume via the multimedia buttons on the notebook works fine out of the box using kmilo.

I'm using kmplayer to watch movies and xine to watch DVDs. For most DVDs to work, you need to install libdvdcss2. This library is due to it's questionable legal status in some countries (Hello USA!) not in the official Ubuntu archives. I've installed it from debian-multimedia.org, using the following line in my /etc/apt/sources.list:

deb http://www.debian-multimedia.org etch main
. If playing DVDs is terribly slow, check with hdparm if DMA is enables on the drive, and if not, read this.

In order to be able to use the sound device with more than one application at the same time, you can modify your /etc/asound.conf file as follows (or just create the file if it's not there):

pcm.card0 {
type hw
card 0
}

pcm.!default {
type plug
slave.pcm "dmixer"

}

pcm.dmixer {
type dmix
ipc_key 1025
slave {
pcm "hw:0,0"
period_time 0
period_size 2048 #1024
buffer_size 32768 #4096
#periods 128
rate 48000 #44100
}
bindings {
0 0
1 1
}
}
This enables ALSA's DMix plugin and unblocks the sounds device once an application is using it.

Various issues

DMA problems on DVD drive

DMA on the DVD-drive was switched off initially. The reason is that the IDE driver will claim the DVD drive first, it'll then appear as /dev/hdc. In this case, DMA cannot be switched on. Adding

hdc=noprobe libata.atapi_enabled=1
will solve that problem. Since the storage devices can be used with libata and thus do not need CONFIG_IDE, we can also switch it off in the kernel config and thus avoiding this problem. (I did this in my example .config.) I found this workaround on ThinkWiki.

Storage / SATA

At the moment of writing, the kernel's AHCI driver does not play nicely with suspend. In the BIOS, I switched from AHCI to "compatibility" mode, which works around that problem. I the meantime, the driver is being fixed, so I expect this to vanish with one of the next releases of the Linux kernel.

Various hacks

GRUB kernel options

In order to use swsusp, you need to add a kernel parameter, resume=/dev/sda1, where sda1 is your swap partition. (I have a swap partition of 1GB, which should be enough if I'm not "fully loaded".) Here's my grub entry:
title   Ubuntu, kernel 2.6.17.1
root (hd0,1)
kernel /boot/vmlinuz-2.6.17.1 root=/dev/sda2 ro vga=791 \
acpi_sleep=s3_bios,s3_mode quiet splash
savedefault
boot
(note that the kernel line has to be 1 line.)

Files

I've created a T60 kit for those that don't want to go through the hassle of collecting all the stuff in different places. This package should provide you with suitable drivers for the T60 hardware, it also has config files that you can use as a reference point.
The packages contain a kernel image which has ipw3945 support built-in (Note that you still need the microcode image and the ipw3945d daemon). There is also a couple of packages for the ATi driver, basically, you need to install all the packages here to get a kernel which has hardware accelerated graphics, support for the WLAN chip and swsusp support.

You can download the customized packages here.

Install them like this:
sudo dpkg -i xorg-driver-fglrx_8.25.18-1_i386.deb \
fglrx-control_8.25.18-1_i386.deb \
fglrx-sources_8.25.18-1_i386.deb \
xorg-driver-fglrx-dev_8.25.18-1_i386.deb \
kernel-image-2.6.17.1_10.00.Custom_i386.deb \
fglrx-kernel-2.6.17.1_8.25.18-1+10.00.Custom_i386.deb
If you prefer to patch and configure your kernel yourself, you can use the ipw3945 patch and the libata-acpi patch, along with my .config

Resources

17-10-2006, 22:03 h
© Sebastian Kügler

IBM/Lenovo ThinkPad T60 (Model 2007-63g)

(Link to this information)

Installation Guide for Debian GNU/Linux


(c) 2006 by Marco Kraus
http://www.kraus.tk


Comments, suggestions
and improvements very welcome.


If this website helped you, I'd also
love to hear from you.
Just drop me a note.


Mailt to: Marco eMail




Last updated: 06.06.2006
T60



General Data:
CPU: Intel Core Duo 2500 with 2GHz
Graphic Card: ATI X1400
RAM: 1024 MB
Screen: 14" with 1400x1050 (SXGA+)
2nd Level Cache: 2MB
Wireless LAN: Intel IPW3945
LAN: Intel e1000 Gigabit Ethernet
Audio: AC'97 with AD1981HD chipset

With Fingerprint Reader
With IBM Harddisk Protection System

Here is the complete LSHW output with ALL technical details.



What works and what doesn't:

Works with no or less tweaking:

- Multicore support
- Serial ATA
- DVD/Burner

- Fn Keys
- ThinkLight
- NavPad and Trackpoint
- Audio system
- Ethernet adapter
- Graphic Card (3D accelerated)


Works with a bit or more tweaking:

- OSD for Softkeys and volume control
- Wireless LAN


Doesn't Work:

- some IBM ACPI functions like fan control (in development)
- HDAPS chipset not supported (in development)


Not tested:

- Modem
- Fingerprint reader
- Bluetooth
- Suspend



Installation Details:

Kernelconfiguration

Get my kernel configuration here.

It is thought to be used with Kernel version 2.6.16 and the proprietary ATI binary drivers and external Intel IPW3945 drivers (so the kernel uses a normal Kernelstacksize without patches, has no IEEE subsystem and WLan drivers, and only VESA support for the graphiccard). See detailed description in belower sections.

CPU

Install a SMP (multiprocessor) kernel. If you compile your own kernel, add SMP support to it. It's advisable also to add RTC (device drivers->character support). The Yonah core (first generation Cure Duo) doen't have Hyperthreading, so disable SMT.

Harddisk

Switch the S-ATA Disk in your BIOS to "compatibility"-mode when the harddisk is not recognized (problems with the SATA driver in your Installation-Kernel, normally when using a kernel < style="font-style: italic;">Attention: Change devices in grub.conf/menu.lst (or lilo.conf) from /dev/hdaX to /dev/sdaX !

My TP came with no XP CD. There a so called "rescure-and-restore"-partition that includes a backup of WinXP. So if you would like to to a Dual-OS installation, you have to resize the partitions within your finished Windows-Installation. Do this with e.g. Partition Magic and keep the Restore-Partition (the 5 Gig FAT32 that's normally hidden under windows) at the end of your disk. Don't move that Restore-Partition.

ACPI / suspend and resume

Use Suspend2 and add the suspend to the kernel (under powermanagement->acpi). Add the following option to your kernel boot parameters (e.g grub.conf/menu.lst): resume=/dev/sdaX (your swap partition). The swap partition is the best solution. There's also a possibility to use files with a special filewriter. Read the suspend2 manual for more help. I do more tests about this in future.

Booting

You can add framebuffer support to your kernel, and add "vga=834" to the kernel boot options to enable sxga in your console. With the options above, my menu.lst looks like this. Attention: Doesn't seem to work always. Send me your VGA options.

Fan

One of the major problems of the T60 is a thermal issue. The procesor is quit cool (about 50 degree celsius) and also battery (about 50 degree C) and harddisk (about 40 degree C) are absolutely fine. BUT the powerful graphiccard is a problem. In idle-mode it gets quit hot, round about 75 degree C. Playing some minutes doom3 or UT2004 brings it up to 86-87 degree. Thats still no problem for that card, it get trouble when it get hotter than 110 degrees. BUT your fan of the T60 has to cool the card all the time. also in idle mode. So it's always running. It is not too loud, but good hearable. And always running parts of a computer are fragile....

I got some mails from users that with ibm-acpi you can control the fan. That is correct. And with a current version and forcing module-load with experimental=1 you can switch on/off the fan (no more detailed control is possible right now). BUT I do not recommend to switch the fan off, becaus your graphiccard simply needs it, ALL the time ! You risk your hardware when switching it of. Keep that in your mind.


Network

It's a intel e1000 network card. So the e1000 driver should work. It wasn't possible to use the e1000 driver with the normal sarge installation. So I copied a linux-2.6.16 kernel from my usb stick and compiled a new kernel manually. With the 2.6.16 the e1000 drivers work without a problem.

Wireless LAN

It is the new IPW3945 Card from Intel. It's no normal MiniPCI, it's MiniPCI express now,yeah ;-) There are two solutions to get this working right now:

1.) The drivers from Intel: http://ipw3945.sourceforge.net/. Because the drivers are not (and maybe will not, see discussions on the LKML) in the kernel, you need the drivers, the binary, and the ecxternal IEEE package. You get this all on the IPW website mentioned above. Read the INSTALL manual. At a short: copy firmware to the place of your firmwareloader, remove all IEEE stuff (network drivers,etc) and compile/install IEEE and IPWDrivers package. At the moment you can not install the ipw drivers, you have to manually load and unload them via the scripts. This will change when the driver is stable. This worked quite good for me with IPWDrivers version 0.0.74 and ieee80211-1.1.12 (or later).

If it doesn't work for you, you can also try the second solution, read on.

2.) Another solution is the usage of ndiswrapper. But this also need a bit more tweaking.
First of all, we need 16K Stacksize for the kernel, we grab the right kernelpatch for that from: http://www.linuxant.com/driverloader/wlan/downloads-patches.php and patch our kernel with: Thinky:/usr/src# patch -p0 <>
Then change the stacksize to (now available) 16K and recompile (add intermodule support again to you .cofig file if you did this before for your ATI drivers). Download, compile and install ndiswrapper. A more detailed installing instruction can be found in the ndiswrapper wiki at: http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation
Comment: Do a "make dep" instead of just a "make" do build clean debian packages, which you can install with dpkg after. Now get the windows drivers from Intels website (only available in a package with the other cards, so you have to get 80MB:
http://www.intel.com/support/wireless/wlan/sb/cs-010623.htm
Unzip and change to the "Drivers" directory, and run "ndiswrapper -i w39n51.inf" and modprobe ndiswrapper. After this, your device should be appear as wlan0 in your iwconfig list. Good luck. I still had some problems with this, so I used the native IPW drivers from solution 1).

Bluetooth

Fn+F5 switchs Bluetooth on. Install the bluez stack, and (if wanted) kbluetooth, add bluetooth in your kernel (under USB devices). Didn' try more with that, but seems fine. Will report if I find a bluetooth device to test ;-)

Trackpoint/Ultranav

Works as a PS/2 device. Should mostly work out of the box. When not, compile your kernel with ps2 input device support. Also install the synaptics touchpad drivers (should be available with every common distribution).

Sound

This is a Analog Devices AC'97 Audio controller with AD1981HD chipset. Build a kernel with AD HD support. This is NOT the usual AC97 intel chipset (snd-i80x), but the HD driver some lines above the kernel configuration. Run alsaconf and set the volume via your favourite mixer (aumix in console is fine). The Volume control works out of the box via Fn keys (inc. muting).
I recognized some cracking noises with applications using OSS (and so OSS emulation via alsa). I read about a workaround to put position_fix=2 to the module option. But that's not the perfect solution, but works okay...

Graphic Card

This is an ATI x1400 graphic card. ATI released on 12th April new drivers that supports the X1400. That half a year after the X1K was released (Version 8.24.8), but okay...no get them here: https://support.ati.com/ics/support/default.asp?deptID=894

Sadly there are still the Intermodule problems (ATI is using the intermodule API pre 2.6.15). So if you use a kernel > 2.6.15 then you should fix this with that litte workaround from the Rage3D Forum: http://rage3d.com/board/showthread.php?p=1334218607
(in short: add obsolete intermode to the kernel, enable agpart and disable drm)

[OLD: If you are using xorg v7 (X11R7) there is another problem: the ATI installer doesn't support xorg 7.0, only 6.9. But the codebase of yorg 6.9 and xorg 7 are the same, except the modular concept, so force the version to x690 and run the installer like this: X_VERSION=x690 ./ati-driver-installer--.run
Then copy the X11 modules from /usr/X11R6/lib to /usr/lib/xorg (the fglrx driver from drivers and linux subdirectory).]

Update: Driver version 8.25.18 and above support xorg7 correctly now !

Now change the driver in your xorg config to fglrx an restart X.
If you get a black screen, keep in mind that ATi doesn't support 16Bit, and change the default mode to (at least) 24 bit color depth.

That's it...here is my xorg.conf with the ATi driver.

When you don't want to use the proprietary driver, you have to use VESA because there are no free xorg drivers for this card. Use the VESA driver and set the resolution to 1400x1050 (SXGA+) and bet (or better write an email to ATI) that ATI will publish new drivers that also supports newer cards. Cruel Linux politics from ATI, so never buy that stuff when you have the choice. My xorg.conf for VESA is here

Thinklight

The TP keyboard light is controlled via BIOS only and Fn+PgUp works out of the Box on all maschines. No tweaking needed here. Yeah! Brightnesscontroll also works out of the box via Fn keys.

HDASP

Frank Mehnert wrote:

--- cut ---
HDAPS works well (at least hdaps-utils give
valid output) if you use the hdaps driver from the tp_smapi package

http://thinkwiki.org/wiki/tp_smapi

and load it using force=1 module parameters.
--- cut ---

Thanks for that hint.

Keycontrol and OSD

All Fn Keys and Volumecontrol work out of the box. But normally you also want to show the key values on your desktop. This can be done via tpb (edit /etc/tpbrc for your needs) or you use the kmilo plugin in KDE cntrollcenter. In both cases nvram support hast to be enabled in your kernel. If you use udev, etc /etc/udev/020_permissions and add a MODE="0666" to the NVRAM line to set global rights. Or add you to the nvram group. It won't work when you have no access to that virtual device.

KMilo is a tpb clone, but has less features. I found out that kmilo has problems on my T60 with the volume control. I controls the headphones instead of the PCM mixer. So I use tpb. There it's possible to use a mixerr callback function. I made a small workaround:

1) Using tpb for softkey control.
BTW: To start "tpb -d" on KDE startup with putting this in a small shellscript in .kde/env
2) Setting up /etc/tpbrc for your needs
3) Setting a callback in the tpbrc to /path/to/the/script and using amixer for volume control.
The callback script can be found here

Fingerprint reader

I didn't really try it out right now, but it seems to works with a bit of tweaking and some proprietary code. Read the great tutorial at ThinkWiki about that:
http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader

A more complete and detailed installing instruction can be found at:
http://linux.spiney.org/debian_gnu_linux_on_an_ibm_thinkpad_t43p_fingerprint_reader



(c) 2006 by M.Kraus, http://www.kraus.tk

Tuesday, January 23, 2007

Solaris 10 - UNIX for the people?

Here is a good article about Solaris 10
http://www.osnews.com/story.php?news_id=10673

A better option I guess is OpenSolaris
http://www.opensolaris.org/os/

Also Gentoo have announced plans to add OpenSolaris support to portage which is a great combination.
http://www.gentoo.org/news/en/gwn/20050124-newsletter.xml

Portage tree has been ported to other OS like FreeBSD and others
http://en.wikipedia.org/wiki/Gentoo/Alt
http://www.gentoo.org/doc/en/gentoo-freebsd.xml
http://en.wikipedia.org/wiki/Gentoo/FreeBSD

GPT (GUID Partition Table)

Intel EFI/GPT parition tables
http://en.wikipedia.org/wiki/EFI_System_Partition
http://en.wikipedia.org/wiki/GUID_Partition_Table

GNU Parted is the solution
http://www.gnu.org/software/parted/features.shtml
The new version has support for Intel EFI/GPT partition tables.
http://www.gnu.org/software/parted/faq.html

GRML Live CD
http://www.grml.org/
http://grml.org/files/release-0.8/dpkg_list
It works with GNU Parted 1.7.1 which suports Intel EFI/GPT partition tables
http://www.gnu.org/software/parted/features.shtml

GParted Live CD
http://gparted.sourceforge.net

Wednesday, December 27, 2006

ASCII Table (7-bit)

(ASCII = American Standard Code for Information Interchange)
(also see Related Links below)
       Decimal   Octal   Hex    Binary     Value
------- ----- --- ------ -----
000 000 000 00000000 NUL (Null char.)
001 001 001 00000001 SOH (Start of Header)
002 002 002 00000010 STX (Start of Text)
003 003 003 00000011 ETX (End of Text)
004 004 004 00000100 EOT (End of Transmission)
005 005 005 00000101 ENQ (Enquiry)
006 006 006 00000110 ACK (Acknowledgment)
007 007 007 00000111 BEL (Bell)
008 010 008 00001000 BS (Backspace)
009 011 009 00001001 HT (Horizontal Tab)
010 012 00A 00001010 LF (Line Feed)
011 013 00B 00001011 VT (Vertical Tab)
012 014 00C 00001100 FF (Form Feed)
013 015 00D 00001101 CR (Carriage Return)
014 016 00E 00001110 SO (Shift Out)
015 017 00F 00001111 SI (Shift In)
016 020 010 00010000 DLE (Data Link Escape)
017 021 011 00010001 DC1 (XON) (Device Control 1)
018 022 012 00010010 DC2 (Device Control 2)
019 023 013 00010011 DC3 (XOFF)(Device Control 3)
020 024 014 00010100 DC4 (Device Control 4)
021 025 015 00010101 NAK (Negative Acknowledgement)
022 026 016 00010110 SYN (Synchronous Idle)
023 027 017 00010111 ETB (End of Trans. Block)
024 030 018 00011000 CAN (Cancel)
025 031 019 00011001 EM (End of Medium)
026 032 01A 00011010 SUB (Substitute)
027 033 01B 00011011 ESC (Escape)
028 034 01C 00011100 FS (File Separator)
029 035 01D 00011101 GS (Group Separator)
030 036 01E 00011110 RS (Request to Send)(Record Separator)
031 037 01F 00011111 US (Unit Separator)
032 040 020 00100000 SP (Space)
033 041 021 00100001 ! (exclamation mark)
034 042 022 00100010 " (double quote)
035 043 023 00100011 # (number sign)
036 044 024 00100100 $ (dollar sign)
037 045 025 00100101 % (percent)
038 046 026 00100110 & (ampersand)
039 047 027 00100111 ' (single quote)
040 050 028 00101000 ( (left/opening parenthesis)
041 051 029 00101001 ) (right/closing parenthesis)
042 052 02A 00101010 * (asterisk)
043 053 02B 00101011 + (plus)
044 054 02C 00101100 , (comma)
045 055 02D 00101101 - (minus or dash)
046 056 02E 00101110 . (dot)
047 057 02F 00101111 / (forward slash)
048 060 030 00110000 0
049 061 031 00110001 1
050 062 032 00110010 2
051 063 033 00110011 3
052 064 034 00110100 4
053 065 035 00110101 5
054 066 036 00110110 6
055 067 037 00110111 7
056 070 038 00111000 8
057 071 039 00111001 9
058 072 03A 00111010 : (colon)
059 073 03B 00111011 ; (semi-colon)
060 074 03C 00111100 < (less than) 061 075 03D 00111101 = (equal sign) 062 076 03E 00111110 > (greater than)
063 077 03F 00111111 ? (question mark)
064 100 040 01000000 @ (AT symbol)
065 101 041 01000001 A
066 102 042 01000010 B
067 103 043 01000011 C
068 104 044 01000100 D
069 105 045 01000101 E
070 106 046 01000110 F
071 107 047 01000111 G
072 110 048 01001000 H
073 111 049 01001001 I
074 112 04A 01001010 J
075 113 04B 01001011 K
076 114 04C 01001100 L
077 115 04D 01001101 M
078 116 04E 01001110 N
079 117 04F 01001111 O
080 120 050 01010000 P
081 121 051 01010001 Q
082 122 052 01010010 R
083 123 053 01010011 S
084 124 054 01010100 T
085 125 055 01010101 U
086 126 056 01010110 V
087 127 057 01010111 W
088 130 058 01011000 X
089 131 059 01011001 Y
090 132 05A 01011010 Z
091 133 05B 01011011 [ (left/opening bracket)
092 134 05C 01011100 \ (back slash)
093 135 05D 01011101 ] (right/closing bracket)
094 136 05E 01011110 ^ (caret/circumflex)
095 137 05F 01011111 _ (underscore)
096 140 060 01100000 `
097 141 061 01100001 a
098 142 062 01100010 b
099 143 063 01100011 c
100 144 064 01100100 d
101 145 065 01100101 e
102 146 066 01100110 f
103 147 067 01100111 g
104 150 068 01101000 h
105 151 069 01101001 i
106 152 06A 01101010 j
107 153 06B 01101011 k
108 154 06C 01101100 l
109 155 06D 01101101 m
110 156 06E 01101110 n
111 157 06F 01101111 o
112 160 070 01110000 p
113 161 071 01110001 q
114 162 072 01110010 r
115 163 073 01110011 s
116 164 074 01110100 t
117 165 075 01110101 u
118 166 076 01110110 v
119 167 077 01110111 w
120 170 078 01111000 x
121 171 079 01111001 y
122 172 07A 01111010 z
123 173 07B 01111011 { (left/opening brace)
124 174 07C 01111100 | (vertical bar)
125 175 07D 01111101 } (right/closing brace)
126 176 07E 01111110 ~ (tilde)
127 177 07F 01111111 DEL (delete)
(Link to original page)

Back to Top

Related Links

If you have questions or suggestions about this document, please send them by e-mail to kochhar@physiology.wisc.edu

Return to Computing Page
Back to The Basement
This page last modified on : Nov. 21, 2006

ASCII Table (7-bit)

(ASCII = American Standard Code for Information Interchange)
(also see Related Links below)
       Decimal   Octal   Hex    Binary     Value
------- ----- --- ------ -----
000 000 000 00000000 NUL (Null char.)
001 001 001 00000001 SOH (Start of Header)
002 002 002 00000010 STX (Start of Text)
003 003 003 00000011 ETX (End of Text)
004 004 004 00000100 EOT (End of Transmission)
005 005 005 00000101 ENQ (Enquiry)
006 006 006 00000110 ACK (Acknowledgment)
007 007 007 00000111 BEL (Bell)
008 010 008 00001000 BS (Backspace)
009 011 009 00001001 HT (Horizontal Tab)
010 012 00A 00001010 LF (Line Feed)
011 013 00B 00001011 VT (Vertical Tab)
012 014 00C 00001100 FF (Form Feed)
013 015 00D 00001101 CR (Carriage Return)
014 016 00E 00001110 SO (Shift Out)
015 017 00F 00001111 SI (Shift In)
016 020 010 00010000 DLE (Data Link Escape)
017 021 011 00010001 DC1 (XON) (Device Control 1)
018 022 012 00010010 DC2 (Device Control 2)
019 023 013 00010011 DC3 (XOFF)(Device Control 3)
020 024 014 00010100 DC4 (Device Control 4)
021 025 015 00010101 NAK (Negative Acknowledgement)
022 026 016 00010110 SYN (Synchronous Idle)
023 027 017 00010111 ETB (End of Trans. Block)
024 030 018 00011000 CAN (Cancel)
025 031 019 00011001 EM (End of Medium)
026 032 01A 00011010 SUB (Substitute)
027 033 01B 00011011 ESC (Escape)
028 034 01C 00011100 FS (File Separator)
029 035 01D 00011101 GS (Group Separator)
030 036 01E 00011110 RS (Request to Send)(Record Separator)
031 037 01F 00011111 US (Unit Separator)
032 040 020 00100000 SP (Space)
033 041 021 00100001 ! (exclamation mark)
034 042 022 00100010 " (double quote)
035 043 023 00100011 # (number sign)
036 044 024 00100100 $ (dollar sign)
037 045 025 00100101 % (percent)
038 046 026 00100110 & (ampersand)
039 047 027 00100111 ' (single quote)
040 050 028 00101000 ( (left/opening parenthesis)
041 051 029 00101001 ) (right/closing parenthesis)
042 052 02A 00101010 * (asterisk)
043 053 02B 00101011 + (plus)
044 054 02C 00101100 , (comma)
045 055 02D 00101101 - (minus or dash)
046 056 02E 00101110 . (dot)
047 057 02F 00101111 / (forward slash)
048 060 030 00110000 0
049 061 031 00110001 1
050 062 032 00110010 2
051 063 033 00110011 3
052 064 034 00110100 4
053 065 035 00110101 5
054 066 036 00110110 6
055 067 037 00110111 7
056 070 038 00111000 8
057 071 039 00111001 9
058 072 03A 00111010 : (colon)
059 073 03B 00111011 ; (semi-colon)
060 074 03C 00111100 < (less than) 061 075 03D 00111101 = (equal sign) 062 076 03E 00111110 > (greater than)
063 077 03F 00111111 ? (question mark)
064 100 040 01000000 @ (AT symbol)
065 101 041 01000001 A
066 102 042 01000010 B
067 103 043 01000011 C
068 104 044 01000100 D
069 105 045 01000101 E
070 106 046 01000110 F
071 107 047 01000111 G
072 110 048 01001000 H
073 111 049 01001001 I
074 112 04A 01001010 J
075 113 04B 01001011 K
076 114 04C 01001100 L
077 115 04D 01001101 M
078 116 04E 01001110 N
079 117 04F 01001111 O
080 120 050 01010000 P
081 121 051 01010001 Q
082 122 052 01010010 R
083 123 053 01010011 S
084 124 054 01010100 T
085 125 055 01010101 U
086 126 056 01010110 V
087 127 057 01010111 W
088 130 058 01011000 X
089 131 059 01011001 Y
090 132 05A 01011010 Z
091 133 05B 01011011 [ (left/opening bracket)
092 134 05C 01011100 \ (back slash)
093 135 05D 01011101 ] (right/closing bracket)
094 136 05E 01011110 ^ (caret/circumflex)
095 137 05F 01011111 _ (underscore)
096 140 060 01100000 `
097 141 061 01100001 a
098 142 062 01100010 b
099 143 063 01100011 c
100 144 064 01100100 d
101 145 065 01100101 e
102 146 066 01100110 f
103 147 067 01100111 g
104 150 068 01101000 h
105 151 069 01101001 i
106 152 06A 01101010 j
107 153 06B 01101011 k
108 154 06C 01101100 l
109 155 06D 01101101 m
110 156 06E 01101110 n
111 157 06F 01101111 o
112 160 070 01110000 p
113 161 071 01110001 q
114 162 072 01110010 r
115 163 073 01110011 s
116 164 074 01110100 t
117 165 075 01110101 u
118 166 076 01110110 v
119 167 077 01110111 w
120 170 078 01111000 x
121 171 079 01111001 y
122 172 07A 01111010 z
123 173 07B 01111011 { (left/opening brace)
124 174 07C 01111100 | (vertical bar)
125 175 07D 01111101 } (right/closing brace)
126 176 07E 01111110 ~ (tilde)
127 177 07F 01111111 DEL (delete)
(Link to original page)

Back to Top

Related Links

If you have questions or suggestions about this document, please send them by e-mail to kochhar@physiology.wisc.edu

Return to Computing Page
Back to The Basement
This page last modified on : Nov. 21, 2006

ASCII Table (7-bit)

(ASCII = American Standard Code for Information Interchange)
(also see Related Links below)
       Decimal   Octal   Hex    Binary     Value
------- ----- --- ------ -----
000 000 000 00000000 NUL (Null char.)
001 001 001 00000001 SOH (Start of Header)
002 002 002 00000010 STX (Start of Text)
003 003 003 00000011 ETX (End of Text)
004 004 004 00000100 EOT (End of Transmission)
005 005 005 00000101 ENQ (Enquiry)
006 006 006 00000110 ACK (Acknowledgment)
007 007 007 00000111 BEL (Bell)
008 010 008 00001000 BS (Backspace)
009 011 009 00001001 HT (Horizontal Tab)
010 012 00A 00001010 LF (Line Feed)
011 013 00B 00001011 VT (Vertical Tab)
012 014 00C 00001100 FF (Form Feed)
013 015 00D 00001101 CR (Carriage Return)
014 016 00E 00001110 SO (Shift Out)
015 017 00F 00001111 SI (Shift In)
016 020 010 00010000 DLE (Data Link Escape)
017 021 011 00010001 DC1 (XON) (Device Control 1)
018 022 012 00010010 DC2 (Device Control 2)
019 023 013 00010011 DC3 (XOFF)(Device Control 3)
020 024 014 00010100 DC4 (Device Control 4)
021 025 015 00010101 NAK (Negative Acknowledgement)
022 026 016 00010110 SYN (Synchronous Idle)
023 027 017 00010111 ETB (End of Trans. Block)
024 030 018 00011000 CAN (Cancel)
025 031 019 00011001 EM (End of Medium)
026 032 01A 00011010 SUB (Substitute)
027 033 01B 00011011 ESC (Escape)
028 034 01C 00011100 FS (File Separator)
029 035 01D 00011101 GS (Group Separator)
030 036 01E 00011110 RS (Request to Send)(Record Separator)
031 037 01F 00011111 US (Unit Separator)
032 040 020 00100000 SP (Space)
033 041 021 00100001 ! (exclamation mark)
034 042 022 00100010 " (double quote)
035 043 023 00100011 # (number sign)
036 044 024 00100100 $ (dollar sign)
037 045 025 00100101 % (percent)
038 046 026 00100110 & (ampersand)
039 047 027 00100111 ' (single quote)
040 050 028 00101000 ( (left/opening parenthesis)
041 051 029 00101001 ) (right/closing parenthesis)
042 052 02A 00101010 * (asterisk)
043 053 02B 00101011 + (plus)
044 054 02C 00101100 , (comma)
045 055 02D 00101101 - (minus or dash)
046 056 02E 00101110 . (dot)
047 057 02F 00101111 / (forward slash)
048 060 030 00110000 0
049 061 031 00110001 1
050 062 032 00110010 2
051 063 033 00110011 3
052 064 034 00110100 4
053 065 035 00110101 5
054 066 036 00110110 6
055 067 037 00110111 7
056 070 038 00111000 8
057 071 039 00111001 9
058 072 03A 00111010 : (colon)
059 073 03B 00111011 ; (semi-colon)
060 074 03C 00111100 < (less than) 061 075 03D 00111101 = (equal sign) 062 076 03E 00111110 > (greater than)
063 077 03F 00111111 ? (question mark)
064 100 040 01000000 @ (AT symbol)
065 101 041 01000001 A
066 102 042 01000010 B
067 103 043 01000011 C
068 104 044 01000100 D
069 105 045 01000101 E
070 106 046 01000110 F
071 107 047 01000111 G
072 110 048 01001000 H
073 111 049 01001001 I
074 112 04A 01001010 J
075 113 04B 01001011 K
076 114 04C 01001100 L
077 115 04D 01001101 M
078 116 04E 01001110 N
079 117 04F 01001111 O
080 120 050 01010000 P
081 121 051 01010001 Q
082 122 052 01010010 R
083 123 053 01010011 S
084 124 054 01010100 T
085 125 055 01010101 U
086 126 056 01010110 V
087 127 057 01010111 W
088 130 058 01011000 X
089 131 059 01011001 Y
090 132 05A 01011010 Z
091 133 05B 01011011 [ (left/opening bracket)
092 134 05C 01011100 \ (back slash)
093 135 05D 01011101 ] (right/closing bracket)
094 136 05E 01011110 ^ (caret/circumflex)
095 137 05F 01011111 _ (underscore)
096 140 060 01100000 `
097 141 061 01100001 a
098 142 062 01100010 b
099 143 063 01100011 c
100 144 064 01100100 d
101 145 065 01100101 e
102 146 066 01100110 f
103 147 067 01100111 g
104 150 068 01101000 h
105 151 069 01101001 i
106 152 06A 01101010 j
107 153 06B 01101011 k
108 154 06C 01101100 l
109 155 06D 01101101 m
110 156 06E 01101110 n
111 157 06F 01101111 o
112 160 070 01110000 p
113 161 071 01110001 q
114 162 072 01110010 r
115 163 073 01110011 s
116 164 074 01110100 t
117 165 075 01110101 u
118 166 076 01110110 v
119 167 077 01110111 w
120 170 078 01111000 x
121 171 079 01111001 y
122 172 07A 01111010 z
123 173 07B 01111011 { (left/opening brace)
124 174 07C 01111100 | (vertical bar)
125 175 07D 01111101 } (right/closing brace)
126 176 07E 01111110 ~ (tilde)
127 177 07F 01111111 DEL (delete)
(Link to original page)

Back to Top

Related Links

If you have questions or suggestions about this document, please send them by e-mail to kochhar@physiology.wisc.edu

Return to Computing Page
Back to The Basement
This page last modified on : Nov. 21, 2006

ASCII Table (7-bit)

(ASCII = American Standard Code for Information Interchange)
(also see Related Links below)
       Decimal   Octal   Hex    Binary     Value
------- ----- --- ------ -----
000 000 000 00000000 NUL (Null char.)
001 001 001 00000001 SOH (Start of Header)
002 002 002 00000010 STX (Start of Text)
003 003 003 00000011 ETX (End of Text)
004 004 004 00000100 EOT (End of Transmission)
005 005 005 00000101 ENQ (Enquiry)
006 006 006 00000110 ACK (Acknowledgment)
007 007 007 00000111 BEL (Bell)
008 010 008 00001000 BS (Backspace)
009 011 009 00001001 HT (Horizontal Tab)
010 012 00A 00001010 LF (Line Feed)
011 013 00B 00001011 VT (Vertical Tab)
012 014 00C 00001100 FF (Form Feed)
013 015 00D 00001101 CR (Carriage Return)
014 016 00E 00001110 SO (Shift Out)
015 017 00F 00001111 SI (Shift In)
016 020 010 00010000 DLE (Data Link Escape)
017 021 011 00010001 DC1 (XON) (Device Control 1)
018 022 012 00010010 DC2 (Device Control 2)
019 023 013 00010011 DC3 (XOFF)(Device Control 3)
020 024 014 00010100 DC4 (Device Control 4)
021 025 015 00010101 NAK (Negative Acknowledgement)
022 026 016 00010110 SYN (Synchronous Idle)
023 027 017 00010111 ETB (End of Trans. Block)
024 030 018 00011000 CAN (Cancel)
025 031 019 00011001 EM (End of Medium)
026 032 01A 00011010 SUB (Substitute)
027 033 01B 00011011 ESC (Escape)
028 034 01C 00011100 FS (File Separator)
029 035 01D 00011101 GS (Group Separator)
030 036 01E 00011110 RS (Request to Send)(Record Separator)
031 037 01F 00011111 US (Unit Separator)
032 040 020 00100000 SP (Space)
033 041 021 00100001 ! (exclamation mark)
034 042 022 00100010 " (double quote)
035 043 023 00100011 # (number sign)
036 044 024 00100100 $ (dollar sign)
037 045 025 00100101 % (percent)
038 046 026 00100110 & (ampersand)
039 047 027 00100111 ' (single quote)
040 050 028 00101000 ( (left/opening parenthesis)
041 051 029 00101001 ) (right/closing parenthesis)
042 052 02A 00101010 * (asterisk)
043 053 02B 00101011 + (plus)
044 054 02C 00101100 , (comma)
045 055 02D 00101101 - (minus or dash)
046 056 02E 00101110 . (dot)
047 057 02F 00101111 / (forward slash)
048 060 030 00110000 0
049 061 031 00110001 1
050 062 032 00110010 2
051 063 033 00110011 3
052 064 034 00110100 4
053 065 035 00110101 5
054 066 036 00110110 6
055 067 037 00110111 7
056 070 038 00111000 8
057 071 039 00111001 9
058 072 03A 00111010 : (colon)
059 073 03B 00111011 ; (semi-colon)
060 074 03C 00111100 < (less than) 061 075 03D 00111101 = (equal sign) 062 076 03E 00111110 > (greater than)
063 077 03F 00111111 ? (question mark)
064 100 040 01000000 @ (AT symbol)
065 101 041 01000001 A
066 102 042 01000010 B
067 103 043 01000011 C
068 104 044 01000100 D
069 105 045 01000101 E
070 106 046 01000110 F
071 107 047 01000111 G
072 110 048 01001000 H
073 111 049 01001001 I
074 112 04A 01001010 J
075 113 04B 01001011 K
076 114 04C 01001100 L
077 115 04D 01001101 M
078 116 04E 01001110 N
079 117 04F 01001111 O
080 120 050 01010000 P
081 121 051 01010001 Q
082 122 052 01010010 R
083 123 053 01010011 S
084 124 054 01010100 T
085 125 055 01010101 U
086 126 056 01010110 V
087 127 057 01010111 W
088 130 058 01011000 X
089 131 059 01011001 Y
090 132 05A 01011010 Z
091 133 05B 01011011 [ (left/opening bracket)
092 134 05C 01011100 \ (back slash)
093 135 05D 01011101 ] (right/closing bracket)
094 136 05E 01011110 ^ (caret/circumflex)
095 137 05F 01011111 _ (underscore)
096 140 060 01100000 `
097 141 061 01100001 a
098 142 062 01100010 b
099 143 063 01100011 c
100 144 064 01100100 d
101 145 065 01100101 e
102 146 066 01100110 f
103 147 067 01100111 g
104 150 068 01101000 h
105 151 069 01101001 i
106 152 06A 01101010 j
107 153 06B 01101011 k
108 154 06C 01101100 l
109 155 06D 01101101 m
110 156 06E 01101110 n
111 157 06F 01101111 o
112 160 070 01110000 p
113 161 071 01110001 q
114 162 072 01110010 r
115 163 073 01110011 s
116 164 074 01110100 t
117 165 075 01110101 u
118 166 076 01110110 v
119 167 077 01110111 w
120 170 078 01111000 x
121 171 079 01111001 y
122 172 07A 01111010 z
123 173 07B 01111011 { (left/opening brace)
124 174 07C 01111100 | (vertical bar)
125 175 07D 01111101 } (right/closing brace)
126 176 07E 01111110 ~ (tilde)
127 177 07F 01111111 DEL (delete)
(Link to original page)

Back to Top

Related Links

If you have questions or suggestions about this document, please send them by e-mail to kochhar@physiology.wisc.edu

Return to Computing Page
Back to The Basement
This page last modified on : Nov. 21, 2006

Friday, December 15, 2006

Convert Google Video FLV’s into AVI, MPG, etc…in LINUX

So, I found a digg on converting flv (Google Video) files to other formats like AVI today...Alas...it was geared for Windows users :P . So, of course, I figured out how to do it painlessly in linux....actually more painless than in Windows.

First, get the ffmpeg CVS source:

cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg


Then, compile it:

./configure; make; sudo make install


Then, run it like this:

ffmpeg -i video.flv -ab 56 -ar 22050 -b 500 -s 320x240 test.mpg


Where all that crap is:
-b bitrate: set the video bitrate in kbit/s (default = 200 kb/s)
-ab bitrate: set the audio bitrate in kbit/s (default = 64)
-ar sample rate: set the audio samplerate in Hz (default = 44100 Hz)
-s size: set frame size. The format is WxH (default 160x128)

This will convert your video.flv into a test.mpg!

If you need help, there's a great resource RIGHT ON YOUR COMPUTER!
Type man ffmpeg.

(link to note)