EDID for ViewSonic Vx2025wm

I recently reinstalled Fedora on my desktop machine, which has (amongst others) a ViewSonic Vx2025wm screen connected to it. It’s an oldie, but still works (quite well).
Unfortunately, Linux just complained that it didn’t get a proper EDID out of it, and refused to activate it – might also explain why Windows doesn’t recognise it as a PnP monitor – I guess the chip fried somewhere along the way.

This was found in the /var/log/messages:

May 16 19:57:29 odin kernel: nouveau 0000:01:00.0: DVI-I-1: EDID is invalid:
May 16 19:57:29 odin kernel: #011[00] BAD 00 ff ff ff ff ff ff 00 5a 63 1d e5 01 01 01 01
May 16 19:57:29 odin kernel: #011[00] BAD 08 10 01 03 80 2b 1b 78 2e cf e5 a3 5a 49 a0 24
May 16 19:57:29 odin kernel: #011[00] BAD 00 50 54 bf ef 80 b3 0f 81 80 81 40 71 4f 31 0a
May 16 19:57:29 odin kernel: #011[00] BAD 01 01 01 01 01 01 21 39 90 30 62 1a 27 40 68 b0
May 16 19:57:29 odin kernel: #011[00] BAD 36 00 b1 0f 11 00 00 1c 00 00 00 ff 00 51 36 59
May 16 19:57:29 odin kernel: #011[00] BAD 30 36 30 38 30 36 38 33 39 0a 00 00 00 fd 00 32
May 16 19:57:29 odin kernel: #011[00] BAD 4b 1e 52 11 00 0a 20 20 20 20 20 20 00 00 00 fc
May 16 19:57:29 odin kernel: #011[00] BAD 00 56 58 32 30 32 35 77 6d 0a 20 20 20 20 00 f4
May 16 19:57:29 odin kernel: nouveau 0000:01:00.0: DRM: DDC responded, but no EDID for DVI-I-1

As you can see, the screen connected on connector DVI-I-1 (remember this!) isn’t returning a valid EDID.

Luckely, it’s rather easy to override your screen’s EDID in Linux, allowing you to serve one from a file ;) as long as you have a copy of said EDID. I didn’t have one, but was able to get my hands on one online. You can download it here:  viewsonic_vx2025wm_edid.bin_.gz (25 downloads)

To activate this (these instructions are for Fedora, but they’ll probably apply to any distro):

  1. Copy it to /usr/lib/firmware/edid (make this directory if needed) – and unpack it
  2. Modify your initramfs to include this firmware, since we’re going to need it early on in the boot.
    Fedora uses dracut – so put this in eg. /etc/dracut.conf.d/viewsonic_edid.conf:
    install_items+=" /usr/lib/firmware/edid/viewsonic_vx2025wm_edid.bin"
  3. Rebuild your initramfs: dracut -f
  4. Assuming you’re using grub, modify your default kernel boot line in /etc/default/grub and append drm.edid_firmware=DVI-I-1:edid/viewsonic_vx2025wm_edid.bin on the line that starts with GRUB_CMDLINE_LINUX. You can find the connector the display is on in the messages output above.
    In the end, mine reads: GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora_odin/root rd.lvm.lv=fedora_odin/swap rhgb quiet drm.edid_firmware=DVI-I-1:edid/viewsonic_vx2025wm_edid.bin"
  5. Regenerate your grub config. For UEFI booting systems, use grub2-mkconfig > /boot/efi/EFI/fedora/grub.cfg, otherwise use grub2-mkconfig > /boot/grub2/grub.cfg.
  6. Reboot

And that should be it – the screen should activate now.

(for Windows, you can take a look here)

Hibernate after suspend (on Fedora)

I recently found out that Windows has this nice feature where, after suspending your laptop, it’ll go to hibernate after a while to preserve battery. Seems like a really cool feature, saves your battery too, so I wanted it on my linux installation. I’m using Fedora 27 right now.

To get it working, you’ll first need to verify that your suspend to ram and suspend to disk actually work. There are plenty of articles on the web that can guide you through it.

