Acer 3400LMI User Manual

Size:
756.04 Kb
Download

F8­x86_64 on the Acer Ferrari 3400LMi

and look in /var/log/messages:

# tail /var/log/messages

...slmodemd: symbolic link `/dev/ttySL0' ­> `/dev/pts/6' created.

...slmodemd: modem `modem:1' created. TTY is `/dev/pts/6'

...slmodemd: Use `/dev/ttySL0' as modem device, Ctrl+C for termination.

Just as the system log says you may now find the modem at /dev/ttySL0. However, before starting to use the modem you should continue to read about a potential issue.

15.2 Potential issue

As mentioned in the beginning of this section there might be a potential problem. It was noticed in my previous attempts to get the modem working and it still exists. It all depends on your setup. If you get it to play there should be no problems, until your next update... Otherwise, you will likely notice something similar to the descriptions below.

15.2.1 Connecting

The problem might occur while establishing a connection. The best way to observe this is to start slmodemd manually with the debug flag set:

#

service slmodemd stop

 

Shutting down SmartLink Modem driver:

[ OK ]

#

slmodemd ­d=1 ­­alsa ­­country="SWEDEN" ­­nortpriority

 

Once the daemon is running in debug mode, dial the preferred number. The modem goes on­line, dials the number and the other end answers. Before the connection is established the daemon bails out during the negotiation with the other part.

It starts to flood the console with the following messages:

...

<212.190899> main: alsa xrun: try to recover...

<212.191065> main: alsa xrun: recovered. <212.191069> main: dev read = 0

<212.191185> main: alsa xrun: try to recover...

<212.191351> main: alsa xrun: recovered. <212.191355> main: dev read = 0

...

The slmodemd process is stopped with Ctrl­C orservice slmodemd stop from another console window.

15.2.2 Disconnecting

If you are lucky the modem might be connecting properly and you may use it to

41

F8­x86_64 on the Acer Ferrari 3400LMi

take care of business. Dialing and connecting works fine and the debug output looks ok. However, when the session is disconnected the debug output goes south. It will start to flood the console with the exact same messages as seen above during a connect. In this case we may actually use the modem but need a small tweak.

My temporary fix for the problem in this case is to restart the slmodemd service right after disconnecting a session. I configure my dial­up client, Kppp, to execute/etc/init.d/slmodemd restart upon disconnect. Unarguable this is a really dirty fix, but works quite well.

15.2.3 System hang

The issue reported above together with the fact that slmodemd runs with real­ time priority by default may be devastating. When the modem daemon goes insane it will hug your CPU and squeeze it all real hard.

If the daemon has real­time priority you will have a hard to get control over you system again and a forced shutdown might be the only way out.

Note: You shouldalways runslmodemd with the­­nortpriority option set. Failing to do so might hang your entire system.

16 References

This document is a revised version of FC4­x86_64 on the Acer Ferrari 3400LMi

http://ferrari.databa.se/3400/fc4/

Below are the links I found most useful when I originally sat up my Precious. Thank you guys:

XStrikeForce/HowToRandR12 ­ Debian Wiki Brice Goglin

http://wiki.debian.org/XStrikeForce/HowToRandR12

Linux IEEE 1394 drivers http://www.linux1394.org

Fedora Core 1 on the Acer Ferrari 3000LMi Evan

http://ferrari.kicks­ass.org/

SuSE 9.1 Pro on the Acer Ferrari 3000LMi Dirk Praet http://www.designisdead.com/ferrari/

Wireless LAN resources for Linux Jean Tourrilhes

42

F8­x86_64 on the Acer Ferrari 3400LMi

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

43

F8­x86_64 on the Acer Ferrari 3400LMi

Appendix A /etc/X11/xorg.conf

#Xorg 7.2 configuration for Acer Ferrari 3400 LMi

#Available at http://ferrari.databa.se/3400/f8/xorg.conf

Section "ServerLayout"

 

 

Identifier

 

"Default Layout"

 

 

Screen

0

"Screen0"

0 0

 

InputDevice

"Keyboard0"

"CoreKeyboard"

 

InputDevice

"Synaptics"

"CorePointer"

EndSection

 

 

 

Section "InputDevice"

 

 

Identifier

 

"Keyboard0"

 

 

Driver

 

"kbd"

 

 

Option

 

"XkbModel"

"pc105"

 

Option

 

"XkbLayout"

"se"

EndSection

 

 

 

Section "InputDevice"

 

 

Identifier

 

"Synaptics"

 

 

Driver

 

"synaptics"

 

 

Option

 

"Device"

"/dev/input/mice"

 

Option

 

"Protocol"

"auto­dev"

 

Option

 

"Emulate3Buttons"

"yes"

EndSection

 

 

 

Section "Monitor"

 

 

 

 

Identifier

 

"Internal Panel"

 

 

VendorName

 

"Acer"

 

 

ModelName

 

"Ferrari 3400 LMi"

 

#

Option

 

"PreferredMode"

"1400x1050"

EndSection

 

 

 

Section "Monitor"

 

 

 

 

Identifier

 

"External VGA Monitor"

#

Option

 

"LeftOf"

"Internal Panel"

EndSection

 

 

 

Section "Monitor"

 

 

 

 

Identifier

 

"External TV"

 

#

Option

 

"RightOf"

"Internal Panel"

EndSection

 

 

 

Section "Device"

 

 

 

 

Identifier

 

"Videocard0"

 

 

Driver

 

"radeon"

 

44

F8­x86_64 on the Acer Ferrari 3400LMi

 

 

Option

"Monitor­LVDS"

"Internal Panel"

 

Option

"Monitor­VGA­0"

"External VGA Monitor"

 

Option

"Monitor­S­video"

"External TV"

#

Option

"AccelMethod"

"XAA"

#

Option

"AGPMode"

"1"

#

Option

"ColorTiling"

"1"

 

Option

"EnablePageFlip"

"1"

EndSection

 

 

 

Section

"Screen"

 

 

 

 

Identifier

"Screen0"

 

 

Device

"Videocard0"

 

 

DefaultDepth

24

 

 

SubSection "Display"

 

 

Viewport

0 0

 

 

Depth

24

 

 

Virtual

3000 2000

 

 

EndSubSection

 

 

EndSection

 

 

 

45

F8­x86_64 on the Acer Ferrari 3400LMi

Appendix B – dual­head.sh

#!/bin/bash

#

#Available at http://ferrari.databa.se/3400/f8/dual­head.sh

#A script to manipulate connected graphical outputs,

#including TV­out. It includes the most common operations

#and may also be configured to run on an XF86Display event.

#Typically Fn­F5 or similar on a laptop.

#

#Prerequisites:

#This script will work with one graphics card only.

#Furthermore it will only work with two CRTCs,

#i.e. two outputs may be simultaneous active.

#

#Comments:

#In order to optimize performance and minimize flicker

#xrandr is at most called twice. Once to read the current

#state and once for setting the new state. Thus, some code

#may look strange at the first glance.

#

# By Sven­Göran Bergh, 2008­01­01

#

### Edit user settings here: ######################################

#

DEFAULTACTION="toggle" # May be changed with argument 1 DEFAULTSIDE="left" # May be changed with argument 2

#

###################################################################

### Edit hardware specific settings here: #########################

 

#

 

 

 

INTERNAL="LVDS"

# Specify the name

of

the

internal display

TVOUTPUT="S­video"

# Specify the name

of

the

TV­output

TVMODE="pal"

# Specify TV mode,

PAL or

NTSC

 

#

 

 

 

###################################################################

# Get X user

#XUSER=$(w | awk '$3 ~ /^:[0­9]$/ {print $1; nextfile}')

#Get X display (current or first running) DISPLAY=${DISPLAY:= \

$( w | awk '$3 ~ /^:[0­9]$/ {print $3; nextfile}' )}

#Quit if no X­server is running

[ "${DISPLAY}" ] || exit 1

46

F8­x86_64 on the Acer Ferrari 3400LMi

function usage() {

printf "Usage: %s [init|toggle|status|internal|tv [side]]\n" \ "`basename $0`"

}

ME=`basename $0 .sh`

# What to do? ACTION="${1:­$DEFAULTACTION}"

#Which side of $INTERNAL should the external output be shown? SIDE="${2:­$DEFAULTSIDE}"

#If invalid action or help, quit before calling xrandr

case `echo "$ACTION" | tr A­Z a­z` in

init | toggle | status | internal | tv )

# Recognized actions. Do nothing and continue...

;;

help | usage ) usage

exit 0

;;

* )

printf "%s: Unknown operation, %s\n" "$ME" "$ACTION" usage

exit 1

;;

esac

# Get information about all outputs ALLINFO=( $( \

xrandr ­q \

| awk ­­ '/connected/ { printf " %s", $1;

if ($2 !~ /dis/) { if ($3 ~ /[0­9]+x/)

printf "@%s", $3; else

printf "@";

}

}' \

))

#Initialize some useful variables

for (( i=0; i<${#ALLINFO[*]}; i++ )) {

#Array with all outputs ALLOUT[$i]=$( \

echo "${ALLINFO[$i]}" \

| awk ­F@ ­­ '{print $1}' \

)

#Array with all connected outputs CONCTD[$i]=$( \

47

F8­x86_64 on the Acer Ferrari 3400LMi

echo "${ALLINFO[$i]}" \

| awk ­F@ ­­ '/@/ {print $1}' \

)

#Array with all active outputs ACTIVE[$i]=$( \

echo "${ALLINFO[$i]}" \

| awk ­F@ ­­ '/@[0­9]+x/ {print $1}' \

)

#Array with all resolutions

ALLRES[$i]=$( \

echo "${ALLINFO[$i]}" \

| awk ­F@ ­­ '{print $2}' \ | awk ­F+ ­­ '{print $1}' \

)

#Array with all positions ALLPOS[$i]=$( \

echo "${ALLINFO[$i]}" \

| awk ­F@ ­­ '{print $2}' \

| awk ­F+ ­­ '/+/ {print $2 "+" $3}' \

)

#Index for the internal output

[ "${ALLOUT[$i]}" == "$INTERNAL" ] && INTNDX=$i

# Index for the currently active external output

["${ACTIVE[$i]}" ­a "${ACTIVE[$i]}" != "$INTERNAL" ] \

&&CURNDX=$i

}

CURNDX=${CURNDX:­$INTNDX}

CURRENT=${ALLOUT[$CURNDX]}

case `echo "${SIDE}" | tr A­Z a­z` in left)

LOCATION="­­left­of $INTERNAL"

;;

right)

LOCATION="­­right­of $INTERNAL"

;;

top|above)

LOCATION="­­above $INTERNAL"

;;

bottom|below)

LOCATION="­­below $INTERNAL"

;;

esac

function run() { EXEC="$*"

logger ­t $ME "Executing: $EXEC" $EXEC | logger ­t $ME

}

function init() {

48

F8­x86_64 on the Acer Ferrari 3400LMi

# Set load detection on all external outputs for out in ${ALLOUT[*]}; do

[ "$out" != "$INTERNAL" ] && \

INIT="$INIT ­­output $out ­­set load_detection 1" [ "$out" == "$TVOUTPUT" ] && \

INIT="$INIT ­­set tv_standard $TVMODE"

done

run xrandr $INIT

}

function status() {

printf "%­10s%­11s%­8s%­10s%­10s\n" \

"Output" "Connected" "Active" "Position" "Resolution" for (( i=0; i<${#ALLOUT[*]}; i++ )) {

[ "${CONCTD[$i]}" ] && c="yes" || c="no" [ "${ACTIVE[$i]}" ] && a="yes" || a="no" printf "%­13s%­9s%­7s%­10s%­10s\n" \

"${ALLOUT[$i]}" "$c" "$a" \ "${ALLPOS[$i]}" "${ALLRES[$i]}"

}

}

function internal() {

#Internal output always active INT="­­output $INTERNAL ­­auto ­­pos 0x0"

#Turn off currently active external output [ "$CURRENT" != "$INTERNAL" ] && \

OFF="­­output $CURRENT ­­off"

run xrandr $INT $OFF

}

function tvout() {

# If TV­output already active, exit

[ "$CURRENT" == "$TVOUTPUT" ] && exit 0

#Internal output always active INT="­­output $INTERNAL ­­auto"

#Turn off currently active external output [ "$CURRENT" != "$INTERNAL" ] && \

OFF="­­output $CURRENT ­­off"

TV="­­output $TVOUTPUT ­­auto $LOCATION"

run xrandr $INT $TV $OFF

}

function toggle() {

# Go to the next connection mode in the toggle sequence:

# LVDS (single) =>

49

F8­x86_64 on the Acer Ferrari 3400LMi

#

LVDS+S­video (mirror)

=>

#LVDS+S­video (side­by­side) =>

#

LVDS+VGA­0

(mirror)

=>

#

LVDS+VGA­0

(side­by­side)

=>

#

LVDS

(single)

=>

#...

#Connection modes that include not connected outputs are skipped.

#Ex: with only VGA­0 connected it is only three connection modes:

if [ "$CURRENT" != "$INTERNAL" ­a \

"${ALLPOS[$INTNDX]}" == "${ALLPOS[$CURNDX]}" ]; then NEXT=$CURRENT

else

for (( i=0; i<${#ALLOUT[*]}; i++ )) {

[ "${CONCTD[$i]}" == "${CURRENT}" ] && break

}

until [ "$NEXT" ]; do

i=$(( ($i+1)%${#ALLOUT[*]} )) NEXT=${CONCTD[$i]}

done

fi

#Internal output always active INT="­­output $INTERNAL ­­auto"

#Turn off currently active external output

[ "$CURRENT" != "$INTERNAL" ­a "$CURRENT" != "$NEXT" ] && \ OFF="­­output $CURRENT ­­off"

#Turn on next connected external output [ "$NEXT" != "$INTERNAL" ] && \

ON="­­output $NEXT ­­auto"

#If mirror mode, reposition internal output.

#Otherwise position external output

["$NEXT" != "$CURRENT" ] \

&&INT="$INT ­­pos 0x0" \ || ON="$ON $LOCATION"

run xrandr $INT $OFF $ON

}

case `echo "$ACTION" | tr A­Z a­z` in init)

init

;;

toggle) toggle

;;

status) status

;;

50