Gentoo Wiki ArchivesGentoo Wiki

Samsung_Q1-Ultra

This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

Contents

Introduction

I recently loaded Gentoo on my Samsung Q1-Ultra UMPC. Although the install overall was very smooth, there were some issues and I hope to outline my experience here so others may have a framework from which to begin.

Hardware Specs

Listed below are some specs for the actual model we will be discussing here:

  • Intel® Ultra Mobile Processor A110 800MHz Clock 512Kb L2 Cache/400MHz FSB
  • Installed Memory: 1 GB DDR2 400MHz (upgradable to 2 GB)
  • Storage: 40 GB, 1.8", 4200 RPM (no built in CD/DVD)
  • Display: 7" WSVGA Touch Screen LCD 1024 x 600 resolution, LED Backlit - 300 nits Brightness
  • Graphics Processor: Intel® GMA950, 128MB Shared Memory
  • Battery Type: 4-cell Li-Ion (Prismatic) Battery, 29.6wh Capacity ~ 4.5 hours Battery Life
  • Network Support: Wired Ethernet LAN 10/100 BaseTX & Wireless LAN 802.11 b/g Wi-Fi
  • Input Devices: Keyboard, Touch-screen, 8-way stick
  • Connectivity: 2 USB (bootable), 1 VGA out connector
  • Sound: 2 speakers (1.5 watts), array Microphones (Intel HD Audio Support)
  • Weight 1.52 lbs
  • Dimension (W x D x H): 8.96" x 4.88" x 0.93"

Please Note: There is some confusion on my part as to the model names. As far as I can see the Q1-Ultra is also known as Samsung Q1U NP-Q1UAY01, Samsung NP-Q1UAY01, Samsung Q1U, Samsung Q1U EL, Samsung EL. Here is a direct link for more information, and pictures of the device from the Samsung website: Samsung QU1-EL

Another Wikipedia article dedicated to Samsung Q1's *Note this link may read like an advertisment.

The good news is all of the hardware works very well in gentoo, with a bit of tweaking, ofcourse.

Detailed Hardware Specs

lspci

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
01:00.0 Ethernet controller: Atheros Communications, Inc. Unknown device 001c (rev 01)
02:05.0 Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)

lsusb

The touchscreen registers as a USB device. It is an eGalax TouchScreen and is well supported in Linux.

Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 003 Device 002: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Bus 003 Device 001: ID 0000:0000


cpuinfo

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 13
model name      : Genuine Intel(R) processor               800MHz
stepping        : 8
cpu MHz         : 800.000
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe est tm2
bogomips        : 1597.61
clflush size    : 64

Upgrades & Notes

Memory Upgrade

Warning: Opening the case of your Q1 will most probably void your warranty with Samsung. Only Proceed with upgrading system components if you are ok with voiding the warranty!

I upgraded the memory to 2GB from the factory shipped 1GB. First off Vista really needs 2GB to function properly and it seemed easy enough to do. You must purchase a 2GB PC2-3200 (DDR 333) or higher 200 DIM module. A really nice easy to understand video tutorial is here.

The memory I purchaed was OverClockers - model #OCZ2MV6672G. This was a bit overpriced but available where I live. Others have had success with other brands espeically Patriot and Kingston.


Installation

For this section of the guide I will be discussing how I performed a Gentoo installation specifically for the Samsung Q1-Ultra using the Gentoo Handbook mixed with a bit of my own methods and procedures when performing a Gentoo installation. I welcome your comments, additions and/or corrections.

If you feel you are ready to dive in then read on...

Starting Fresh

I wanted to be sure I had a clean system to work with so I basically started with a freshly formatted hard drive. You can preserve your current OS and re-partition using existing space. I assume you know where to find information on that. If not search here.

Be sure to back up any important information you may have on the hard disk before you proceed!

Getting Ready

Since there isnt a CD/DVD drive built in, in order to proceed you can obtain either of the following:


Option 1 - USB CD or DVD drive. I believe any newer model should work.


Option 2 - Home-made USB drive utilizing a spare drive and a USB->IDE connector.
Tip: Make sure it has a 3.5" IDE connector and an additional external power supply to power the CD/DVD drive.


Option 3 - A bootable USB Stick or hard drive.
I have no experience with Gentoo on USB stick, you can research that here.


There are two bootable USB ports on this model and the Phoenix BIOS does allow for setting boot device order. Additionally a pre-boot screen allows you to press a button "v on the built in keyboard" to select the boot device if you would rather not mess with the bios settings.

I had a spare internal Toshiba DVD drive along with a powered USB to IDE connector so I chose option 2.

Gentoo Handbook