The solution is relatively easy, thanks to the internet ;) I got most of the info here, on the ArchLinux forums / wiki. create the following systemd unit file (in /etc/systemd/system), called suspend-to-hibernate.service. After some testing I ended up with this file:

[Unit]
Description=Delayed hibernation trigger
Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279
Documentation=https://wiki.archlinux.org/index.php/Power_management
Conflicts=hibernate.target hybrid-sleep.target
Before=sleep.target
StopWhenUnneeded=true

[Service]
Type=oneshot
RemainAfterExit=yes
Environment="WAKEALARM=/sys/class/rtc/rtc0/wakealarm"
Environment="SLEEPLENGTH=+30min"
ExecStart=-/usr/bin/sh -c 'echo -n "alarm set for "; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM'
ExecStop=-/usr/bin/sh -c '\
 alarm=$(cat $WAKEALARM); \
 now=$(date +%%s); \
 if [ -z "$alarm" ] || [ "$now" -ge "$alarm" ]; then \
 echo "hibernate triggered"; \
 systemctl hibernate; \
 else \
 echo "normal wakeup"; \
 fi; \
 echo 0 > $WAKEALARM; \
'

[Install]
WantedBy=sleep.target

Afterwards, enable it through systemctl enable suspend-to-hibernate.service; start it through systemctl start suspend-to-hibernate.service and you should be good to go.

ASUS UX305UA and Linux

The ASUS UX305UA is an ultrabook with the Skylake microarchitecture – the (as of writing) latest iteration in Intel processors. Unfortunately, Skylake support on Linux wasn’t really a granted thing the time the device got released. Fortunately it’s gotten a lot better of late.

After searching and reporting some bugs to the Debian Bugtracker, nearly everything works out of the box on Debian Sid (unstable), and probably soon on Stretch (current testing). So if you’re installing a new one now, I’d really suggest you go for Sid instead.

After installing the base system via a netinstall image, you’ll probably end up with a Stretch (testing) installation with a 4.3 kernel. This will not really work when rebooting, giving you a black screen. To solve that, boot with

i915.preliminary_hw_support=1 i915.modeset=0

on the kernel command line.

After this, I’d recommend adding a line for unstable and experimental to your apt sources:

# echo "deb http://httpredir.debian.org/debian/ unstable main contrib non-free" > /etc/apt/sources.list.d/unstable.list
# echo "deb http://httpredir.debian.org/debian/ experimental main contrib non-free" > /etc/apt/sources.list.d/experimental.list

and then upgrading your system to the latest unstable:
# apt-get update && apt-get dist-upgrade
This will result in you getting a linux-4.5 kernel and a boatload of updated drivers (eg. Xorg)

Next, upgrade even further: scary experimental mode on! This you’ll need to do manually (experimental never auto-upgrades, because of the possible breakage that might be caused):

First, find out the latest kernel

# apt-cache search linux-image-4 | grep amd64
linux-headers-4.5.0-1-amd64 - Header files for Linux 4.5.0-1-amd64
linux-image-4.5.0-1-amd64 - Linux 4.5 for 64-bit PCs
linux-image-4.5.0-1-amd64-dbg - Debugging symbols for Linux 4.5.0-1-amd64
linux-headers-4.6.0-rc3-amd64 - Header files for Linux 4.6.0-rc3-amd64
linux-image-4.6.0-rc3-amd64 - Linux 4.6-rc3 for 64-bit PCs
linux-image-4.6.0-rc3-amd64-dbg - Debugging symbols for Linux 4.6.0-rc3-amd64
linux-image-4.5.0-1-amd64-signed - Signatures for Linux 4.5.0-1-amd64 kernel and modules
linux-headers-4.4.0-1-grsec-amd64 - Header files for Linux 4.4.0-1-grsec-amd64
linux-image-4.4.0-1-grsec-amd64 - Linux 4.4 for 64-bit PCs, Grsecurity protection

