PS3 Wireless HOWTO
2013.01.30

Copyright (c)  2008 Sony Computer Entertainment Inc.
Copyright  2008 Sony Corporation

Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.2 published by the Free
Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License".

DISCLAIMER

THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS
OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;
THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE
IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE
OR IMPLEMENTATION OF THE CONTENTS THEREOF.

TRADEMARK NOTICE

"PLAYSTATION" and "PS3" are registered trademarks of Sony Computer Entertainment
Inc. "Cell Broadband Engine" is a trademark of
Sony Computer Entertainment Inc. Linux® is the registered trademark of Linus
Torvalds in the U.S. and other countries.
Other company, product and service names may be registered trademarks,
trademarks or service marks of others.

ABOUT THIS DOCUMENT

This note describes how to setup Fedora wireless networking on your PS3.

You can always find the latest version of this document, and some other useful
technical documents here:

  http://www.kernel.org/pub/linux/kernel/people/geoff/cell/

Please send comments to <geoff@infradead.org>.

PS3 WIRELESS HOWTO

With a freshly installed Fedora 9 the PS3 Linux wireless lan (WLAN) does not
work well, and even after updating to the latest packages the issue still
exists as of today. This document tries to describe how to get the PS3 WLAN
working properly.

1) Preparation

  To avoid complications, update the F9 system to the latest version using
  yum.

  # yum update -y

  As of today, the following rpms should be installed:

    kernel-2.6.26.3-29.fc9.ppc64
    wpa_supplicant-0.6.3-6.fc9.ppc
    wireless-tools-29-2.fc9.ppc
    NetworkManager-0.7.0-0.11.svn4022.fc9.ppc

  NOTE:  If you are using a freshly installed F9, update 'e2fsprogs'
  first, then update the rest of the system.  The original e2fsprogs
  has a bug that does not recognize the swap partition, and the system
  will boot without swap.

  // update rpm key; Fedora updated their pgp key after F9 release

    # yum update -y fedora-release
    # yum update -y e2fsprogs*
    # swapon -a

  // iwl4965-firmware conflicts with the latest kernel
  // Intel 4965AGN is a mini-PCIe card, therefore it is not useful
  // on PS3:

  # yum remove -y iwl4965-firmware
  # yum update -y

3) The Kernel

  The complete driver for the PS3 WLAN was merged into the mainline 2.6.27
  Linux kernel.  Fortunately, the latest Fedora 9 kernel,
  kernel-2.6.26.3-29.fc9, includes almost all necessary patches as well, so we
  can use it instead of compiling a 2.6.27 kernel.

  Alternatively, PS3 Linux maintainer Geoff keeps the runnable PS3
  kernel source tree at kernel.org. You can retrieve that version and
  compile it.

4) WPA Supplicant

  The PS3 WLAN driver is designed to be controlled and configured via the
  Linux Wireless Extension (WEXT) interface and tested with the user space
  program 'wpa_supplicant'.  From version 0.6.4, wpa_supplicant has
  support for the PS3 Linux WLAN.  F9 uses wpa_supplicant 0.6.3 for now,
  so we should upgrade it.

4.1) Getting the wpa_supplicant Source

  Get the source of wpa_supplicant version 0.6.4 or later. You should
  reach the source via wpa_supplicant's home page:

    http://w1.fi/wpa_supplicant/

  Probably the archive can be reached with:

    http://w1.fi/releases/wpa_supplicant-0.6.4.tar.gz