You can use the x86 Gentoo install guide. The Broadcom ethernet card works with the 2007.0-r1 Gentoo live CD.

For the most part everything should be as if you were setting up a normal laptop PC with a few important changes/additions. I will outline this information below.

Testing ~x86

You can use ~x86 packages wherever needed. I do not run the entire system ~x86 as it can cause some really bad issues.

I have not included information in many places in this guide on which programs I use that are ~x86. I do always test ~x86 first when installing certain programs.

For those not familiar with Portage & Gentoo, getting the latest (possibly unstable) version of a package is achieved by adding the package to your package.keywords file:

Example of adding a package to testing

nano -w /etc/portage/package.keywords

<full package name> ~x86

When you go to emerge the package it will now pull the latest available version in Portage. BE CAREFULL!

The most signifigant keyworded package I use is the entire KDE set of programs, which at the time of this writing is 3.5.8. Enabling KDE 4 Beta is an entirely different process (unmasking and overlays) and most probably involves multiple dependancies.

Preparing the Hard Disk

I decided to dual boot Vista and Gentoo. The internal hard drive is only 40GB and it is best if you partition at minimum 15GB(?) for the vista install. Gentoo doesn't need a huge amount of hard drive space (depending on what you need/want). This is what I chose almost a 50/50 split of the hard drive:

fdisk /dev/hda

Disk /dev/hda: 40.0 GB, 40000536576 bytes
255 heads, 63 sectors/track, 4863 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        2433    19543041    7  HPFS/NTFS
/dev/hda2            2434        2440       56227+  83  Linux
/dev/hda3            2441        2565     1004062+  82  Linux swap / Solaris
/dev/hda4            2566        4863    18458685   83  Linux
Warning: If you decide to use Vista in a dual boot it must be hda1. Otherwise Vista will not allow you to install.

What I did was install Vista first. This way I didnt have issues with Vista overwriting the MBR and Grub. If you want to install Gentoo first then you will need to load Grub again from the chroot using the Live cd.

Default profile

I am using the Desktop profile instead of the generic. I find it is better suited for my needs.

ls -FGg /etc/make.profile
lrwxrwxrwx 1 54 Oct 14 07:44 /etc/make.profile -> /usr/portage/profiles/default-linux/x86/2007.0/desktop/

Make.conf

The closest processor match I could find is the Pentium-m. You can use whatever use flags you need, but this processor doesn't support pni (sse3).

I added some comments and spacing to ease readability.

CFLAGS="-march=pentium-m -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
CHOST="i686-pc-linux-gnu"
MAKEOPTS="-j2"

##Modify as needed##
GENTOO_MIRRORS="http://gentoo.osuosl.org/ http://distro.ibiblio.org/pub/linux/distributions/gentoo/"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"

##for my local portage rsync mirror##
#SYNC="rsync://xxxxx/gentoo-portage"

##We will enable this later##
#PORTDIR_OVERLAY="/usr/local/layman/xeffects"
#PORTDIR_OVERLAY="/usr/local/portage"

##Nice log stuff##
PORTAGE_ELOG_CLASSES="warn error log"
PORTAGE_ELOG_SYSTEM="save"
PORT_LOGDIR="/var/log/portage"

##Later we can make this 15 or even 18##
PORTAGE_NICENESS="3"

##You can add ccache to features and enable the 2 options below if you prefer##
FEATURES="parallel-fetch sandbox fixpackages distlocks" 
#CCACHE_DIR="/var/tmp/ccache"
#CCACHE_SIZE="1G"

AUTOCLEAN="yes"

##You will need evdev and void for the Touchscreen##
INPUT_DEVICES="keyboard mouse evdev void"

##i810 is the video driver even though we have a 950GM##
VIDEO_CARDS="i810"

##I use KDE##
USE="wifi clamav ieee1394 avahi arts acpi apache2 bash-completion bluetooth sse sse2 \
     -ldap ccache cups dvdread flac flash ftp gd gmail -gnome hal highlight \
     imagemagick innodb java javascript kdeenablefinal gstreamer akode \
     kdehiddenvisibility nls mp3 vorbis lm_sensors logrotate gphoto2 \
     mailwrapper madwifi mozilla music mysql mysqli nsplugin nptl \
     postgres samba ssl snmp sounds texteffect tiff usb vhosts gimp \
     xcomposite boost threads gtk mono qt3 qt4 kde dvd alsa cdr milter \
     truetype type1 X dbus kde ogg jpeg gif png php scanner mmx gs fpx \
     yahoo opengl spell ppds aac musicbrainz fame ipod ifp real graphviz\
     cddb esd encode live mad png quicktime win32codecs sasl bl lame \
     dts dv encode dvdnav iconv libcaca lzo mp2 vorbis rar srt speex \
     musepack openal radio svga tga theora tivo vidix x264 xanim xv \
     a52 aalib modplug mtp njb daap xvid xvmc zoran vorbis-psy imlib \
     enca wavpack css ffmpeg sndfile vcd imagemagick fame slang amr zlib \
     curl lcms bzip2 fontconfig mjpeg extrafilters mmap smp wmf pulseaudio \
     sound tk jingle sms statistics connectionstatus contactnotes texteffect \
     irc highlight alias history nowlistening addbookmarks autoreplace xattr mp4 aac"