As you can see above, 4.6.0-rc3 is available, but since it’s a prerelease kernel it’s not automatically installed. We want it, and with it, a bunch of firmware packages (to make sure we have the latest)
# apt-get install -t experimental linux-image-4.6.0-rc3-amd64 firmware-linux firmware-iwlwifi firmware-misc-nonfree intel-microcode
For good measure, you can even throw the latest iwlwifi firmware (not packaged yet in Debian) in the mix (found on GitHub):
# wget https://github.com/OpenELEC/iwlwifi-firmware/raw/master/firmware/iwlwifi-7265D-21.ucode -O /lib/firmware/iwlwifi-7265D-21.ucode
Next, reboot, and things should look a lot better already. Right now everything will work, except..

  • screen brightness buttons (Fn-F5 Fn-F6 Fn-F7). This requires (for now) this patch from kernel bugreport 98931. (Debian bugreport: 818494)
  • Screen auto brightness/ambient light (Fn-A): you can use the driver from GitHub
  • Disable-touchpad button (Fn-F7): you can use any old script, really. Just call synclient TouchpadOff=1 and it’s off. And =0 for on)

Using adb with a OnePlus X on Linux…

… is not really that hard. Just annoying. Since OnePlus’ USB ID is not in the default adb list, you need to add it yourself:
echo "0x2a70" >> ~/.android/adb_usb.ini
where 0x2a70 is the identifier for OnePlus. (you can find this with lsusb)

To add automatic permissions to the device node when it’s created, add this udev rule to /etc/udev/rules.d/51-android.rules (all on one line):

SUBSYSTEM=="usb", ATTR{idVendor}=="2a70", MODE="0666", GROUP="plugdev" ATTR{idVendor}=="2a70", ATTR{idProduct}=="9011|f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"

Managing TP-Link easy smart switches from Linux

I’ve recently acquired some TP-Link ‘Easy Smart’ managed switches – cheap, decently built (metal casing), and a lot of features above the usual unmanaged stuff:

  • Effective network monitoring via Port Mirroring, Loop Prevention and Cable Diagnostics
  • Port and tag-based QoS enable smooth latency-sensitive traffic
  • Abundant VLAN features improve network security via traffic segmentation
  • IGMP Snooping optimizes multicast applications

Unfortunately, it uses a windows application to manage the switches – the 5 and 8 port varieties don’t have a usable built-in web server to manage them. Luckely, there’s a way to make that still work on Linux ;) as it seems that it’s just a JavaFX application. The only thing you’ll ever need a windows installation for (or use Wine) is to install the actual application.

After installation, You’ll find a file called “Easy Smart Configuration Utility.exe” in the installation path. Copy that to your Linux installation, rename to .jar, and you’re good to go.

To run it, you’ll also need the Oracle Java distribution, as JavaFX is not yet part of OpenJDK. Install that in your distribution of choice, and you’ll be able to start the application using java -jar “Easy Smart Configuration Utility.jar” and it’ll start right up.

tplink_easysmart

Unfortunately, it doesn’t work out of the box. The tool doesn’t find any devices on the network, but they are there.
Checking with netstat, the tool bound itself on UDP port 29809, on the local ip address.

$ PID=$(pgrep -f "java -jar Easy Smart Configuration Utility.jar"); netstat -lnput | grep -e Proto -e $PID

Proto  Recv-Q  Send-Q  Local Address            Foreign Address  State  PID/Program name 
udp6   0       0       [your ip address]:29809  :::*                    28529/java

Checking with tcpdump showed that the traffic was returning, but since our tool is only listening on the local ip, and not the UDP broadcast address, it never sees anything.

# tcpdump udp port 29809
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp1s0, link-type EN10MB (Ethernet), capture size 262144 bytes
09:35:48.652235 IP [your ip address].29809 > 255.255.255.255.29808: UDP, length 36
09:35:48.961586 IP [switch ip address].29808 > 255.255.255.255.29809: UDP, length 159

It seems the tool binds to the local IP instead of the ‘any ip’, 0.0.0.0, so you need to locally forward the traffic incoming on the port to your local ip. To do this, execute this command (and/or add it to your local firewall script):

# iptables -t nat -A PREROUTING -p udp -d 255.255.255.255 --dport 29809 -j DNAT --to [your ip address]:29809

And don’t forget to enable IP forwarding

# echo 1 > /proc/sys/net/ipv4/ip_forward

Now you should be able to find and configure the switches in your local network.

XPS13, Linux, suspend and Intel Rapid Start Technology