4.2) Compiling wpa_supplicant

  Nothing special is required to compile wpa_supplicant. Extract
  the archive, setup the build options, then type 'make'.  The build
  options are controlled by the .config file in the source directory.
  Please see README file in the archive for details of the compilation.

  The F9 SRPM includes the configuration file for its wpa_supplicant.
  The following is almost identical to the F9 configuration except that
  MadWiFi is disabled because compiling with MadWiFi enabled requires
  special header files which are not included in the wpa_supplicant
  archive.

    CONFIG_CTRL_IFACE=y
    CONFIG_CTRL_IFACE_DBUS=y
    CONFIG_DRIVER_HOSTAP=y
    //CONFIG_DRIVER_HERMES=y
    //CONFIG_DRIVER_MADWIFI=y
    CONFIG_DRIVER_ATMEL=y
    CONFIG_DRIVER_WEXT=y
    CONFIG_DRIVER_NDISWRAPPER=y
    CONFIG_DRIVER_PRISM54=y
    CONFIG_DRIVER_WIRED=y
    //CONFIG_DRIVER_BROADCOM=y
    //CONFIG_DRIVER_IPW=y
    //CONFIG_DRIVER_BSD=y
    //CONFIG_DRIVER_NDIS=y
    CONFIG_WIRELESS_EXTENSION=y
    CONFIG_IEEE8021X_EAPOL=y
    CONFIG_EAP_MD5=y
    CONFIG_EAP_MSCHAPV2=y
    CONFIG_EAP_TLS=y
    CONFIG_EAP_PEAP=y
    CONFIG_EAP_TTLS=y
    CONFIG_EAP_GTC=y
    CONFIG_EAP_OTP=y
    CONFIG_EAP_SIM=y
    CONFIG_EAP_AKA=y
    CONFIG_EAP_PSK=y
    CONFIG_EAP_PAX=y
    CONFIG_EAP_LEAP=y
    //CONFIG_PCSC=y
    CONFIG_PKCS12=y
    CONFIG_SMARTCARD=y
    CONFIG_DEBUG_FILE=y

  Depending on your setup of F9, you may need to install development
  RPMs, like gcc, openssl, X11, qt and so on, in order to build
  wpa_supplicant.

4.3) Testing wpa_supplicant

  After compilation, you may want to test the binary.  To test:

  - Write a configuration file for wpa_supplicant.
  - Stop NetworkManager.
  - Run wpa_supplicant with your configuration file.

  The sample configuration file is shown in the later sections.

    # vi wpa_supplicant.conf
    (Write your own configuration file for your AP)
    # /etc/rc.d/init.d/NetworkManager stop
    # cd wpa_supplicant.0.6.4/wpa_supplicant
    # ./wpa_supplicant -dd -Dwext -iwlan0 -c ~/wpa_supplicant.conf

  If your wpa_supplicant connects to your AP successfully, a message
  like the following should be seen:

    CTRL-EVENT-CONNECTED - Connection to 00:11:22:33:44:55 completed
    ...
    RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added

  Then assign an IP address and test the connection with ping etc...

    # ifconfig wlan0 192.168.1.10
    # ping 192.168.1.1
    PING 192.168.1.1 (192.168.1.1) 65(84) bytes of data.
    64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=5.80 ms
    ...

4.4) Installing Your Binaries

  The simplest way to install the compiled binaries is to overwrite the
  existing ones.  As the F9 RPM supplies the following three binary
  files, just copy the new binaries onto them:

    /usr/sbin/wpa_supplicant
    /usr/sbin/wpa_cli
    /usr/sbin/wpa_passphrase

  To revert, re-install the F9 wpa_supplicant RPM.

4.5) Configuration Samples

  The following are the configuration file samples for wpa_supplicant.
  They assume the SSID of the AP is "your_ap" and the WPA-PSK pass phrase
  is "yourpasswd".

  - WEP 64bit hexadecimal

    ctrl_interface=/var/run/wpa_supplicant
    network={
            ssid="your_ap"
            key_mgmt=NONE
            wep_key0=0123456789
    }

  - WEP 64bit hexadecimal + Hidden SSID

    ctrl_interface=/var/run/wpa_supplicant
    network={
            ssid="your_ap"
            scan_ssid=1
            key_mgmt=NONE
            wep_key0=0123456789
    }

  - WPA version 1 TKIP

    ctrl_interface=/var/run/wpa_supplicant
    network={
            ssid="your_ap"
            key_mgmt=WPA-PSK
            proto=WPA
            pairwise=TKIP
            group=TKIP
            psk="yourpasswd"
    }

  - WPA version 2 AES

    ctrl_interface=/var/run/wpa_supplicant
    network={
            ssid="your_ap"
            key_mgmt=WPA-PSK
            proto=WPA2
            pairwise=CCMP
            group=CCMP
            psk="yourpasswd"
    }