##change as needed##
LINGUAS="en en_US"

##Needed for things like Skype##
ALSA_PCM_PLUGINS="adpcm alaw copy dshare dsnoop extplug file hooks ladspa lfloat linear meter mulaw multi null rate route share shm"

Kernel

The kernel is pretty straight forward. I am using the latest stable Gentoo-Sources 2.6.22-gentoo-r8. Below are only the hardware specific items, fill in other needed options as neccesary:

Processor

You want to be sure to use Tickless System and set the Timer frequency to 1000HZ. The processor will feel more responsive this way.

Linux Kernel Configuration: Processor
Processor type and features  --->
  [*] Tickless System (Dynamic Ticks)
  [*] High Resolution Timer Support 

Processor family (Pentium M)  --->
  [*] Pentium M

  [*] Local APIC support on uniprocessors
      High Memory Support (4GB)  --->
      Memory split (3G/1G user/kernel split)  --->
      Timer frequency (1000 HZ)  ---> 

Power management options (ACPI, APM)

Some specific ACPI related items:

Linux Kernel Configuration: Power management options (ACPI, APM)
 [*] Power Management Support  
 [ ]   Legacy Power Management API (DEPRECATED)                                                  
 [ ]   Power Management Debug Support  
 [*]   Driver model /sys/devices/.../power/state files DEPRECATED) 
 [*]   Software Suspend (Hibernation)
       (/dev/hda3) Default resume partition                                                     
ACPI (Advanced Configuration and Power Interface) Support  ---> 
 [*] ACPI Support                                                                          
 [*]   Sleep States   
 
 [*]   Procfs interface (deprecated)                                    
 <*>   AC Adapter                                                    
 <*>   Battery                                                     
 <*>   Button                                                  
 <*>   Video                                                   
 <*>   Fan                                                     
                                                   
 <*>   Processor                                                 
 <*>     Thermal Zone                                               
 <*>   ASUS/Medion Laptop Extras                             
                                                
 [*]   Power Management Timer Support                            
       
CPU Frequency scaling  --->
 [*] CPU Frequency scaling  
 <*>   CPU frequency translation statistics 

 <*>   CPU frequency translation statistics  
 [*]   CPU frequency translation statistics details 
 <*>   'powersave' governor   
 <*>   'userspace' governor for userspace frequency scaling 
 <*>   'ondemand' cpufreq policy governor      
 
 <*>   ACPI Processor P-States driver
 <*>   Intel Enhanced SpeedStep    
 [*]   Use ACPI tables to decode valid frequency/voltage (deprecated)         
 [*]   Built-in tables for Banias CPUs              
 <*>   Intel Speedstep on ICH-M chipsets (ioport interface)        
 <*>   Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)      
 <*>   Intel Pentium 4 clock modulation       
 [*]   Relaxed speedstep capability checks

Touchscreen Kernel

The touchscreen is a USB device. We will use the evtouch driver and it works great.


Linux Kernel Configuration: Input Device support
Input Device Support --->
  [*] Touchscreen interface 
      (1024)  Horizontal screen resolution  
      (600)   Vertical screen resolution 
  <M>   Event interface 
  [*]   Touchscreens  --->
        <M>   USB Touchscreen Driver
        [*]     eGalax, eTurboTouch CT-410/510/700 device support

Graphics

See this guide.

Intel HD Audio

We will be using the HD Audio Alsa Kernel driver.

Linux Kernel Configuration: Sound
Sound  --->
Advanced Linux Sound Architecture  --->
  PCI Devices  --->
   <M> Intel HD Audio

Grub

I added some additional options to the boot line. Just remember to enable vesa-tng stuff if you want to use the extra kernel options. I default to Vista in this example.

nano -w /boot/grub/grub.conf


# Which listing to boot as default. 0 is the first, 1 the second etc.
default 2
# How many seconds to wait before the default listing is booted.
timeout 30
# Nice, fat splash-image to spice things up :)
# Comment out if you don't have a graphics card installed
splashimage=(hd0,1)/boot/grub/splash.xpm.gz

title=Gentoo Linux
# Partition where the kernel image (or operating system) is located
root (hd0,1)
kernel /boot/kernel-2.6.22-gentoo-r8 root=/dev/hda4 video=vesafb:mtrr:3,ywrap,1024x600-32@60 resume=/dev/hda3

## You can try this, Notice the acpi lines. They are not needed however ## 
title=Gentoo Linux Acpi Test
# Partition where the kernel image (or operating system) is located
root (hd0,1)
kernel /boot/vmlinuz-2.6.22-gentoo-r8 root=/dev/hda4 video=vesafb:mtrr:3,ywrap,1024x600-32@60 acpi_osi=!Linux acpi_os_name="Windows 2006" resume=/dev/hda3

# The next four lines are only if you dualboot with a Windows system.
# In this case, Windows is hosted on /dev/hda6.
title=Windows Vista
rootnoverify (hd0,0)
makeactive
chainloader +1

Additional Programs

I emerged the following additional programs:

ACPI

emerge acpi acpid -av && rc-update add acpid default

sys-power/acpi-0.06-r5 
sys-power/acpid-1.0.6-r1 

Powertop & cpufreqd

Powertop allows you to monitor the battery usage and top processes. It is a nice program to see what is using the most proccesing time.

Cpufreqd will automatically put the processor to a lower frequency when usage is low or on battery power.

You will need to edit the config file to enable the ondemand scheme and set the GOVERNOR variable to "ondemand":

nano -w /etc/conf.d/cpufrequtils
GOVERNOR="ondemand"
Note:

I have been unable to confirm speed-step is 100% working. Actually it may be working, but I only have 2 speeds 600mhz and 800mhz. This is fine by me, however I thought the processor may have additional increments.

emerge powertop cpufreqd -av && rc-update add cpufreqd default
sys-power/powertop-1.8
sys-power/cpufreqd-2.1.1


zsh configuration

I use zsh since with the limited QWERTY keyboard it makes working using the cli much easier.

emerge zsh zsh-completion
app-shells/zsh-4.3.4  
app-shells/zsh-completion-20060618  

Then you will need to edit the config file. My example file is below:

nano -w /etc/zsh/zshrc

#!/bin/zsh

# completion
autoload -U compinit
compinit

# correction
setopt correctall

# prompt
autoload -U promptinit
promptinit
prompt gentoo

# auto change dir
setopt autocd

# extended regular expression support
# setopt extendedglob

setopt hist_ignore_all_dups
setopt hist_ignore_space

HISTFILE=~/.histfile
HISTSIZE=2000
SAVEHIST=2000

setopt beep
setopt emacs
setopt notify
zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'
zstyle ':completion::complete:*' use-cache 1

# <PageUp> & <PageDown>
bindkey "^[[A" 'history-beginning-search-backward'
bindkey "^[[B" 'history-beginning-search-forward'
bindkey "^R"   'history-incremental-search-backward'
alias ls="ls --color=auto"
alias l="ls -la --color=auto"
alias l.='ls -d .[a-zA-Z]* --color=auto'
alias ll="ls -l --color=auto"
alias lsd="find . -maxdepth 1 -type d|columnize"
alias d="find . -maxdepth 1 -type d|columnize"

eval `dircolors -b`
export ZLS_COLORS=$LS_COLORS
bindkey '^[[2~' beep                   # Insert
bindkey '^[[3~' delete-char            # Del
bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
bindkey -e


# colorize the output of grep commands
alias grep='grep --colour=auto'
alias egrep='egrep --colour=auto'

# acts like a colorized "less"
alias vmore="vim -R -u ~/.vimrc -u ~/.vimrc.more"

# show the description of USE flags
show-use () {
    for flag in $@
    do
        grep -h $flag /usr/portage/profiles/use.*
    done
}

alias emerge-update='emerge -uDN world -av'

Then you will need to do the following as Root, change "userlogin" to your usernames on the system including root:

usermod -s /bin/zsh userlogin 
usermod -s /bin/zsh root

Some cool features:

  • Tab-completion on your emerge lines (live portage search)
  • Ability to change directory by name instead of adding the 'cd' command
  • Aliases - I give an example of one called emerge-update. Basically it is the same as typing "emerge -uDN world -av"

Post Install (Optional)

Once you have Gentoo installed and you have booted up and emerged some additonal programs you have the option of one additional install step. I have always done this with my systems and I know many of you will think I am crazy. Every bit of speed helps on a slow processor like this.

emerge --sync
emerge -e system && emerge -e world && etc-update

Do this before you go to sleep beacuse it will likely take about 8 - 10 hours on this machine.

I like to do this becuase it builds the entire system using the appropriate CFLAGS variables and your pre-defined USE flags. Additionally I have always felt it helps avoid some build dependancy issues and makes for a speedy system. Spend a bit of time up front and avoid some issues later on.