As an addendum to my previous post on how to install Debian Sid on the XPS13, I’ve been having issues with suspend – the laptop would sporadicaly not go to sleep properly on lid close, or it wouldn’t come out of suspend afterwards.

I seem to have found a solution for both:

  • The laptop suspends correctly after upgrading the xserver-xorg-video-intel driver to the version available in experimental, and upgrading the kernel to kernel 3.9 rc 6 (which contains a bunch of fixes for Ivy Bridge, and the touchpad driver comes built-in). You’ll need to manually build this kernel as detailed in the Debian Kernel Handbook.
  • The not waking up part seems to have been caused by the Intel Rapid Start Technology (iRST in short), which basically is an (S4) hibernate triggered from the BIOS a short while after you put the laptop in (S3) suspend (you never see this from the OS side). The laptop will dump the memory contents to a special partition on the harddisk and shutdown completely. Very good for battery life, less so for waking up from suspend – sometimes it would be instantaneously, sometimes it would take a minute or two, and at other times it just wouldn’t do anything.
    After disabling this in the BIOS the laptop works as expected.
    (you can find more about iRST and Dell here)

Dell XPS 13 and Debian Sid

I purchased a Dell XPS 13 Ultrabook, to replace my ageing Apple Macbook 2,1. After six years of daily use, it’s (over)due to retire.

The reasons for not going for another Apple product:

  • I don’t agree with their behaviour in the various markets where they’re competing. It’s competing, Apple, not sueing for the smallest tidbit. Want to survive, innovate.
  • I no longer use OSX. Linux all the way, baby.
  • Seriously overpriced hardware for the same specifications. The only thing going for them is the screen resolution on the Retina models.

Extra reasons to go for the XPS 13:

  • Nice extra discount through work.
  • Very nice screen resolution on a 13″. Not quite up to retina specs yet, but this is good enough ;)
  • Ultrabook. Light. Long battery.
  • SSD, and loads of RAM

Spec comparison:

Apple Macbook 2,1Dell XPS 13 (2013)
Weight:2.3kg1.03kg
Screen resolution:1200×8001920×1200
Memory:2GiB8GiB
Storage:80GiB HDD256GiB SSD
CPU:Core2Duo 2GHzCore i5-3337U
Battery life:3-4 hours7-8 hours

The laptop arrived in a sortof-stylish black Dell box, unfortunately taped over with all kinds of deliver stickers. Oh well.

The box it was shipped in

The box it was shipped in

Inside you can see the box for the power cord, and the box with the actual laptop. Nicely packaged, pluspoints here, Dell ;)

Nicely packaged

Nicely packaged

Fancy Dell box containing the actual laptop

Fancy Dell box containing the actual laptop

The actual laptop. Wrapped in plastic, protected with foam

The actual laptop. Wrapped in plastic, protected with foam

All unpacked and ready to rock!

All unpacked and ready to rock!

It’s also a bit smaller than my old Macbook, although they’re both rated as being 13″ laptops.

Dell XPS13 on top of my Macbook 2.1. Bit smaller. A lot lighter.

Dell XPS13 on top of my Macbook 2.1. Bit smaller. A lot lighter.

Unfortunately, the laptop I got shipped originally had some issues: plenty of backlight bleeding, and a wifi module that was broken – it would detect a wireless network for 1-2 minutes after powerup, and then nothing.
I called Dell, they sent round a technician… but after this repair, it was completely dead. So they shipped me a replacement, on which I’m typing this blog-post.

Back to the actual laptop – it’s a nice piece of hardware, but the Core i5 version comes shipped with Windows 8, unfortunately. Luckely for us, it’s easy to put something else on (or next) to it ;)
(note: the Core i7 version is the ‘developer’ version, which is shipped with Ubuntu! :D It’s called Project Sputnik)

Steps to shrink the Windows 8 partition (if you want to keep it around, otherwise you can just wipe the entire SDD. Don’t forget to first create some recovery images, though!):

  • Disable hibernate: open a command prompt (in admin mode) and type: powercfg /H off
  • Disable the windows pagefile (you can do this in Control Panel – System – Advanced Settings)
  • Disable system restore (ditto)

