performance. The tests has been run with the default size (1400x1200) and with 3000x2000, but no difference has been noticed. However, increasing the virtual screen to more than 3000x2000 will disable hardware acceleration and of course cripple performance completely.

These observations verifies that hardware 3D acceleration is really working and that the radeon driver is taking care of business the way we want it to.

10.4 TV-out

TV output is available through the S­video connector on the rear of the Ferrari. Furthermore, no special settings are needed in order to use it. It is immediate available and may be controlled by xrandr. However, the tips below might help to get you started.

10.4.1 Load detection

The external outputs have a property called load_detection, that controls whether RandR should try to auto­detect the output or not. Usually it is a good thing to be able to auto­detect the different output features. However, there are situations when you do not want auto­detection.

Remember that we have three outputs, but only two rendering pipelines (CRTCs). What would then happen if we try to auto­detect and configure all available outputs, xrandr ­­auto, with both VGA­0 and S­video connected? We actually do not know. The internal display may only use the first pipeline, CRTC 0, but that might be allocated by either VGA­0 or S­video. Furthermore, we will have a race condition between the two remaining outputs for the second pipeline,

CRTC 1. In order to avoid potential conflicts like that, auto­detection is disabled by default for S­video.

Thus, we first have to enable load_detection in order to use the TV­output. That is done by:

# xrandr ­­output ­­set load_detect 1

10.4.2 NTSC or PAL

The graphics chip defaults to NTSC, so those of us how want PAL need to explicitly specify this. To change the TV mode to PAL use:

# xrandr ­­output S­video ­­set tv_standard pal

10.4.3 Initialization

The script for dual head management presented in Appendix B assumes that all external outputs may be auto­detected. Thus, if you want the script to consider TV­out as a possible external output you need to enable auto­detection for TV­ out.

Consequently, we need to initialize some settings before TV­out is automatically

21

F8­x86_64 on the Acer Ferrari 3400LMi

handled by the script. The script includes an initialization option that may be used for this. Put the following line in the file /etc/rc.local:

/usr/local/bin/dual­head.sh init

11 Touch-pad

The Synaptics touch­pad is properly configured during the installation, and works well. I use it in conjunction with a USB mouse and both works well in parallel. I have seen some reports on problems with the touch­pad 4­way multi­ button, but it works without any hassle for me. Likewise does the mouse wheel.

The InputDevice section in xorg.conf configured during the installation works well and needs no modification:

The special key to toggle the touch­pad (Fn­F7) also works without any special configurations.

12 Wireless NIC

When it comes to the Broadcom BCM4306 802.11b/g WLAN chip on the Ferrari you have two choices. The traditional NdisWrapper or the kernel module b43. When I first got this laptop there was no other option than NdisWrapper, but lately the kernel moduleb43 has evolved and matured.

As its name implies NdisWrapper is a wrapper for NDIS drivers, meaning that you use a corresponding Windows driver instead of a Linux driver. For some WLAN chips this is still the only option, but lately many chips enjoy almost native Linux support by means of kernel modules. I say “almost” because many chips need to be fed with proprietary firmware in order to operate. Anyway, this is a step in the right direction, and the final goal must be to free the firmware as well.

With FC4 NdisWrapper was the obvious choice, but during FC5 its configuration was (deliberately?) broken by the updates. Most FC5 updates re­installed the now deprecated bcm43xx kernel module, even though it was previously disabled and blacklisted. Thus, for most FC5 updates I had to disable the kernel module once again and re­install NdisWrapper. In my opinion, thebcm43xx kernel module was not mature enough to compete with NdisWrapper at that time. So this was an endless struggle to keep my WLAN support alive.

22

F8­x86_64 on the Acer Ferrari 3400LMi

However, with F8 the b43 kernel module is mature, stable and ready for production. How to get theb43 kernel module to work is described below. To use the NdisWrapper please refer to the FC4 version of this document, found athttp://ferrari.databa.se/3400/fc4/.

