Firmware file “b43legacy/ucode4.fw” not found or load failed.

Getting the wireless to work on a Dell Latitude D600 under ubuntu or debian is a pain.

Problem:

The network manager under gnome says ‘firmware missing or not installed’.
and “sudo dmesg | grep ERROR” returns a message like


b43legacy-phy3 ERROR: Firmware file "b43legacy/ucode4.fw" not found or load failed.
b43legacy-phy3 ERROR: You must go to http://linuxwireless.org/en/users/Drivers/b43#devicefirmware and download the correct firmware (version 3).

Solution:

Go here:
http://linuxwireless.org/en/users/Drivers/b43#Ubuntu.2FDebian and download the ‘b43legacy’

sudo su
cd ~
wget http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o

Install the b43-fwcutter utility.

apt-get install b43-fwcutter

Use the utility to extract the firmware.


b43-fwcutter ./wl_apsta-3.130.20.0.o

This will create a directory in the current directory with the firmware files. It will be called “b43legacy”.

Move the folder into your /lib/firmware directory and reboot and you should find the firmware needed by your wireless card.


mv ./b43legacy /lib/firmware/
reboot

And enjoy wifi goodness on your linux powered laptop.

XRDP is great

xrdp.org hosts an open-source implementation of Microsoft’s remote desktop protocol server. This is a great tool long overdue on GNU/Linux.

Remote Desktop Protocol (RDP) is a proprietary protocol developed by Microsoft, which provides a user with a graphical interface to another computer. Unlike VNC which simply forwards screen shots and keyboard input from another computer, A RDP session is a virtual terminal creating a separate instance of X.org server running a desktop separate from other logged in users. No users need to be logged in to create a new RDP session.
This means the session can be configured by the client so the screen is displayed in the native resolution of the client. Using a RDP client at full screen feels like your using a native operating system. Its also more efficient in terms of bandwidth needed to communicate video and keyboard data.

Installing in ubuntu 11.10 is easy. Its a package which can be installed with apt-get.

sudo apt-get install xrdp

Great, but I encountered a couple of minor issues.
For one after connecting with a client, I was only able to see the desktop. I did not get tool bars or any way to interact with the terminal.
Turns out its an easy fix.

cd /home/youruser
echo "gnome-session --session=ubuntu-2d" > .xsession
sudo /etc/init.d/xrdp restart

This tells xrdp to use ubuntu-2d for your remote session.
This is all I needed to get my menus to show up. Note that restarting xrdp will disconnect your session.

The next issue is pressing the ‘d’ key causes all active windows to be hidden. This can be corrected from the GUI.

  • Click on the ubuntu menu and search for ‘system settings’.
  • Click on ‘keyboard’.
  • Click on the ‘shortcuts’ tab, then the ‘navigation’ tab and find ‘Hide all normal windows’. I changed mine to be ‘alt + d’ .

Once these easy tweaks are done, you’ll have your self a very usable remote desktop server.

Using PHP/Curl to make big Google Charts

Google charts is a wonderful tool for generating all kinds of graphs and charts. It provides two methods for supplying data, either in the URL or via POST.
The URL version is limited to 2048 characters and the POST version is limited to 16K characters. I wish the FAQ explained a little more about why the limitation exists.

I’ve run into two problems using it in my applications. SSL applications complain if any non-ssl content is pulled into the page and occasionally, I have tables too large for the URL api but that really is the only way to retrieve the image in my application.

I’ve got a simple php-curl based proxy which solves both issues. https://github.com/derak-kilgo/google-chart-proxy Its a drop in replacement for the google’s chart URL.

http://chart.apis.google.com/chart?chs=350x225&cht=p3&chd=s:Mx&chdl=Charts+Users|Should+Use+Charts&chl=Users|Don't+Use&chtt=Google+Charts&chts=676767,20

becomes

http://your-domain.com/proxy.php?chs=350x225&cht=p3&chd=s:Mx&chdl=Charts+Users|Should+Use+Charts&chl=Users|Don't+Use&chtt=Google+Charts&chts=676767,20

Its just that simple.