A reboot later, you should be able to shrink the partition to the minimum required (I left it around 50GiB). If you don’t disable all that crap, Windows will only allow you to shrink down to around 110GiB, which is frankly ridiculous.
You can enable everything again after shrinking the partition.

This will leave us with a nice amount of storage to put Linux on.

Now, download the Debian Testing latest weekly dvd 1 for amd64. You’ll also need a USB stick of 8GiB (4.5 is needed). Format that stick as FAT32, and copy the content of the DVD image on the stick (not the actual ISO).

After this is done, you can reboot the laptop. When you see the Dell logo flash on the screen, quickly hit F12 (repeatedly). This will present you with the boot menu, where you can choose what to boot. I recommend to pick ‘Legacy mode’, and from there ‘USB storage’. Normally this will boot the Debian installer from the memory stick.

To install Debian, I refer you to the Debian Installation Manual, an excellent document that details all the steps. Just be careful not to wipe out the existing Windows partition, should you want to keep it ;)

Some time later, you’ll get to reboot the system, and Debian should be the default choice to boot with the UEFI boot manager ;)

At this point it’s also highly recommended to add unstable and experimental sources to your /etc/apt/sources.list file – the testing distribution just installed it – ahem – slightly outdated in software terms, and we’ll definitely need a new kernel.

Add this to /etc/apt/sources.list (replacing XX with your two-letter country code):

deb http://ftp.XX.debian.org/debian/ sid main contrib non-free
deb http://ftp.XX.debian.org/debian/ experimental main contrib non-free
deb-src http://ftp.XX.debian.org/debian/ experimental main contrib non-free

Do an apt-get update && apt-get dist-upgrade and you’re good to go on the packages. For a newer kernel, do apt-cache search linux-image and check for the latest kernel release, right now that is linux-image-3.8-trunk-amd64, which you can install with apt-get install -t experimental linux-image-3.8-trunk-amd64.

Now, to fix some of the issues I’ve encountered:

Non-functional wifi
On another laptop (or in Windows), download the firmware-iwlwifi package. Install it – a reboot later you should be able to configure the wireless interface. You might also need wpasupplicant if you use encryption on your network. (I’m lazy, so I downloaded all the packages needed for wicd and configured stuff that way.)

Laptop wakes from suspend out of the blue
I’ve encountered a few times that the machine came out of suspend without any trigger from me – highly annoying (and dangerous, should this happen while the machine is in a backpack and start to heat up). I’ve found this Bug report on Launchpad about it. The fix seems to be to disable “Smart Connect” in the BIOS. I’ve tried it here, seems to work.

Touchpad isn’t recognized as a touchpad
The patches to support the touchpad are on route to be included in kernel 3.9, but (at the time of writing) that one hasn’t been released yet. So we need to take the latest kernel available in Debian Experimental (3.8.5) and patch this with the driver. Luckely Debian has The Linux Kernel Handbook which explains how to do all this the proper Debian way ;)

First, install the necessary build packages: apt-get install build-essential fakeroot devscripts && apt-get build-dep linux-3.8
Next, get the kernel sourcecode: apt-get source linux-image-3.8-trunk-amd64 -t experimental
Download the patches too: wget 'https://patchwork.kernel.org/patch/1859901/raw/' -O /usr/src/cypress-touchpad-v7.patch and wget 'https://patchwork.kernel.org/patch/1859901/raw/' -O /usr/src/cypress-touchpad-v7.patch
Now, go to the source directory cd /usr/src/linux-3.8.5 and execute the script to rebuild the kernel with the two patches:  bash debian/bin/test-patches ../cypress-touchpad-v7.patch ../increase-struct-ps2dev-cmdbuf-to-8-bytes.patch
Now go eat a pizza, make some coffee, solve a theorem or so. It’ll take a bit. When it finishes, you’ll have another shiny kernel in /usr/src, which you can install with dpkg -i linux-image-3.8-trunk-amd64_3.8.5-1~experimental.1a~test_amd64.deb And Bob’s your uncle.

Brightness level doesn’t stick after a suspend/resume
For this I made a custom suspend-resume hook for pm-utils. Add the following script as /etc/pm.d/sleep.d/00backlight