12.1 Installing WLAN

First we need to check and install some software so we have the tools we need.

12.1.1WLAN tools

1.First we needed to make sure that the b43 kernel module is compiled and properly loaded during system startup. For standard F8 kernels this is the case, but if you compile your own brew you need to build it as a module:

# dmesg | grep b43

b43­phy0: Broadcom 4306 WLAN found

b43­phy0 debug: Found PHY: Analog 2, Type 2, Revision 2

b43­phy0 debug: Found Radio: Manuf 0x17F, Version 0x2050, Revision 2

# lsmod | grep b43

b43

150001

0

rfkill

14801

1

b43

mac80211

127949

1

b43

input_polldev

12113

1

b43

ssb

38725

1

b43

2.Next we need to make sure that the wireless­tools package is installed on our system:

# rpm ­q wireless­tools wireless­tools­29­0.2.pre22.fc8

If not, we need to install it:

# yum install wireless­tools

or

#rpm ­Uvh wireless­tools­29­0.2.pre22.fc8.x86_64.rpm

3.Finally we will need the b43­fwcutter package. Make sure that it is installed:

#rpm ­q b43­fwcutter

b43­fwcutter­008­1.fc8

or install it:

# yum install b43­fwcutter

12.1.2WLAN firmware

4.Now we need to download the Broadcom driver, so we may extract the

23

F8­x86_64 on the Acer Ferrari 3400LMi

firmware from it later. Download it at: http://downloads.openwrt.org/sources/broadcom­wl­4.80.53.0.tar.bz2

or I keep a local copy, just in case: http://ferrari,databa.se/3400/fc8/broadcom­wl­4.80.53.0.tar.bz2

5.Uncompress the driver:

#tar jxf broadcom­wl­4.80.53.0.tar.bz2

6.Extract and install the firmware from the Broadcom driver as root:

#cd broadcom­wl­4.80.53.0/kmod/

#b43­fwcutter ­w /lib/firmware wl_apsta.o

12.2 Get started with WLAN

Now that we have all the pieces we need installed, it is time to check the functionality and get things working.

12.2.1 The manual way

First we do it manually, to make sure we get the results and feedback that we expect. This is to verify the functionality and simplify troubleshooting, if needed.

10.Choose a network you want to connect to and set the ESSID of your W­LAN interface:

#iwconfig wlan0 essid Perspektiv

11.Your WLAN interface should now be associated with the access point:

# iwconfig wlan0

wlan0 IEEE 802.11g ESSID:"Perspektiv"

Mode:Managed Frequency:2.412 GHz Access Point:

00:E0:63:50:98:B0

Bit Rate=1

Mb/s

Tx­Power=27 dBm

Retry min limit:7

RTS thr:off

Fragment thr=2352 B

Encryption

key:off

Link Quality=63/100 Signal level=­63 dBm Noise level=­58 dBm

Rx invalid

nwid:0

Rx invalid crypt:0

Rx invalid frag:0

Tx excessive retries:0 Invalid misc:0

Missed beacon:0

Now you are ready to start using your new interface. Most likely your first step will be to request IP setting from an DHCP server (dhclient ­1 wlan0). The next step is probably to permanent your preferences in the file

/etc/sysconfig/network­scripts/ifcfg­wlan0.

For further information on wireless networking under Linux, please refer to the numerous HOWTOs on the internet. A good place to start is

25

F8­x86_64 on the Acer Ferrari 3400LMi

http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wireless.html.

12.2.2 The GUI way

Once you have verified that you have the wireless network chip operational, as described in the previous sections, it is time to have a look at a GUI that will help you with all these steps and some other valuable tasks. The NetworkManager is a service with a corresponding applet that will dock into your panel. It is included in most distributions nowadays and is started by:

#service NetworkManager start

#service NetworkManagerDispatcher start

Try it out and play with it, if you like it and want it to start at system startup type:

#chkconfig ­­add NetworkManager