If you fail on any packages research the issue on the forums, fix it then

emerge --resume

So you dont have to start all over again.

Drivers

Intel GMA 950

See this guide.

Atheros Wifi

Others have had issues with getting this card to work using the madwifi-ng drivers. I have no issues and I am using wpa2 encryption. The card is not recognized by lspci, however the actual card appears to use the Atheros AR5006EG chipset.

emerge madwifi-ng madwifi-ng-tools -av

Add the following modules IN THIS EXACT ORDER nano -w /etc/modules.autoload.d/kernel-2.6

wlan_scan_sta
wlan_wep
ath_pci

An example using WPA encryption:

nano -w /etc/conf.d/net

#Wired
config_eth0=( "dhcp" )
#dhcp_eth0="nodns nontp nonis"

#Wireless
config_ath0=( "dhcp" )
wpa_supplicant_ath0="-Dwext"
modules_ath0=( "wpa_supplicant" )

nano -w /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=1
fast_reauth=1
ap_scan=2

network={
        ssid="<enter SSID in quotes>"
        key_mgmt=WPA-PSK
        pairwise=TKIP
        group=TKIP
        psk="<secret passkey in quotes>"
        priority=10
}

# This is a network block that connects to any unsecured access point.
# We give it a low priority so any defined blocks are preferred.
network={
        key_mgmt=NONE
        priority=-9999999
}

If you are having trouble connecting you can do some research here.

eGalax Touchscreen

Warning: You may now use the new xorg-server-1.4 builds in portage - see below.


Tip: Be sure you have a working X install before attempting to emerge the touchscreen drivers.

You can easily get the driver source from here. Also there is some configuration instructions as well. However I always like to do things the "Gentoo Way" whenever possible.

Since the evtouch driver isn't in portage, this took some work. I had found an ebuild while searching google, however it didn't work and I needed to modify it and create my own ebuild. This took a bit of work. As mentioned the driver currently only works with modular xorg-server-1.3.

Set-up your own portage overlay

Add the overlay by uncommenting the /usr/local/portage line as per the make.conf example given above:

Nano -w /etc/make.conf

##We will enable this later##
#PORTDIR_OVERLAY="/usr/local/layman/xeffects"
PORTDIR_OVERLAY="/usr/local/portage"

Make the slot in the overlay for the evtouch ebuild & populate the ebuild

mkdir  -p /usr/local/portage/x11-drivers/xf86-input-evtouch/
cd /usr/local/portage/x11-drivers/xf86-input-evtouch/

xf86-input-evtouch-0.8.7.ebuild

The latest source version available is 0.8.7. I am sorry I don't have a source to host this ebuild to download, but you can just copy and paste this to a file for now.

Note: UPDATE: February 2008 - I found a patch that works with the latest versions of Xorg-Server in portage. Please see link to download the patch. Updated ebuild is listed below.

Go here to download new patch - be sure to save file in the "files" directory as xf86-input-evtouch-0.8.7-misc.patch [1]

nano -w xf86-input-evtouch-0.8.7-r1.ebuild

# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

# Must be before x-modular eclass is inherited
SNAPSHOT="yes"

inherit eutils x-modular

DESCRIPTION="Evtouch input driver"
KEYWORDS="~amd64 ~arm ~x86"
RDEPEND=">=x11-base/xorg-server-1.0.99"
DEPEND="${RDEPEND}
        x11-proto/inputproto
        x11-proto/randrproto
        x11-proto/xproto"

SRC_URI="http://stz-softwaretechnik.com/~ke/touchscreen/${P}.tar.bz2"
RESTRICT="mirror"

IUSE="evcalibrate"

src_unpack() {
     unpack ${A}
     cd "${S}"
     epatch "${FILESDIR}"/xf86-input-evtouch-0.8.7-misc.patch
}

src_compile() {

        einfo "Configuring"
        econf \
                $(use_enable evcalibrate) || die "Configure failed"

        einfo "Compiling"
        emake || die "emake failed"
}
Note: This patch is tested by me on Gentoo. It works very well. If you look at the patch file you will see notes about new features such as drag. I have not tried to implement any of the features.

Emerging evtouch

ebuild xf86-input-evtouch-0.8.7.ebuild digest
echo "x11-drivers/xf86-input-evtouch ~x86" >> /etc/portage/package.keywords

This command should download the source file and make the package available to emerge.

emerge xf86-input-evtouch

Be sure to update your xorg.conf as per the example given below.

udev configuration

You will want to have a static node available for the touchscreen device, since the event node is subject to change.

nano -w /etc/udev/rules.d/60-touchscreen.rules

# udev rules for USB touchscreen devices

KERNEL=="event[0-9]*", SYSFS{idVendor}=="0eef", SYSFS{idProduct}=="0001", SYMLINK+="input/touchscreen"

evtouch kernel module

You need to load the kernel module before the touchscreen is available.

nano -w /etc/modules.autoload.d/kernel-2.6

usbtouchscreen

Calibration

You should not need to modify the calibration settings in my xorg.conf. However, if you would like to get new values then you can run the calibration as follows (As taken from the README.calibrate File within the sources):

Uncomment the following in xorg.conf

Option "Calibrate" "1"
cd /usr/lib/xf86-input-evtouch
./calibrate.sh
Now you can start the calibration program "calibrate.sh" from a text
console. X MUST not run during this step.

If you start "calibrate.sh" a white screen with 9 black crosses should
appear.

The first calibration step consists of finding the maximum and minimum
coordinates. To do this just touch the screen with the pen along all
edges and corners. DO NOT KLICK -- Just move the pen accross the
screen. After your first touch of the screen two text lines should
appear somewhere in the upper left area of the screen. For you only
the first line is interesting. This line shows the currently found
minimum and maximum values of the X- and Y-coordinates.

It is always safe to run calibration.sh with root permissions. If
something does not work all right with the calibration (e.g. The
numbers on the screen do not move) try running calibration.sh as
root.

Keep moving the stick along the edges of your screen until you think
you have found the maximum and the minimum coordinates. Now press
return to go on to the next step of the calibration.

Now you can do the fine-tuning of the touchscreen. After you have
pressed return the upper left cross should turn red. Begin touching
the red cross on the screen. If the pen is EXACTLY over the red cross
press the left mouse button. Now the next cross should turn
red. Repeat this process with all crosses on the screen. If you
accidently click twice you can go one step back by pressing the right
mouse button.

After you have clicked on the last red cross the calibration program
writes the file "out.txt" to disk. This file contains the calibration
parameters which have to be merged into "XF86Config-4". Open both
files (out.txt and XF86Config-4) in your favourite editor and merge
the lines in "out.txt" into the "InputDevice"-section of your
touchscreen.

The x- and y-values in out.txt should be reasonable low numbers
(something between -20 to 20 maybe even lower). These values are the
amount of pixels the cursor has to be corrected on a certain
position. So it makes no sense to merge out.txt to your XF86Config-4
if there are completely insane numbers in out.txt.

Erase the line "Option "Calibrate" "1"" or disable it with a "#"-sign
in front of it.

That's it.

You have (hopefully) sucessfully calibrated your touchscreen.

Tap Options

I used a nice tip from the Ubuntu Repositories and enabled a right click. It takes a bit getting used too, but works well once you get the taps right.

To right click do a long tap and then a quick short tap and hold. You can only test this after you have your KDE desktop loaded.

Intel HD Audio

We will use the in-kernel ALSA Drivers. Be sure that you take a look at the kernel config section above and enable the Intel HD Audio as a module.

The rest of the set-up instructions are found here.

Be sure to do the following before you reboot:

update-modules -f

Also note that the snd-hda-intel module supports different models (codecs) which exposes different functionality depending on the model. The default "auto" only gives very basic control over the sound on the Q1u, and also means the speakers won't automatically cut-out when you plug headphones in.

My Q1u appears to have an ALC262 chipset which appears to support the following models:

fujitsu        Fujitsu Laptop
hp-bpc         HP xw4400/6400/8400/9400 laptops
hp-bpc-d7000   HP BPC D7000
benq           Benq ED8
hippo          Hippo (ATI) with jack detection, Sony UX-90s
hippo_1        Hippo (Benq) with jack detection
basic          fixed pin assignment w/o SPDIF
auto           auto-config reading BIOS (default)

Under 2.6.23 kernel, I originally found the "hippo" model most successful, though the "basic" model might be useful if you want to be able to have speakers and headphones enabled at the same time, e.g:

modprobe snd-hda-intel model=hippo
modprobe snd-hda-intel model=basic

Unfortunately, I was unable to get the microphone(s) working at all with any of the available models in the 2.6.23 kernel.

As of the 2.6.25 kernel, it looks like better support of the Q1 Ultra was added (i.e. linux-2.6.25/Documentation/sound/alsa/ALSA-Configuration.txt):

ALC262