#!/bin/bash

SYSFS=/sys/class/backlight/intel_backlight
TMP=/var/tmp/backlight-restore

case $1 in
“suspend”|”hibernate”)
echo “Saving backlight brightness level…”
cat $SYSFS/actual_brightness > $TMP
;;
“resume”|”thaw”)
if [ -e $TMP ]; then
echo “Restoring backlight brightness level…”
cat $TMP > $SYSFS/brightness
rm $TMP
else
echo “No brightness level save file found.”
fi
;;
*)
echo “Dunno what you’re trying…”
exit 1
;;
esac

This script will read the backlight brightness level upon suspend, and store it in a file in /var/tmp. Upon resume, the value is read from the file and the brightness level set to it.

The permanent fix is also scheduled for kernel 3.9.

Unreadable (way too tiny) fonts in applications
This is actually a drawback from having a high-resolution screen: a lot fits on it, but the fonts are tiny.
I had the issue mostly in Opera, IceDove (a rebranded Thunderbird) and XTerm, my X Terminal of choice.

In Opera you can just set the default zoom level. I put this at 120%, everything is readable now.
For Thunderbird, I can advise installing the ViewAbout extension, and then looking in View -> ViewAbout -> about:config for the setting layout.css.devPixelsPerPx, and setting this to “1.2”.
For XTerm, I added this to .Xresources (in my home directory):

XTerm*faceName: Dejavu Sans Mono
XTerm*faceSize: 11

so that XTerm uses the Dejavu Sans Mono truetype font, size 11, instead of the default.

Fixing the ACPI DSDT of an Acer Ferrari One 200

Last year I installed Debían on my mother in law’s network (an Acer Ferrari One 200). The thing ran fine, but gave some “firmware bug?” warnings. Since no new BIOS’ were available at that time, I left it at that.

When doing my yearly checkup and update round, there still wasn’t any new BIOS to be found. Annoying Acer! So I went around started digging in the ACPI DSDT tables to see if I could fix anything.

To dump them, you can either use the acpidump tool (acpidump -b --table DSDT > /tmp/dsdt.aml) , or just do a cat /sys/firmware/acpi/tables/DSDT > /tmp/dsdt.aml
Next, and decompile the thing with the iasl (Intel ACPI compiler/decompiler): iasl -d dsdt.aml. This should yield a file called dsdt.dsl, which is human readable. Sortof :p
First thing to fish out is to see whether the syntax is correct. To find out, we can just try to recompile it with the command iasl -tc dsdt.dsl.

In my case this didn’t exactly work:

ASL Input: DSDT.orig.dsl – 10886 lines, 405784 bytes, 4948 keywords
Compilation complete. 21 Errors, 6 Warnings, 18 Remarks, 1759 Optimizations

 

Amazed that this thing even booted!

(the reason for these mistakes is that many manufacturers use the Microsoft compiler which is a lot less strict when it comes to the DSL syntax. Intel’s compiler is less forgiving.)
Continue reading

Mounting box.net with webdav under Linux

I recently got a Box account with 50 gB of online storage (see this thread on XDA on how to get one).

To get it mounted under linux, install the davfs2 package, add your credentials in /etc/davfs2/secrets with the syntax:

https://www.box.net/dav <email address used in account> <password>

Next, edit the /etc/davfs2/davfs2.conf file, to disable locking. It doesn’t really support it, and causes input/output errors when trying to write anything to the filesystem. To this file you should add the entry

use_locks 0

To automatically mount it at boot, you can add the following to /etc/fstab (all in one line):

https://www.box.net/dav /mnt/box.net davfs defaults,uid=<your linux user>,gid=<your linux group> 0 0

Now you just need to create the directory, and mount it:

mkdir /mnt/box.net
mount /mnt/box.net

Et voila, you can now use your Box account as a regular filesystem ;)

Adobe AIR 2.6 and Debian Sid 64-bit

I wanted to get Adobe AIR to work on my 64-bit Debian Sid installation, to try out some other twitter clients, more specifically Saezuri. (On a side note: the offering of twitter clients on linux is … mediocre. Bad, even. The (imho) best one is Pino, but it has problems of it’s own).