#chkconfig ­­add NetworkManagerDispatcher

#chkconfig ­­level 5 NetworkManager on

#chkconfig ­­level 5 NetworkManagerDispatcher on

13 Bluetooth

No special actions were needed for me to get Bluetooth up and running. It was truly amazing how easy it was. However, in order to be complete the details are summarized below.

13.1 Verify installation

Make sure that you have the bluez­utils package installed:

# rpm ­q bluez­utils bluez­utils­2.25­4

Also make sure that it is configured to start at boot time:

# chkconfig ­­list bluetooth

bluetooth

0:off 1:off 2:on

3:on

4:on

5:on

6:off

If not, you need to add it to the runlevel system:

# chkconfig ­­add bluetooth

Now watch your system log while you push the bluetooth button on the front of your laptop to activate your bluetooth circuities:

If you have come this far without any problems you are all set and ready to go.

13.2 Using a phone modem

To help get you started I have summarized the basic steps to hook up your bluetooth capable phone as a modem. I am using a Sony Ericsson P900 myself, but the steps are general so it should work for most bluetooth phones.

The steps below are exactly the same whether you intend to connect to a remote modem or connect over GPRS. When connecting over GPRS the phone also needs to be connected and recognized as a modem. It is the actual dialing later on in the process that differs.

With FC4 and FC5 I experienced some issues with the PIN­helper, i.e. the dialog window that prompts for a PIN code. However, no such issues has been observed with Fedora 8.

27

F8­x86_64 on the Acer Ferrari 3400LMi

13.2.1 Prepare the phone

First you need to configure your phone so it is available to your laptop. These steps may vary in detail depending on vendor and model, so the user manual for your phone may be handy.

Start by activating bluetooth on your phone and scan for other devices. You should now be able to see your computer.

Add your computer as a known bluetooth device to your phone. The phone will ask you for the pin code to connect to your computer. By default it is BlueZ, but you may modify it in/etc/bluetooth/hcid.conf. Use the same pin code when the computer prompts you whether to allow the incoming connection.

For convenience you should now configure your phone to allow this device (your computer) to connect without prompting for a pin code.

13.2.2 Prepare the laptop

Now we are ready to configure the laptop. Start by scanning for bluetooth devices in your surrounding:

# hcitool scan

Scanning ...

00:0A:D9:E9:D8:4F

S­Gs P900

The first field is the bluetooth address of your phone. The second field contains its given name. You should also be able to ping it by its address:

# l2ping 00:0A:D9:E9:D8:4F

Ping: 00:0A:D9:E9:D8:4F from 00:0E:9B:87:3B:90 (data size 44) ...

0 bytes from 00:0A:D9:E9:D8:4F id 0 time 60.87ms

0 bytes from 00:0A:D9:E9:D8:4F id 1 time 27.77ms

0 bytes from 00:0A:D9:E9:D8:4F id 2 time 36.54ms

3 sent, 3 received, 0% loss

Note that you should use your own phones address instead. (My phone will probably be out of range :­)

A short explanation of the command above: rfcomm connect 1 00:0A:D9:E9:D8:4F 4

|

|

|

/dev/rfcomm1 _|

|

|_ Channel for the Dial­up

Your phones

Networking service

bluetooth address

That is about it. Now your phone is analogue to an external modem connected to your virtual serial device, /dev/rfcomm1. Configure ppp to make use of it and you are done.

13.2.3 Static configuration

Ok, now what? Do I need to repeat all the steps above each time I want to use my phone as a modem? No, for convenience you may configure your system for all this to take place automatically. However, the method you should use depends a bit on your phone.

The preferred method is to edit the rfcomm.conf file so a/dev/rfcommX port automatically binds to the DUN service on your phone when the bluetooth service starts. This means that the virtual serial device will be created and properly configured, but not connected. The actual connection will happen automagically when the virtual serial device is accessed.

Edit the file /etc/bluetooth/rfcomm.conf to contain a section similar to this: