gsynaptics gives you a nice little GUI in gnome to control the options on your synaptics touchpad, like the one my T61p came with. It’s easy to set up on a default debian install, you just need to add a few stanazas to your xorg.conf

Here’s the edits I needed from a default install xorg.conf:

  1. Make a backup of your current xorg.conf
  2. Remove the “Generic Mouse” section. You don’t need it anymore.
  3. Add a section for your touchpad like so:
    Section "InputDevice"
      Identifier  "Synaptics Touchpad"
      Driver      "synaptics"
      Option      "SendCoreEvents"  "true"
      Option      "Protocol"        "auto-dev"
      Option      "Device"          "/dev/psaux"
      Option      "SHMConfig"       "true"
    EndSection
    
  4. And add a line in your “ServerLayout” section referencing your new synaptics section. I didn’t have a ServerLayout section so I had to add one, mine looks like this:
    Section "ServerLayout"
      Identifier  "Default Layout"
      Screen      "Default Screen"
      InputDevice "Generic Keyboard"
      InputDevice "Synaptics Touchpad"
    EndSection
    

Now save everything you’re doing and then restart X11 by hitting cntrl-alt-backspace. If X won’t start back up, you can hit cntrl-alt-f1 and log in at a command prompt, restore your xorg.conf from the backup you made earlier, then run /etc/init.d/gdm restart.

In the event that things just aren’t working, your friend is /var/log/Xorg.0.log. That log file contains the results of your x-server’s parsing of your xorg.conf.

Splashy is a linux-boot graphical boot screen thinger. It aims to make your booting process into x11 more full of rounded corners and less of 1970’s terminal text streaking by.

Want to get rid of it? Well, make sure to purge it when you remove it, or your system will fail partway through the init scripts on the next boot. You won’t have x11 or networking or dbus. You will have a screen full of errors and a login prompt. So make sure you do:

sudo apt-get --purge remove splashy

However, if you already did just a apt-get remove splashy just like you’d do for any other package, and now your system suddenly won’t boot past 1980, what should you do? Kill the offending file.

sudo rm -ffffffffffffffff /etc/lsb-base-logging.sh

And reboot. Your system should come back up with networking and all. At this point you probably want to re-install splashy then re-remove it using the –purge option to get rid of all its last traces.

Here are the steps I took to get Eclipse working with Java on my Debian Lenny more-or-less default install laptop.  I know zero (soon to be non-zero) Java, and I’ve never used Eclipse before.

sudo apt-get install eclipse
sudo apt-get install sun-java6-doc

You will then need to download a zipped file from sun’s servers to your /tmp dir, and then re-run the configuration scripts for that package.  AFAIK, that package just installs the help files in the appropriate places.  It doesn’t do the download for you because Sun makes you check a bunch of boxes off about licenses etc. before letting you download.

Increase your productivity about a billion percent for 15 Euro: viPlugin. It works as expected, so far recommended.  The only thing is I didn’t receive my license via email till about 4 hours after I bought it.  So get it set up now.  I, for one, do appreciate the reasonable pricing for viPlugin as apposed to some other vi IDE plugins.  Reasonable pricing makes the difference between me searching for a crack or just paying for the license… but that’s worthy of a whole rant (er, post) of it’s own.

And I think that’s it.  I’m now on my way to becoming yet another Java monk- er, programmer.

Update:

Hum, why is it never that easy?  So the GNU version of the Java complier doesn’t like you using the Scanner class. I have no idea why and right now, with this project 22 hours overdue, I don’t really care (so why am I writing this up now?).  Anyway:

sudo apt-get install sun-java6-jdk
sudo update-java-alternatives -s java-6-sun
sudo update-alternatives --config java

And you want to select /usr/lib/jvm/java-6-sun/jre/bin/java

sudo update-alternatives --config javac

And you want to select /usr/lib/jvm/java-6-sun/bin/javac

In Eclipse, “Windows” > “Preferences” > “Java” > “Installed JREs”.  You want to ‘Add’ the JRE /usr/lib/jvm/java-6-sun-1.6.0.07  Then you want to make that the default by checking the box and clicking OK.

And now, Eclipse will find that Scanner class for you.

Update #2:

You probably want to use Sun’s javadoc:

sudo update-alternatives --config javadoc

and select /usr/lib/jvm/java-6-sun/bin/javadoc

Update #3:

If you want to use the JUnit4 package, you need to add it to the build path of your project.

sudo apt-get install junit4

In Eclipse, “Windows” > “Preferences” > “Java” > “Installed JREs”.  Select “Edit” on the JRE you’re using – for me, this is java-6-sun-1.6.0.07.  Then “Add External JARs…” and add /usr/lib/eclipse/plugins/org.junit4_4.1.0.1/junit-4.1.jar.  I don’t know why this doesn’t all just happen automagically… I see some hints around that there’s a licensing issue.

My new T61p has the standard built-in Intel 4965AGN wireless card for 802.11b/g/n goodness. The kernel has had driver support for this hardware since 2.6.24. But, after doing a default Debian Lenny install, the wireless just ain’t working… what gives?

Well, this comes up in /var/log/syslog and others:

iwl4965: iwlwifi-4965-1.ucode firmware file req failed: Reason -2
iwl4965: Could not read microcode: -2

As is explained here, the iwlwifi drivers require a binary firmware (aka microcode) image to function. The drivers themselves are free, both as in beer and as in freedom. However, the microcode images, in order to enforce end-user FCC compliance, are free as in beer but not freedom. Thus a default Debian install, which bends over backwards to be free as in beer and free as in freedom, does not include the microcode images.

Two options:

  1. Install the firmware image yourself. Find the image you need here (as of August 2008 the version you want was 1.21), download it, extract it, and copy it to /lib/firmware/iwlwifi-4965-1.ucode.
  2. Or, add the non-free repositories to your /etc/apt/sources.list, and do an
    apt-get install firmware-iwlwifi

Or, pretend you didn’t really want wireless if you can’t have it free as in freedom… and put it on your to-do list to reverse-engineer that binary firmware image. Buena suerte! ;p

I can’t remember if a reboot was necessary after installing the microcode image. But that should be it in terms of edits and installs… everything wifi, all the way out to the gnome GUI, should now just automagically work.

This is the first in what will be a short series of posts of what I’ve had to do to get Debian (Lenny – currently the ‘testing’ distro) working fully and smoothly on my new T61p.

The key options in my T61p package:

39T4822 	VBB WWAN
42V9332 	SBB WAN:VERIZONSIERRACDMA2000
42V8603 	SBB INT.WWAN ANTENNA 15.4"
42V8659 	SBB CL.PLATE T61P WL WWAN
42W7002 	SBB FCC-ID/LABEL FOR WWAN
42V8675 	SBB VERIZON OPTION

That all translates to a slickly built-in Verizon card and antenna:

$ sudo lsusb -v | grep Sierra
Bus 006 Device 002: ID 1199:0220 Sierra Wireless, Inc.
  idVendor           0x1199 Sierra Wireless, Inc.
  iManufacturer           1 Sierra Wireless, Incorporated
  iProduct                2 Sierra Wireless MC5725 Modem

Here is the only officially unofficial official public documentation I could find for that card on Linux.

Before setting this up with Debian, I’d recommend getting it working with Windows if you haven’t reformatted over it yet. The card and connection pretty much ‘just works’ on Lenovo’s preinstalled Windows. This will mostly eliminate Verizon as the source of the problem if things don’t go right with Debian.

A default Debian install provides a number of tools you can use to configure and automate your connection. I like gnome-ppp (essentially a GUI frontend on wvdial) best. I’ve also set it up with gnome’s network-admin applet (System->Administration->Network), but it doesn’t provide good user feedback on the connection process or status. And by ‘good’, I mean ‘any’. Perhaps future versions will have better integration of dial-out connections, now that they’re coming back into style with EVDO and 3G networks. In any case, I will provide instructions for both these two tools here. (Note this is an either/or. There is no reason to bother setting this up with both tools, other than to test out the GUI’s.)

First, GUI configuration. Here’s your key points:

  • Username: YOURPHONENUMBER@vzw3g.com
  • Password: vzw
  • Phone number to dial: #777

For gnome-ppp, you want to:

  • Use the ‘Detect’ mechanism. It worked perfect for me. Try it.
  • Under Options, enable ’stupid mode’ to speed up the connection process substantially. You’re also calling Verizon stupid, in a extremely passive aggressive manner… ummm, feels so good…. stupid stupid stupid.