(Sidenote: Adobe has decided to discontinue AIR for Linux.)

It didn’t really go all that smooth, so here’s the process:

First, download the Adobe AIR 2.6 runtime from http://kb2.adobe.com/cps/853/cpsid_85304.html. Save it somewhere (like /tmp).
Next, open a terminal and make it executable: chmod +x /tmp/AdobeAIRInstaller.bin

Normally, now, you can try to install it: /tmp/AdobeAIRInstaller.bin. This should popup a dialog, telling you it’s going to install it. Unfortunatly at this point, I ran into a problem: it didn’t find either Gnome Keyring or KDE Kwallet, even though I have both installed on my system. After some digging, I recalled that AIR is a 32-bit framework, so I would need the 32-bit libraries for it to work.
While leaving the installer open, I went to look for the extracted directory, which was found under /tmp/air.w9qZiT, where, in one of the subdirectories I found a bunch of binaries which ended looking for libraries like libkwallet.so.1.
I found the needed libraries in the i386 packages kdelibs4c2a and libqt3-mt (which are for Debian Squeeze…), extracted them and put them in /usr/lib32:

lrwxrwxrwx 1 root root 16 Aug 8 2010 libDCOP.so.4 -> libDCOP.so.4.2.0
-rw-r--r-- 1 root root 213988 Aug 8 2010 libDCOP.so.4.2.0
lrwxrwxrwx 1 root root 19 Aug 8 2010 libkdecore.so.4 -> libkdecore.so.4.2.0
-rw-r--r-- 1 root root 2465476 Aug 8 2010 libkdecore.so.4.2.0
lrwxrwxrwx 1 root root 17 Aug 8 2010 libkdefx.so.4 -> libkdefx.so.4.2.0
-rw-r--r-- 1 root root 172488 Aug 8 2010 libkdefx.so.4.2.0
lrwxrwxrwx 1 root root 25 Aug 8 2010 libkwalletclient.so.1 -> libkwalletclient.so.1.0.1
-rw-r--r-- 1 root root 61452 Aug 8 2010 libkwalletclient.so.1.0.1
lrwxrwxrwx 1 root root 17 Sep 5 2010 libqt-mt.so.3 -> libqt-mt.so.3.3.8
lrwxrwxrwx 1 root root 17 Sep 5 2010 libqt-mt.so.3.3 -> libqt-mt.so.3.3.8
-rw-r--r-- 1 root root 7515480 Sep 5 2010 libqt-mt.so.3.3.8

(I’ve made a tarball with those libraries, which you can find here. You can install it by extracting it with cd /usr/lib32; tar xvfz ia32-libs.tar.gz.)

Retry the installer, still didn’t go further. After some more digging, I found an article detailing the use of AIR on non-KDE and non-Gnome systems on the Adobe Knowledge base. (I use a mix of Gnome, GTK and KDE apps, with XFCE as desktop environment)

What I had to do was run the following commands before launching the installer:
export KDE_FULL_SESSION=1
export KDE_SESSION_VERSION=4

(for Gnome, see the article)

After this, the installer went ahead and dumped AIR in /opt/Adobe AIR. (spaces in a directory? Really, Adobe????)

Next hurdle: after installing Saezuri, I noticed it had a hideous black border:

Saezuri with black border

… completely not acceptable. Luckely, this was easily fixed by enabling display compositing in the XFCE settings. Another problem fixed:

Saezuri with transparancy

The last problem I ran into is that AIR seems to default to firefox as the default browser. Since I’m not a firefox user (I do have it installed for those special occasions), that didn’t do. After some more digging I found a blog post detailing how to change this: apparently Adobe decided that hardcoding firefox as a browser was a good idea. I fixed this by hex-editing the libCore.so file under /opt/Adobe AIR/Versions/1.0, changing the hardcoded ‘firefox’ by ‘browser’, and adding a symlink under /usr/bin pointing browser to x-www-browser:
ln -s /usr/bin/x-www-browser /usr/bin/browser
(x-www-browser is part of the Debian alternatives system, which allows for easy selection of default browsers and what not.)

You can download the patched libCore.so here.

Now AIR seems to behave the way I want it to, so I’m a happy camper :)