4 Aug 2007

Guide to get WPA-PSK working on PS3 - YDL 5.0.2

There were some requests for easier guide on how to get WPA working on Playstation 3 for Yellow Dog Linux 5.0.2. I looked around and found some free webspace for prebuilt binaries and for modified source RPMs. Please note that you will need your YDL root account in order to complete steps below.

This guide was last updated on: 4.8.2007

1. Update your wireless tools package

Yellow Dog Linux 5.0.2 comes with wireless tools package compiled for PowerPC-32. While this may work for other systems with Playstation 3 this is a bit problematic as ioctl32 wireless interface is a bit broken. So easiest workaround for this is to compile wireless tools as PowerPC-64 binaries. You can get modified source RPMs and pre-built binaries for easier installation from my packages website. Most users just need to download wireless-tools-28-1.ppc64.rpm and install it. You can use USB Flash Memory or any other medium to transfer files.

rpm -Uvh wireless-tools-28-1.ppc64.rpm

If it complains for conflicts add --force to command line (usually don't do this, but I didn't want to update release numbers in case Yellow Dog Linux releases updated packages to replace this). Please note that this is modification of YDL's source RPM package so it is a bit older that what kernel would like to use. It will generate some warnings, but you can ignore those.

2. Test that wireless tools works

Next step is to test out that wirless tools works. Tools needed in this experiment are ifconfig, iwconfig, iwpriv, iwlist, and dhclient.

First lets test out that you can wireless module loaded correctly. For this we will use iwconfig:

iwconfig eth0

This will display something like (your details may be different):

eth0 radio off ESSID:off/any
Mode:Managed Frequency:2.462 GHz Access Point: Not-Associated
Bit Rate:54 Mb/s
Encryption key:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Next let's make sure you have clean configuration for your wireless connection, command eth0 down and up:

ifconfig eth0 down

ifconfig eth0 up

Next you can try to search for access point to connect to using iwlist.

iwlist eth0 scanning

This will display something like (your details will be different):

eth0 Scan completed :
Cell 01 - Address: 77:88:99:AA:BB:CC
ESSID:""
Protocol:IEEE 802.11bg
Mode:Managed
Channel:11
Encryption key:on
Quality=100/100 Signal level=-42 dBm
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Extra:bcn_int=100
Extra:ap_sec=0201

You should note last line per entry Extra:ap_sec=. This number will tell what encryption algorithm is needed for your connection. 0201 means WPA-PSK - TKIP and 0202 would mean WPA2-PSK - AES. I have not been able to test out WPA2-PSK - AES, but it might work for you. For me 0100 shows up for WPA2-PSK - AES which is incorrect as that would mean WEP encryption.

Next lest try manually connecting to Access Point. For this you will need to know your access point's ESSID, used encryption algorithm (WPA-PSK (TKIP), WPA2-PSK (AES)) and passphrase to access network.

iwpriv eth0 set_alg 2

iwconfig eth0 key s:passphrase

iwconfig eth0 essid ESSID

If you have WPA2-PSK replace set_alg 2 with set_alg 3. For WEP this would be set_alg 1. After that you can observe output of iwconfig eth0 to see if you have been associated to access point (Access Point field changes from Not-Associated to MAC address of your AP).

Next you can check out if you can get an IP address with dhclient.

dhclient eth0

If it gives you an IP address you are free to test out your internet connection with your web browser or any other tool that needs connection.

3. Setting it up automatically on boot

Now that you have Wireless connection working it would be nice that it would work automatically after being rebooted.

There are only two files to be modified.

First, lets modify /etc/sysconfig/networking/devices/ifcfg-eth0.

Set following fields to values shown below (of course change your ESSID) (other fields can be left empty):

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
ESSID=ESSID
TYPE=Wireless

Next we need to store your passphrase so it will be automatically configured.

Edit /etc/sysconfig/networking/devices/keys-eth0 to contain following:

KEY=s:passphrase
IWPRIV="set_alg 2"

Please not that those values are the same that you used during testing.

After this you can try it, first bring eth0 down and then back to up:

ifdown eth0

ifup eth0

Thats all!

20 Jul 2007

How to get YDL 5.0.2 + PS3 + WPA working

First you need to recompile wireless-tools package as PowerPC64. Currently there is a bug in kernel (or feature) that does not allow ioctl32 calls to be used correctly. Therefore this causes ydl's default wireless-tools package not to work as it is compiled as PowerPC32.