For network-admin:

  • Set the Modem port to /dev/ttyUSB0.
  • Check the ‘Set modem as default route to Internet’ option or your machine will just drop your outbound packets on the floor.
  • No remote authentication. In the file /etc/ppp/peers/ppp0, add a line ‘noauth’ to disable your authentication of the verizon servers. This means that if someone successfully hijacks Verizon’s ‘#777′ number, you will have no way of knowing, and they will have complete control over your traffic. (gnome-ppp does this ‘noauth’ for you automatically, for better or for worse.)
  • Do not set the modem volume. In the file /etc/chatscripts/ppp0, comment out the line that has a command like ‘AT&FH0XX’ where XX are wildcards depending on your GUI settings. Issuing this command causes the modem error out, reporting ‘NO CARRIER’ on the ensuing ATDT (dial) command.

And that’s it! For debugging, your friends are tail, /var/log/syslog, /var/log/messages, gnome-ppp’s GUI log display, cat, echo, /dev/ttyUSB0, minicom and or course, good old google.

Just plug it in. It just works. I can’t believe it. Somebody wake me up… or wait, don’t. My debian box is ‘just working’!

Still, I’m watching songbird’s development closely and eagerly….

Pintos is a minimal operating system for x86 hardware used primarily for instructional purposes (eg.). QEMU is an open-source hardware emulator typically used for operating system development. Debian is a linux operating system, regular style.

Step #1 – Debian: Drop windows and install debian (or go dual-boot).

Step #2 – QEMU:

sudo apt-get install qemu

To test everything is working as it should at this point, you can download a small linux kernel image here (Sec: disk images). Then:

bzip2 -d linux-0.2.img.bz2
qemu linux-0.2.img

You are now running a minimal linux system on emulated x86 hardware, which is in turn running on a full-featured linux system (debian) on real (probably also x86) hardware. Press ctrl-alt to get out of the minimal linux system if you get stuck with it stealing all your keystrokes.

Step #3 – Pintos:

  • 3.A – Download pintos.
  • 3.B – Fix pintos to default to QEMU (rather than bochs) by applying the following diff:
    Index: threads/Make.vars
    =======================================
    @@ -4,4 +4,5 @@
    -SIMULATOR = --bochs
    +#SIMULATOR = --bochs
    +SIMULATOR = --qemu
    
    Index: utils/pintos
    =======================================
    @@ -85,7 +85,7 @@
    -    $sim = "bochs" if !defined $sim;
    +    $sim = "qemu" if !defined $sim;
    @@ -107,8 +107,8 @@
    -  --bochs                  (default) Use Bochs as simulator
    -  --qemu                   Use QEMU as simulator
    +  --qemu                   (default) Use QEMU as simulator
    +  --bochs                  Use Bochs as simulator
    
  • 3.C – Compile pintos:
    cd threads/
    make
    
  • 3.D – Run a test app with pintos:
    cd threads/build/
    ../../utils/pintos run alarm-multiple
    
  • 3.E – You may wish to throw pintos in your default path (some of the scripts provided require it’s there). There are many ways to do this, this is my favorite:
    sudo ln -s `pwd`/utils/pintos /usr/local/bin/

And that’s it! In step 3.D you finished up by running a little test app that created 5 threads that slept for varying predefined periods of time with some messaging to the console, thus testing pintos’ scheduling/threading abilities. You’re now ready to augment and enhance pintos… coffee anyone?

Fun times figuring this out…. AFAIK, this will work for the whole HP Photosmart 2570 series. I’ve got a Photosmart 2575.

First, set up your Photosmart 2575 to print over the network. This is (relatively) simple… install the debian package hplip, then use the gnome Applications->System Tools->Printers GUI to go from there. Or… use the cmd line to get there.

A default debian lenny installation with the joy that is OpenOffice will come with xsane installed. Applications->Graphics->Xsane. Try it… it will fail to find your HP Photosmart.

You have issue #2. To fix this, you need your printer’s IP address, which there are several ways to get. One way: navigate your favorite browser to http://localhost:631 to access your CUPS admin page (creepy, huh? your laptop is running a http server? surprise!). Find your Photosmart 2570 series printer under ‘Manage Printers’, its IP address will be listed there.

Now, using a terminal, run xsane with the following argument:

xsane hpaio:/net/Photosmart_2570_series?ip=xxx.xxx.xxx.xxx

Where xxx.xxx.xxx.xxx is the IP address of your Photosmart 2570 series printer on your local network. Xsane should be able to find your HP Photosmart now. Enjoy….!