fujitsu	Fujitsu Laptop
hp-bpc	HP xw4400/6400/8400/9400 laptops
hp-bpc-d7000	HP BPC D7000
hp-tc-t5735	HP Thin Client T5735
hp-rp5700	HP RP5700
benq		Benq ED8
benq-t31	Benq T31
hippo		Hippo (ATI) with jack detection, Sony UX-90s
hippo_1	Hippo (Benq) with jack detection
sony-assamd	Sony ASSAMD
ultra		Samsung Q1 Ultra Vista model
basic		fixed pin assignment w/o SPDIF
auto		auto-config reading BIOS (default)
modprobe snd-hda-intel model=ultra

But it caused my Headphone volume to become a mute-switch only, and to be very quiet compared with the Hippo model; YMMV.

You might want to add a file in /etc/modprobe.d/ to automatically set this option:

option snd-hda-intel model=ultra

or

option snd-hda-intel model=hippo

Bluetooth

Vimicro webcam

Hardware buttons and keyboard

Sensors and fan control

Xorg

Warning: UPDATE: February 2008 - You can now emerge the new xorg-server-1.4 builds in portage! There is a new "unofficial" evtouch driver patch that works .

xorg.conf

Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice "dummy"
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice "touchscreen"
#       Option "AIGLX" "true"
EndSection

Section "Files"
   RgbPath     "/usr/share/X11/rgb"
   FontPath    "/usr/share/fonts/local"
   FontPath     "/usr/share/fonts/OTF"
   FontPath    "/usr/share/fonts/misc:unscaled"
   FontPath    "/usr/share/fonts/Type1"
   FontPath    "/usr/share/fonts/TTF"
   FontPath    "/usr/share/fonts/corefonts"
   FontPath    "/usr/share/fonts/freefonts"
   FontPath    "/usr/share/fonts/sharefonts"
   FontPath    "/usr/share/fonts/terminus"
   FontPath    "/usr/share/fonts/ttf-bitstream-vera"
   FontPath    "/usr/share/fonts/unifont"
   FontPath    "/usr/share/fonts/75dpi:unscaled"
   FontPath    "/usr/share/fonts/100dpi:unscaled"
   FontPath    "/usr/share/fonts/artwiz"
EndSection

Section "Module"
        Load  "ddc"
        Load  "glx"
        Load  "extmod"
        Load  "xtrap"
        Load  "record"
#       Load  "GLcore"
        Load  "dbe"
        Load  "dri"
        Load  "freetype"
        Load  "type1"
EndSection

Section "DRI"
        Group 0
        Mode 0666
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
EndSection

Section "InputDevice"
    Identifier "dummy"
    Driver "void"
    Option "Device" "/dev/input/mice"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mouse1"
        Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "InputDevice"
    Identifier "touchscreen"
    Driver "evtouch"
    Option "Device" "/dev/input/touchscreen"
    Option "DeviceName" "touchscreen"
        Option        "MinX"        "145"
        Option        "MinY"        "193"
        Option        "MaxX"        "3973"
        Option        "MaxY"        "3898"
        Option "ReportingMode" "Raw"
        Option "Emulate3Buttons"
        Option "Emulate3Timeout" "50"
        Option "SendCoreEvents" "On"
        Option "TapTimer" "200"
        Option "LongTouchTimer" "400"
#--------------Not Used-------------#
#       Option "maybetapped_action" "click"
#       Option "maybetapped_button" "1"
#       Option "longtouch_action" "down"
#       Option "longtouch_button" "3"
#       Option "Calibrate" "1"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        Option        "DPMS"
#       DisplaySize         270 158
#       Option "DPI" "96 x 96"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "NoAccel"                   # [<bool>]
        #Option     "SWcursor"                  # [<bool>]
        #Option     "ColorKey"                  # <i>
        #Option     "CacheLines"                # <i>
        #Option     "Dac6Bit"                   # [<bool>]
        #Option     "DRI" "true"                        # [<bool>]
        #Option     "NoDDC"                     # [<bool>]
        #Option     "ShowCache"                 # [<bool>]
        #Option     "XvMCSurfaces"              # <i>
        #Option     "PageFlip"                  # [<bool>]
        Identifier  "Card0"
        Driver      "i810"
        VendorName  "Intel Corporation"
        BoardName   "Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller"
        BusID "PCI:0:2:0"
#       Option      "DRI"        "true"
#       Option      "PageFlip"   "true"
#       Option "AccelMethod" "EXA"
#       Option      "RenderAccel"   "true"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        Option "XaaNoOffscreenPixmaps" "true"
        SubSection "Display"
                Viewport   0 0
                Depth     1
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     4
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     8
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     15
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     16
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes     "1024x600" "800x600"
EndSubSection
EndSection

Section "Extensions"
Option "Composite" "Enable"
EndSection

If you use this configuration file please be sure to follow the appropraite drivers section first otherwise your X won't start!

Desktop Enviorment

