Difference between revisions of "UMID SE"
Thestinger (talk | contribs) (→Power saving and thermal monitoring: rm duplicate content) |
m (link fixed) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Laptops]] | [[Category:Laptops]] | ||
{{stub}} | {{stub}} | ||
+ | This guide assumes that you are experienced in installing Archlinux. If you are not experienced, please read this guide in parallel with the [[Beginners' Guide]] or the [[Official Installation Guide]]. No assumptions are made on your desired environment (DE/WM). Note that the SSD will completely be wiped if you follow this guide without alterations. | ||
+ | |||
+ | == Installing Archlinux == | ||
+ | |||
+ | Boot the archlinux installer from the USB medium and log in as root. | ||
− | + | === Wireless connection === | |
+ | |||
+ | Since you don't have any ethernet, you'll need to manually configure your network before starting the setup. Here, we assume to have a wireless network not encrypted: | ||
+ | # ip link set wlp2s0 up | ||
+ | # iwconfig wlp2s0 essid "your_network_essid" | ||
+ | # dhcpcd wlp2s0 | ||
+ | If your network is encrypted, follow the instructions in the [[Beginners' Guide#Setup wireless in the live environment (optional)|Beginner's Guide]]. If it's not encrypted but requires you to login at a captive portal, you can use {{ic|elinks}} to enter your credentials. | ||
− | == | + | === SSD partitining === |
− | |||
− | == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | You'll also need to manually format the SSD before using the installer. Install GPT tools from {{Pkg|gptfdisk}} as described in the [[SSD#Using GPT - RECOMMENDED METHOD|SSD Article]]. This ensures that your partitions are properly aligned. Run it: | |
− | You'll also need to manually format the SSD before using the installer. | ||
− | |||
gdisk /dev/sda | gdisk /dev/sda | ||
+ | |||
Type {{ic|o}} to clear out the partition table and then create at least 3 partitions by typing {{ic|n}} and answering the questions (type {{ic|?}} or {{ic|m}} for help). You need at least a 2MiB Partition at the beginning for the boot loader as well as a bit more than 1GiB of swap space to be able to use hibernation. Your partition table should look something like this in the end (for example using 8GiB for {{ic|/}} and the rest for {{ic|/home}} : | Type {{ic|o}} to clear out the partition table and then create at least 3 partitions by typing {{ic|n}} and answering the questions (type {{ic|?}} or {{ic|m}} for help). You need at least a 2MiB Partition at the beginning for the boot loader as well as a bit more than 1GiB of swap space to be able to use hibernation. Your partition table should look something like this in the end (for example using 8GiB for {{ic|/}} and the rest for {{ic|/home}} : | ||
Number Start (sector) End (sector) Size Code Name | Number Start (sector) End (sector) Size Code Name | ||
Line 25: | Line 28: | ||
Type {{ic|w}} to write the partition table. Note that the SSD doesn't seem to support TRIM. Make sure to leave plenty of free space on each partition so you don't run into performance issues. | Type {{ic|w}} to write the partition table. Note that the SSD doesn't seem to support TRIM. Make sure to leave plenty of free space on each partition so you don't run into performance issues. | ||
− | ===Running the installer=== | + | === Running the installer === |
+ | |||
Progress through the installer as usual, but mind these things: | Progress through the installer as usual, but mind these things: | ||
− | * When configuring the hard drive, select to configure the mountpoints manually and choose the mountpoints accordingly. Regarding filesystems, you can select {{ic|ext2}} for the BIOS boot partition. For the root and any other regular partitions | + | * When configuring the hard drive, select to configure the mountpoints manually and choose the mountpoints accordingly. Regarding filesystems, you can select {{ic|ext2}} for the BIOS boot partition. For the root and any other regular partitions [[ext4]] is a good choice. |
− | * You absolutely have to select {{ | + | * You absolutely have to select {{Pkg|wireless-tools}} from core to be installed in order to be able to connect to the [[Wireless_Setup|wifi network]] in your freshly installed system. You may also want to select [[netctl]]. |
− | * When editing the config files, edit /etc/fstab and add the {{ic|noatime,nodiratime,discard}} options to your ext4 partitions. Also remove | + | * When editing the config files, edit {{ic|/etc/fstab}} and add the {{ic|noatime,nodiratime,discard}} options to your ext4 partitions. Also remove disable '''network''' [[daemon]]. |
− | * Skip the bootloader installation, exit the installer | + | * Skip the bootloader installation, exit the installer but do '''not''' reboot! |
+ | |||
+ | === Installing the bootloader === | ||
− | |||
After exiting the installer, do this while still running from the install medium. Prepare the environment: | After exiting the installer, do this while still running from the install medium. Prepare the environment: | ||
− | cp /etc/resolv.conf /tmp/install/etc/resolv.conf | + | # cp /etc/resolv.conf /tmp/install/etc/resolv.conf |
− | modprobe dm-mod | + | # modprobe dm-mod |
− | mount -o bind /dev /mnt/dev | + | # mount -o bind /dev /mnt/dev |
− | mount -t proc /proc /mnt/proc/ | + | # mount -t proc /proc /mnt/proc/ |
− | mount -t sysfs /sys /mnt/sys/ | + | # mount -t sysfs /sys /mnt/sys/ |
Chroot into your fresh installation: | Chroot into your fresh installation: | ||
− | chroot /mnt bash | + | # chroot /mnt bash |
− | Install | + | Install GRUB: |
− | pacman-db-upgrade | + | # pacman-db-upgrade |
− | pacman -Syy | + | # pacman -Syy |
− | rm -rf /boot/grub | + | # rm -rf /boot/grub |
− | pacman -S grub2-bios | + | # pacman -S grub2-bios |
− | grub-install --directory=/usr/lib/grub/i386-pc --target=i386-pc --boot-directory=/boot --recheck --debug /dev/sda | + | # grub-install --directory=/usr/lib/grub/i386-pc --target=i386-pc --boot-directory=/boot --recheck --debug /dev/sda |
− | grub-mkconfig -o /boot/grub/grub.cfg | + | # grub-mkconfig -o /boot/grub/grub.cfg |
Now you're ready to reboot! | Now you're ready to reboot! | ||
− | ==Configuring the system== | + | == Configuring the system == |
+ | |||
+ | === Power saving and thermal monitoring === | ||
− | |||
The UMID SE can get quite hot because of the relatively powerful CPU and lack of air flow. This happens especially when charging the batteries. Keep an eye on the thermals at all times. Refer to [[#dzen|dzen]] for an example on how to do this efficiently. Enable cpu scaling, configure the thermal sensor and enable all power saving options as follows: | The UMID SE can get quite hot because of the relatively powerful CPU and lack of air flow. This happens especially when charging the batteries. Keep an eye on the thermals at all times. Refer to [[#dzen|dzen]] for an example on how to do this efficiently. Enable cpu scaling, configure the thermal sensor and enable all power saving options as follows: | ||
See [[power saving]]. | See [[power saving]]. | ||
− | ===Graphics driver=== | + | === Graphics driver === |
+ | |||
There are several drivers and they're all terrible. The probably best option at the time of writing is the pbs_gfx driver used with fbdev. The performance (for playing videos for example) will nevertheless be awful but it works well for regular work. Install it as follows: | There are several drivers and they're all terrible. The probably best option at the time of writing is the pbs_gfx driver used with fbdev. The performance (for playing videos for example) will nevertheless be awful but it works well for regular work. Install it as follows: | ||
Add {{ic|psb_gfx}} to {{ic|MODULES}} in {{ic|/etc/mkinitcpio.conf}} and rebuild the kernel initramfs: | Add {{ic|psb_gfx}} to {{ic|MODULES}} in {{ic|/etc/mkinitcpio.conf}} and rebuild the kernel initramfs: | ||
− | mkinitcpio -p linux | + | # mkinitcpio -p linux |
− | Install the | + | |
− | + | Install the {{Pkg|xf86-video-fbdev}} driver. | |
+ | |||
You should now be able to install and run X. | You should now be able to install and run X. | ||
− | ===X=== | + | === X === |
+ | |||
Install Xorg and whatever DE/WM you want to use. You don't need any xorg.conf yet. Launch X. | Install Xorg and whatever DE/WM you want to use. You don't need any xorg.conf yet. Launch X. | ||
− | ===Screen brightness=== | + | === Screen brightness === |
+ | |||
The psb_gfx driver allows for easy brightness settings via {{ic|/sys/class/backlight/psb-bl/brightness}}. Just {{ic|echo}} a value between 0 and 100 to that file and the brightness will be set. Here's a suitable script for changing the brightness using keyboard shortcuts. | The psb_gfx driver allows for easy brightness settings via {{ic|/sys/class/backlight/psb-bl/brightness}}. Just {{ic|echo}} a value between 0 and 100 to that file and the brightness will be set. Here's a suitable script for changing the brightness using keyboard shortcuts. | ||
− | < | + | |
+ | {{bc|<nowiki> | ||
#!/bin/sh | #!/bin/sh | ||
#increase or decrease the brightness by about 10% | #increase or decrease the brightness by about 10% | ||
current="$(cat /sys/class/backlight/psb-bl/brightness)" | current="$(cat /sys/class/backlight/psb-bl/brightness)" | ||
if [[ "$1" == "up" ]]; then | if [[ "$1" == "up" ]]; then | ||
− | + | current=$((current+((current/10+1)))) | |
− | + | [[ $current -ge 100 ]] && current=100 | |
elif [[ "$1" == "down" ]]; then | elif [[ "$1" == "down" ]]; then | ||
− | + | current=$((current-((current/10+1)))) | |
else | else | ||
− | + | echo "1st argument should be 'up' or 'down'" | |
− | + | exit 1 | |
fi | fi | ||
echo "$current" > /sys/class/backlight/psb-bl/brightness | echo "$current" > /sys/class/backlight/psb-bl/brightness | ||
− | </ | + | </nowiki>}} |
− | Place it in {{ic|/usr/local/bin}} or similar, allow it to be run by regular users using {{ic|visudo}} and then you can bind it to the brightnes key combo on your keyboard by whatever means, for example through your WM. You may want to write the new value to a file and reload it upon boot-up or you can just set it to a default upon boot-up by adding this to {{ic|/ | + | |
− | + | Place it in {{ic|/usr/local/bin}} or similar, allow it to be run by regular users using {{ic|visudo}} and then you can bind it to the brightnes key combo on your keyboard by whatever means, for example through your WM. You may want to write the new value to a file and reload it upon boot-up or you can just set it to a default upon boot-up by adding this to a [[systemd]] tmpfile: | |
+ | w /sys/class/backlight/psb-bl/brightness - - - - 40 | ||
+ | |||
+ | === Touchscreen === | ||
+ | |||
+ | At the time of writing, the touchscreen works out of the box as a relative "touch-pad-like" pointer device. After some correspondence with EETI, the following can be said: | ||
+ | * The official "eGalax Touch driver" 3.06.5625 from [http://home.eeti.com.tw/web20/eGalaxTouchDriver/linuxDriver.htm EETI] does only work up until xorg 1.8. | ||
+ | * The newer "eGTouch daemon driver" does not support the PS/2 interface used in the UMID SE. | ||
+ | * I have been given an update driver via email but I cannot disclose it at this time. Feel free to contact EETI through the email address mentioned at [http://home.eeti.com.tw/web20/eGalaxTouchDriver/linuxDriver.htm EETI] and ask for the updated egalax_drv.so for Xorg 1.11. | ||
+ | When you have the updated egalax_drv.so, do the following. Add this to a systemd tmpfile, enabling raw access to the device at {{ic|/dev/serio_raw0}}: | ||
+ | |||
+ | w /sys/bus/serio/devices/serio1/drvctl - - - - serio_raw | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
The following kernel options must supposedly be enabled by adding them in {{ic|/etc/default/grub}}: | The following kernel options must supposedly be enabled by adding them in {{ic|/etc/default/grub}}: | ||
GRUB_CMDLINE_LINUX_DEFAULT="quiet i8042.nomux=1 i8042.noloop=1" | GRUB_CMDLINE_LINUX_DEFAULT="quiet i8042.nomux=1 i8042.noloop=1" | ||
Line 116: | Line 131: | ||
Reboot. You can now run {{ic|TKCal}} to calibrate your touchscreen and it should work as a proper absolute pointing device. | Reboot. You can now run {{ic|TKCal}} to calibrate your touchscreen and it should work as a proper absolute pointing device. | ||
− | ===Optical | + | === Optical mouse === |
+ | |||
Not working. A bug has been filed at the [https://bugzilla.kernel.org/show_bug.cgi?id=43058 Kernel bug tracker]. | Not working. A bug has been filed at the [https://bugzilla.kernel.org/show_bug.cgi?id=43058 Kernel bug tracker]. | ||
− | ===Keyboard=== | + | === Keyboard === |
− | ====Special keys==== | + | |
+ | ==== Special keys ==== | ||
+ | |||
Create a file {{ic|/lib/udev/keymaps/umid-se}} containing: | Create a file {{ic|/lib/udev/keymaps/umid-se}} containing: | ||
0xEE battery # Fn+Q | 0xEE battery # Fn+Q | ||
Line 137: | Line 155: | ||
The above vendor and product IDs can be found under {{ic|/sys/class/dmi/id/*}}. The codes themselves are written to dmesg when hitting the keys. Reboot to apply the changes. | The above vendor and product IDs can be found under {{ic|/sys/class/dmi/id/*}}. The codes themselves are written to dmesg when hitting the keys. Reboot to apply the changes. | ||
− | ====Capacitive stripe==== | + | ==== Capacitive stripe ==== |
+ | |||
The UMID SE comes with a capacitive touch area above the keyboard (where the grey dots are). Input is given as keycodes. This is relatively useless and also litters dmesg with warnings about unknown scan codes. To remedy this, you can append this to {{ic|/lib/udev/keymaps/umid-se}} as pointed out above: | The UMID SE comes with a capacitive touch area above the keyboard (where the grey dots are). Input is given as keycodes. This is relatively useless and also litters dmesg with warnings about unknown scan codes. To remedy this, you can append this to {{ic|/lib/udev/keymaps/umid-se}} as pointed out above: | ||
0x75 prog1 | 0x75 prog1 | ||
Line 152: | Line 171: | ||
This will associate the whole general area with the {{ic|XF86Launch1}} keycode. You can now use the area as a hotkey like any other key. It's quite sensible though and may fire unintentionally, which is why it best left unused. | This will associate the whole general area with the {{ic|XF86Launch1}} keycode. You can now use the area as a hotkey like any other key. It's quite sensible though and may fire unintentionally, which is why it best left unused. | ||
+ | === Suspend and hibernation === | ||
− | |||
Should work in theory when using the psb_gfx driver for Poulsbo and using pm-suspend. Doesn't seem to work yet. | Should work in theory when using the psb_gfx driver for Poulsbo and using pm-suspend. Doesn't seem to work yet. | ||
{{ic|TODO}} | {{ic|TODO}} | ||
− | ===Webcam=== | + | === Webcam === |
+ | |||
Doesn't seem to be even connected. Not visible at all. Probably needs to be enabled by some sort of kill switch instruction. | Doesn't seem to be even connected. Not visible at all. Probably needs to be enabled by some sort of kill switch instruction. | ||
{{ic|TODO}} | {{ic|TODO}} | ||
==Additional Information== | ==Additional Information== | ||
− | ===BIOS password recovery=== | + | |
+ | === BIOS password recovery === | ||
+ | |||
The AMI BIOS of the UMID SE can be read out and decrypted using cmospwd which is in AUR. | The AMI BIOS of the UMID SE can be read out and decrypted using cmospwd which is in AUR. |
Revision as of 21:30, 11 June 2013
This guide assumes that you are experienced in installing Archlinux. If you are not experienced, please read this guide in parallel with the Beginners' Guide or the Official Installation Guide. No assumptions are made on your desired environment (DE/WM). Note that the SSD will completely be wiped if you follow this guide without alterations.
Installing Archlinux
Boot the archlinux installer from the USB medium and log in as root.
Wireless connection
Since you don't have any ethernet, you'll need to manually configure your network before starting the setup. Here, we assume to have a wireless network not encrypted:
# ip link set wlp2s0 up # iwconfig wlp2s0 essid "your_network_essid" # dhcpcd wlp2s0
If your network is encrypted, follow the instructions in the Beginner's Guide. If it's not encrypted but requires you to login at a captive portal, you can use elinks
to enter your credentials.
SSD partitining
You'll also need to manually format the SSD before using the installer. Install GPT tools from gptfdisk as described in the SSD Article. This ensures that your partitions are properly aligned. Run it:
gdisk /dev/sda
Type o
to clear out the partition table and then create at least 3 partitions by typing n
and answering the questions (type ?
or m
for help). You need at least a 2MiB Partition at the beginning for the boot loader as well as a bit more than 1GiB of swap space to be able to use hibernation. Your partition table should look something like this in the end (for example using 8GiB for /
and the rest for /home
:
Number Start (sector) End (sector) Size Code Name 1 2048 6143 2.0 MiB EF02 BIOS boot partition 2 6144 2463743 1.2 GiB 8200 Linux swap 3 2463744 19240959 8.0 GiB 8300 Linux filesystem 4 19240960 61865950 20.3 GiB 8300 Linux filesystem
Type w
to write the partition table. Note that the SSD doesn't seem to support TRIM. Make sure to leave plenty of free space on each partition so you don't run into performance issues.
Running the installer
Progress through the installer as usual, but mind these things:
- When configuring the hard drive, select to configure the mountpoints manually and choose the mountpoints accordingly. Regarding filesystems, you can select
ext2
for the BIOS boot partition. For the root and any other regular partitions ext4 is a good choice. - You absolutely have to select wireless-tools from core to be installed in order to be able to connect to the wifi network in your freshly installed system. You may also want to select netctl.
- When editing the config files, edit
/etc/fstab
and add thenoatime,nodiratime,discard
options to your ext4 partitions. Also remove disable network daemon. - Skip the bootloader installation, exit the installer but do not reboot!
Installing the bootloader
After exiting the installer, do this while still running from the install medium. Prepare the environment:
# cp /etc/resolv.conf /tmp/install/etc/resolv.conf # modprobe dm-mod # mount -o bind /dev /mnt/dev # mount -t proc /proc /mnt/proc/ # mount -t sysfs /sys /mnt/sys/
Chroot into your fresh installation:
# chroot /mnt bash
Install GRUB:
# pacman-db-upgrade # pacman -Syy # rm -rf /boot/grub # pacman -S grub2-bios # grub-install --directory=/usr/lib/grub/i386-pc --target=i386-pc --boot-directory=/boot --recheck --debug /dev/sda # grub-mkconfig -o /boot/grub/grub.cfg
Now you're ready to reboot!
Configuring the system
Power saving and thermal monitoring
The UMID SE can get quite hot because of the relatively powerful CPU and lack of air flow. This happens especially when charging the batteries. Keep an eye on the thermals at all times. Refer to dzen for an example on how to do this efficiently. Enable cpu scaling, configure the thermal sensor and enable all power saving options as follows:
See power saving.
Graphics driver
There are several drivers and they're all terrible. The probably best option at the time of writing is the pbs_gfx driver used with fbdev. The performance (for playing videos for example) will nevertheless be awful but it works well for regular work. Install it as follows:
Add psb_gfx
to MODULES
in /etc/mkinitcpio.conf
and rebuild the kernel initramfs:
# mkinitcpio -p linux
Install the xf86-video-fbdev driver.
You should now be able to install and run X.
X
Install Xorg and whatever DE/WM you want to use. You don't need any xorg.conf yet. Launch X.
Screen brightness
The psb_gfx driver allows for easy brightness settings via /sys/class/backlight/psb-bl/brightness
. Just echo
a value between 0 and 100 to that file and the brightness will be set. Here's a suitable script for changing the brightness using keyboard shortcuts.
#!/bin/sh #increase or decrease the brightness by about 10% current="$(cat /sys/class/backlight/psb-bl/brightness)" if [[ "$1" == "up" ]]; then current=$((current+((current/10+1)))) [[ $current -ge 100 ]] && current=100 elif [[ "$1" == "down" ]]; then current=$((current-((current/10+1)))) else echo "1st argument should be 'up' or 'down'" exit 1 fi echo "$current" > /sys/class/backlight/psb-bl/brightness
Place it in /usr/local/bin
or similar, allow it to be run by regular users using visudo
and then you can bind it to the brightnes key combo on your keyboard by whatever means, for example through your WM. You may want to write the new value to a file and reload it upon boot-up or you can just set it to a default upon boot-up by adding this to a systemd tmpfile:
w /sys/class/backlight/psb-bl/brightness - - - - 40
Touchscreen
At the time of writing, the touchscreen works out of the box as a relative "touch-pad-like" pointer device. After some correspondence with EETI, the following can be said:
- The official "eGalax Touch driver" 3.06.5625 from EETI does only work up until xorg 1.8.
- The newer "eGTouch daemon driver" does not support the PS/2 interface used in the UMID SE.
- I have been given an update driver via email but I cannot disclose it at this time. Feel free to contact EETI through the email address mentioned at EETI and ask for the updated egalax_drv.so for Xorg 1.11.
When you have the updated egalax_drv.so, do the following. Add this to a systemd tmpfile, enabling raw access to the device at /dev/serio_raw0
:
w /sys/bus/serio/devices/serio1/drvctl - - - - serio_raw
The following kernel options must supposedly be enabled by adding them in /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="quiet i8042.nomux=1 i8042.noloop=1"
Install the 3.06.5625 driver via AUR by editing the PKGBUILD for xf86-input-egalax-beta
, updating the Version to 3.06.5625 and the source URL to
http://home.eeti.com.tw/web20/drivers/touch_driver/Linux/20110831/eGalaxTouch-3.06.5625-32b-k26.tar.gz
Run the PKGBUILD and install the package. Then copy over the updated egalax_drv.so overwriting the outdated one:
cp ./egalax_drv.so /usr/lib/xorg/modules/input/
Use the following /etc/X11/xorg.conf
Section "InputDevice" Identifier "EETI" Driver "egalax" Option "Device" "/dev/serio_raw0" Option "Parameters" "/var/lib/eeti.param" Option "ScreenNo" "0" EndSection Section "ServerLayout" Identifier "Default Layout" InputDevice "EETI" "SendCoreEvents" EndSection
Reboot. You can now run TKCal
to calibrate your touchscreen and it should work as a proper absolute pointing device.
Optical mouse
Not working. A bug has been filed at the Kernel bug tracker.
Keyboard
Special keys
Create a file /lib/udev/keymaps/umid-se
containing:
0xEE battery # Fn+Q 0xDF sleep # Fn+W 0xD5 switchvideomode # Fn+E 0xF0 record # Fn+R 0xF6 camera # Fn+T 0xF9 brightnessdown # Fn+A 0xF8 brightnessup # Fn+S 0xA0 mute # Fn+D 0xAE volumedown # Fn+F 0xB0 volumeup # Fn+G 0xFC wlan # Fn+J
Edit /lib/udev/rules.d/95-keymap.rules
adding this after LABEL="keyboard_vendorcheck"
:
ENV{DMI_VENDOR}=="UMiDCorp", ATTR{[dmi/id]product_name}=="M-BOOK", RUN+="keymap $name umid-se"
The above vendor and product IDs can be found under /sys/class/dmi/id/*
. The codes themselves are written to dmesg when hitting the keys. Reboot to apply the changes.
Capacitive stripe
The UMID SE comes with a capacitive touch area above the keyboard (where the grey dots are). Input is given as keycodes. This is relatively useless and also litters dmesg with warnings about unknown scan codes. To remedy this, you can append this to /lib/udev/keymaps/umid-se
as pointed out above:
0x75 prog1 0xF5 prog1 0x6F prog1 0xDA prog1 0x5A prog1 0x62 prog1 0xD9 prog1 0xE0 prog1 0xE2 prog1 0xEF prog1 0x59 prog1
This will associate the whole general area with the XF86Launch1
keycode. You can now use the area as a hotkey like any other key. It's quite sensible though and may fire unintentionally, which is why it best left unused.
Suspend and hibernation
Should work in theory when using the psb_gfx driver for Poulsbo and using pm-suspend. Doesn't seem to work yet.
TODO
Webcam
Doesn't seem to be even connected. Not visible at all. Probably needs to be enabled by some sort of kill switch instruction.
TODO
Additional Information
BIOS password recovery
The AMI BIOS of the UMID SE can be read out and decrypted using cmospwd which is in AUR.