To recompile it you need source RPM for wireless tools package: wireless-tools-28-1.src.rpm. Install it. It should extract some files under /usr/src/yellowdog/*/*. Unfortunely this package has problems compiling for ppc64 so this needs to be fixed first. I have made a patch for it which can be found from yellowdog-devel mailing list. Basicly you need to copy that new makefile patch file over older makefile patch file and then you can build it. After that just run "rpmbuild -bb wireless-tools.spec --target=ppc64" and it builds could of RPMs to /usr/src/yellowdog/RPMS/ppc64/. Install wireless-tools-28-1.ppc64.rpm package (rpm -ivh <pkg>). After that you can use iwconfig, iwpriv tools nicely and configure WPA.

To get it working automatically you must modify two files:
/etc/sysconfig/networking/devices/ifcfg-eth0
/etc/sysconfig/networking/devices/keys-eth0

For ifcfg-eth0:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
ESSID=<your ESSID>
TYPE=Wireless

(others can be left empty)

If you don't use DHCP for some reason configure rest how you like.

For keys-eth0:

KEY=s:<your passphrase>
IWPRIV="set_alg 2"

Change "set_alg 2" to "set_alg 3" if you have WPA2-PSK (AES). I didn't get WPA2 working and I think it is hypervisor's firmware issue (as it works correcly in GameOS). This might be relative you Wireless Accesspoint in use or your PS3 hardware & firmware version. Check how it works, and tell us if you have success.

Oh. YDL's wireless kernel driver is a bit old, so AP scan might not work correctly. It is possible to compile newer driver for YDL but I won't go to details this time.

15 Jul 2007

Serving mp4 files to PS3

Playstation 3's webbrowser seems to be quite picky on what it accepts to be downloadable. On net there was some hints to rename filenames as avi. But at least for me it downloaded them but at least my mp4 trailer was reported as corrupt. Perhaps there should be correct AVI container data present for that trick to work. However that made me think. Perhaps my local server was just missing correct MIME type. Googled a bit and it seems that mp4 files should be recognized as video/mp4. Reconfigured apache to recognize this and voilá! mp4 files downloads nicely from my home server. And as extension was correct PS3's video player played that mp4 trailer nicely.

3 Jul 2007

Mylyn looks great!

With recent release of new Eclipse Europa there was new tools introduced or at least new to me. One of them was Mylyn, a task based workflow integration to Eclipse. I saw some web presentations with demonstration how nicely it integrated with Java work. It looked promising but there wasn't any info how it integrates with CDT or with other stuff. So I wanted to test it out. And yes, it looks like its source listing feature also works with CDT! Yay! This looks really promising and useful feature when working with large sets of code. It just needs a trac or bugzilla so it can share those filtering settings. Something to bake on my development server ;).

1 Jul 2007

New Eclipse and CDT is released!

Yeay! We got new Eclipse Europa release. While checking it out I found about mylyn project. It integrates task based working to Eclipse IDE. Watched about some web presentation about it and it looks fine addition. Need to try this one later one. Now that new release CDT 4.0 is out I would propose that anyone working with C/C++ code would test it out :). It does not have great list of toolsets configured at the moment, but you can always use just makefiles. There are tons of other stuff that is new... probably takes ages to try them out :)

First wireless WPA connection with PS3 Linux!

It seems that PS3 Linux's gelic wireless driver is not designed to work with wpa_supplicant, instead it provides services (through hypervisor) to enable WPA & WPA2 security. I got nice tip from author of the original driver on how to setup it. Only problem seems to be that from that last screenshot of iwconfig, I installed new firmware upgrade (1.82)... This does not seem to report WPA2+AES correctly anymore. During debugging it, I noticed that current driver does not seem to handle association reporting correctly to Linux wireless stack so I had to add some code to report associations correctly. When I figured this out, I tried WPA+TKIP and got connection up... Now lets see if we can get fix for this WPA2+AES issue in future firmware.

I would like to remind people wanting to get WPA or WPA2 working to wait a moment and lets fix problems before getting this on mainstream. (eg. do not ask patched driver from me ;))

30 Jun 2007

More WPA2 debugging

Tonight I was debugging more wireless and it seems that driver does not report that AP is using better encryption than WEP. Wpa_supplicant seems to look for WPA IE and/or RSN IE data so I need to find out where to get that or do I need to bake it somehow (or can I bake it). Having no documentation for gelic is making it a bit hard to guess, but it would seem that this AP's IE information is not available from it. Need to study this more later on. I also implemented some ioctl's so that user space can query and set those values, wpa_supplicant was giving some warnings about those. Though I am still wondering should those values be used in driver itself and not just to provide storage helper ;). Hacked wpa_supplicant to accept my AP without whining about missing WPA, it went a bit further leaved scanning mode to another but then again failed. It looks like it sets wrong encryption session settings or something like that as it didn't get it from driver on those IE fields. Need to study this more too...