I chose to install KDE. I tend to like it better than any other. Emerging kde-meta (the entire kde suite) took almost exactly 24-hours to compile.

kpowersave

LCD Dimming and CPU throttling is working.

emerge kpowersave -av

Once installed you can quit kdelaptop and start kpowersave.

If you have an issue where when you attempt to configure kpowersave a message appears "Cannot find and schemes", do the following and restart kpowersave:

chmod 755 /usr/share/config

All should work after making the themes readable by all.

On-Screen Keyboard

Having tried a few onscreen keyboards I find that the xvkbd program best fits me. There is a pretty neat mod that I have came up with to really make this set-up enjoyable (more on that in a bit under Compiz-Fusion).

emerge xvkbd -av

You will now have a shortcut under the start menu --> Utilities --> ???? (Confirm)

Starting the keyboard in a terminal session is ok, however doesn't really suit our needs well. A better solution is to right click the kicker bar and add a program to the taskbar. You can choose a nice icon and Name the program X-Keyboard. The command option should look something like this:

~~I like a big Keyboard so I can use my fingers on the touchscreen~~

xvkbd -geometry 750x350+262+84 -always-on-top &

now you can launch the keyboard. Don't worry about that the keyboard is huge and you cant see anything behind it. We will fix all of that in the next section.

For now play with the geometry values to get the keyboard sized to your liking. If you prefer no keypad you can add the option -no-keypad before the "&" symbol.

Other On-Screen Keyboard Options

You may not like xvkbd. With Gentoo we always have options. A sampling of other on-screen keyboard packages are listed below:

  • matchbox-keyboard (very nice looking, not very usable yet)
  • Gok (not tested, Gnome keyboard)

Compiz-Fusion

This is the latest bleeding edge software for great looking 3D desktops. Although this software is mostly eye candy it has two VERY usefull features that we will utilize for our on-screen keyboard.

Installing Compiz-Fusion

The major parts of Compiz-Fusion are now in Portage. However we still need to set-up portage to use the xeffects overlay.

Follow these instructions as they are most up-to-date. Compiz Fusion

Warning: I only tested using the stable ebuilds, not Testing!

After you install all of the packages you will need to find a way to start fusion-icon. The easiest way I found was to do the following:

As a user and not as root. nano -w ~/.kde/Autostart/compiz-desktop

[Desktop Entry]
 Encoding=UTF-8
 Exec=fusion-icon
 StartupNotify=false
 Terminal=false
 Type=Application
 X-KDE-autostart-after=kdesktop

Now everytime you start KDE and after the system is done loading it will attempt to load Compiz-Fusion without the heavy drag on the system while loading.

Widgets/Opacity and the On-Screen Keyboard

This is the magic. This will enable you to hit a button and overlay a tranparent On-Screen Keyboard enabling seamless typing over the desktop.

1) Enter the settings for Compiz-Fusion (CCSM)
2) click "General Options" located at the top
3) Click the Opacity Settings Tab
4) Click +Add and type the following
|name=xvkbd
set the Opacity to the highest value
5) Now go back and click the "Widget Layer" under "Desktop"
6) Click the "Behaviour" Tab and in "Widget Windows" enter:
|name=xvkbd
7) Lastly click the "Actions Tab" and set "Toggle Widget Display" -> "Key" to
Page_Down
YOU CAN MAP WHATEVER KEY OR BUTTON YOU LIKE

Now we need to edit one final file to actually set the keycode for the directional pad on the right side of the device. I am only mapping the right directional for now, but it is possible to map all keys as they are all outputting values to dmesg.

nano -w /etc/conf.d/local.start

# This is a good place to load any misc programs
# on startup (use &>/dev/null to hide output)

#Add this line RIGHT DIRECTIONAL PAD -> Set PAGE_DOWN
setkeycodes e059 109
#OTHER KEYCODES MAY BE ADDED AS WELL

REBOOT

Now you can click your icon to start the keyboard once & then tap the right directional button and you will see it. tap the directional button again or tap off the on-screen keyboard and it's gone. You can tap the right directional anytime you need access to the keyboard.

Final Notes

That is as far as I have gone so far. I hope to update when needed. Overall Gentoo is very responsive on this set-up and even while having to compile everything from source it pays off in the long run with a snappy system.

Hope I was able to help others set-up this great machine to run Gentoo Linux! Good Luck.

Links and Reference

Here are the sites I have used to gather most of this information.

Retrieved from "http://www.gentoo-wiki.info/Samsung_Q1-Ultra"

Last modified: Sun, 24 Aug 2008 17:09:00 +1000 Hits: 21,659

Created by NickStallman.net, Luxury Homes Australia
Real estate agents should list their apartments, townhouses and units in Australia.