2019. május 19., vasárnap

Limit the CPU maximum frequency to avoid thermal shutdowns under Ubuntu 18.04

I used to have similar problems for multiple laptops. It seems that the CPU in the laptops tends to overheat more easily over time and shut down. Replacing the CPU fan and quality thermal paste never helped me in these situations. So far I limited the max frequency on Ubuntu, but it might happen that you just leave your laptop while doing some processing for a moment under the Sun and it just overheats the whole laptop body, causing a shut down eventually.
I learned that the newest laptops with Intel chips don't work with cpufreq-set properly, but only with likwid tools.
Installing this package:
sudo apt install likwid
I wrote the following python script to decrease/increase the max CPU frequency (manipulate_cpu_freq.py) under Ubuntu 18.04 (requires Python 3.7):
#!/usr/bin/python3.7

import argparse
import os
import subprocess

parser = argparse.ArgumentParser(description = "Manipulate CPU frequencies", prefix_chars = '-')
parser.add_argument("-d", "--decrease", help = "decrease the max frequency", type = bool, default = False)
parser.add_argument("-i", "--increase", help = "increase the max frequency", type = bool, default = False)
parser.add_argument("-s", "--silent", help = "silent mode", type = bool, default = False)
args = parser.parse_args()

query_freqs_output = subprocess.run(["likwid-setFrequencies", "-l"], capture_output = True)
query_freqs_output = query_freqs_output.stdout.decode('utf-8').split('\n')[1]
query_freqs_output = query_freqs_output.split(' ')
available_freqs = list(map(float, query_freqs_output))

query_curr_freq_output = subprocess.run(["likwid-setFrequencies", "-p"], capture_output = True)
query_curr_freq_output = query_curr_freq_output.stdout.decode('utf-8').split('\n')[1]
query_curr_freq_output = query_curr_freq_output.split('/')[-1]
current_freq = float(query_curr_freq_output.split(' ')[0])
curr_freq_index = min(range(len(available_freqs)), key = lambda i: abs(available_freqs[i]-current_freq))

if not args.silent:
  print("Available frequencies:", available_freqs)
  print("Current frequency:", current_freq)

if args.decrease:
  print("Decrease the frequency")
  if curr_freq_index == 0:
    print("Warning: Can't decrease the frequency because it is already at min")
    exit(1)

  print("Set to frequency", available_freqs[curr_freq_index-1], "Ghz")
  subprocess.run(["likwid-setFrequencies", "-y", str(available_freqs[curr_freq_index-1])])
  exit(0)

if args.increase:
  print("Increase the frequency")
  if curr_freq_index == len(available_freqs)-1:
    print("Warning: Can't increase the frequency because it is already at max")
    exit(1)

  print("Set to frequency", available_freqs[curr_freq_index+1], "Ghz")
  subprocess.run(["likwid-setFrequencies", "-y", str(available_freqs[curr_freq_index+1])])
  exit(0)
And I use a script running in the background to monitor the CPU temperature (run_cpu_policy.sh):
#!/bin/bash

while true
do
  CPU_TEMP=$(cat /sys/devices/virtual/thermal/thermal_zone0/temp)
  echo CPU Temperature: $(echo ${CPU_TEMP}/1000 | bc)°C
  if [ "$CPU_TEMP" -gt 76000 ]; then
    echo Decrease the max CPU frequency
    sudo manipulate_cpu_freq.py -s 1 -d 1
  fi
  if [ "$CPU_TEMP" -le 68000 ]; then
    echo Increase the max CPU frequency
    sudo manipulate_cpu_freq.py -s 1 -i 1
  fi
  sleep 10
done
Surely, you must check which sys point (e.g. /sys/devices/virtual/thermal/thermal_zone0/temp) contains your CPU temperature and adapt the script above. I increase the CPU max frequency when the temperature is below 68°C and decrease if it is above 76°C. It is very conservative policy, but the temperature may reach quickly above 100°C (around thermal shutdown threshold), if it sits above 80°C permanently thus I try to keep always below 80°C, just to be sure.
I had to develop the above solution yesterday because I got two thermal shutdowns because of the sunny, hot day while running intensive computations on my laptop CPU (Intel i7-6600U) continuously.
You can run the script after every startup with adding to the cron jobs (/etc/crontab):
@reboot root systemd-run --scope sudo -u YOUR_USER screen -dmS cpu_policy /home/YOUR_USER/run_cpu_policy.sh
Be sure to have screen installed:
sudo apt install screen
You can check it while running:
screen -r cpu_policy

2019. március 9., szombat

Configuring a USB DisplayLink monitor on Ubuntu 18.04

This blog post is about my experiences of configuring a USB DisplayLink monitor (Mobile Pixels Duex) under Ubuntu Linux 18.04 with KDE

Installation
--------------
Download and execute the installer from:


The installation was very smooth under Ubuntu 18.04. Since the DisplayLink installer compiles a kernel module, be sure that the kernel headers, dkms, make and g++ packages are installed on your system.

Screen setup
------------------
After connecting Duex, it was switched on, but the display was not configured. The display preferences dialog under KDE System Settings was unable to handle the Duex and the laptop screen changed to full resolution by some reason when Duex was connected. xrandr can configure Duex correctly, two commands can do the trick on command line:

- Optional step to reset back the laptop screen resolution if you use other resolution than the native. Example command:
 xrandr --output eDP1 --mode 1600x900 --primary  
- Set Duex to extended display on the right side of the main screen (check "xrandr --help" for other configurations):
 xrandr --output DVI-I-1-1 --right-of eDP1 --mode 1920x1080 --noprimary  

Disconnecting and reconnecting the Duex any time after this point will be just fine, no other xrandr tweaking is needed, but these xrandr changes are not permanent after every reboot they must be repeated once Duex is connected first time. eDP1 and DVI-I-1-1 might be different on your system. You can check the right IDs with a simple "xrandr" command in command line, it will list all available display connection IDs.

Brightness control
------------------
Duex is very bright by default and it is not possible to change the brightness under Linux because of the lack of support in the DisplayLink driver. Because the brightness value is permanent after it is changed on the device, my workaround was to install the DisplayLink driver in a Windows 10 virtual machine, adjust the brightness to your preference with the ScreenBright application and remove Duex from the virtual machine. Since the brightness change is permanent, the setting remains after disconnecting and reconnecting Duex. It is a dirty workaround, but at least you are not locked to a certain brightness level permanently. The same method works just fine without virtual machines by connecting Duex to a real Windows PC or laptop temporary.

Brightness control (in software)
---------------------------------------
Without changing the backlight of Duex with hardware controls, xorg can apply brightness/gamma values in software to correct the screen. This method does not change the backlight level of the Duex, but it would provide a way to finetune the brightness level. This is not available yet, but at least doable. Modesetting driver used by Displaylink added support for software gamma support in Jan 2018, but this change has not landed in Ubuntu yet:


Software gamma support must be also implemented in the open source parts of the DisplayLink driver. The efforts can be tracked via:


Further tweaking
----------------------
If your laptop has an integrated Watcom touchscreen in your screen, the touch will point the mouse pointer to wrong coordinates if Duex is connected because overall display dimensions changed with the extended screen. You have to map your Wacom device back to the laptop screen once Duex is connected or disconnected with xsetwacom:

 xsetwacom set "Wacom Pen and multitouch sensor Finger touch" MapToOutput eDP1  

The correct wacom device ID can be checked with "xinput" on command line and the correct display ID (eDP1) with "xrandr". These steps can be automated when Duex is connected/disconnected with srandrd (https://github.com/jceb/srandrd). The following script run with srandrd works (correct the display/touchscreen IDs if needed):

 #!/bin/bash  
 case "${SRANDRD_OUTPUT} ${SRANDRD_EVENT}" in  
  "DVI-I-1-1 connected") sleep 5 && xsetwacom set "Wacom Pen and multitouch sensor Finger touch" MapToOutput eDP1 ;;  
  "DVI-I-1-1 disconnected") sleep 5 && xsetwacom set "Wacom Pen and multitouch sensor Finger touch" MapToOutput eDP1 ;;   
 esac  


2018. március 26., hétfő

Flickering with Google Chrome on KUbuntu 16.04

There are many flickering issues with Intel GPU and Google Chrome on Linux. I use Ubuntu 16.04 with KDE. I hide the window title bars to get the maximal usable screen space on my laptop. Chrome flickered with some web pages heavily, but only if the window title bar was hidden. I tried a few fixes from askubuntu:

https://askubuntu.com/questions/766725/annoying-flickering-in-16-04-lts-chrome

But eventually it turned out, I have to change the KWin rendering backend to XRender and the flickering stopped without disabling any GPU acceleration.

2017. május 8., hétfő

Zapcc Compiler

Once I noticed that a small startup company (Ceemple) introduced a modified Clang compiler (Zapcc) to reduce the compilation time. Instead of a disk-based cache like ccache, they cache some intermediate compilation pass results in memory (at least that is my bet) and reuse it for later compilation units. I modified the CMake build system in my robotics research project (AiBO+) and measured their claims. I found out that they don't overpromise. My project is about 90 kLOC now and zapcc was 30% faster than vanilla Clang 4.0.

Gcc 5.4: 6:40 min
Clang 4.0: 6 min
Zapcc: 4 min

I highly recommend their product. They don't just promise, but deliver. And it is really a drop-in replacement for gcc/Clang on Linux 64-bit environment.

2016. november 10., csütörtök

When you can use folly::ThreadLocalPtr instead of boost::thread_specific_ptr

In this post, I compare two solutions for thread local storage:

1. boost::thread_specific_ptr in Boost library which provides a cross-platform solution to store data per thread.
URL: http://www.boost.org/

2. Facebook's folly has folly::ThreadLocalPtr which has a very similar interface to boost::thread_specific_ptr for easy adaption and it is claimed to be 4x faster. The disadvantage of folly is that it supports only 64 bit Mac OS X+Linux distributions (e.g no Windows) and it requires a modern C++ compiler with C++11 support.

URL: https://github.com/facebook/folly
URL: https://github.com/facebook/folly/blob/master/folly/docs/ThreadLocal.md

I did not write a synthetic case for performance testing which may justify how faster folly is, but I come up with a real world use case from my research project. I develop an artificial intelligence for the old Sony ERS-7 robot dogs, and as part of my efforts, I can simulate the AI in a thread on my host Linux machine to use multithreaded testing. When I replaced Boost with folly in the testing, I was surprised that it is really faster. Obviously not 4x, but it is still much faster. On the other hand, I saw a significant difference in the folly performance when different compilers were used and decided to create this blog post.

Test case: I run one AI simulation test case in a single thread 100 times and the averaged runtime is shown in the diagrams below. In one place, my code was inefficient, using the thread local pointer (TLP) inside a frequently called loop. Because of this performance bug, the long execution time was mainly caused by this TLP bottleneck. After I moved the TLP usage outside the loop, the performance gains were not relevant with folly anymore. I still think that it has some value to publish these numbers how folly can improve a situation when TLP is heavily used or not.

Compiler setup

Important compiler switches: -O3 -std=gnu++14
I-don't-think-so-relevant compiler switches: -mfpmath=sse -march=core2 -fPIC

Gcc 5.4 came the official Ubuntu Xenial repositories
Gcc 6.2 was installed from a toolchain testing PPA for Ubuntu (https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test)
Clang 3.9 and 4.0 (4.0~svn286079) were installed from LLVM repositories (http://apt.llvm.org).

Case 1

So in this case, the TLP was used inefficiently, causing a large part of the runtime. As we can see, the the Boost results are almost identical, gcc is a bit faster than clang. However, Folly is not only faster with gcc, but Clang provides a much better performance than gcc. Although gcc 6 improved the performance a bit over gcc 5, but clang 4.0 is still 17.7 % faster than gcc 6.2.


Left axis is execution time in milliseconds. Lower is better.


Case 2

After the TLP usage was fixed in my codes, the compilers delivered almost identical results since the TLP access time did not play such main role like in Case 1. Boost and folly results are quite similar, but clang was a bit faster with Folly by a small margin. gcc 5.4 was unexpectedly faster with Folly, but I would assume it was a coincidence of some optimizations since that compiler was the slowest with folly in Case 1.


Left axis is execution time in milliseconds. Lower is better.


Verdict

No silver bullets here. If you have a program which heavily use thread local pointers under Linux or Mac OS X, it is recommended to try folly to gain some speed. Otherwise Boost provides a generic cross-platform solution when TLP is not used all over the place.

2016. március 11., péntek

Unity Build macro for CMake

A half year ago, I came across some techniques to speed up the C++ compilation for bigger projects. As my evergrowing AiBO+ project is around 87000 C++ source lines without 3rd party libraries now, it really became important to keep the compilation time low. Apart from the ccache integration in my CMake build system, I decided to try out the Unity Build method. When I looked around the internet, I found that the Unity Build would shorten the build duration significantly and some people crafted some small CMake scripts, but these solutions were incomplete. Either they did not handle the Qt's moc files at all or all Unity files were regenerated each time when a CMake reconfigure was initiated. An other example is Cotire which does not handle the dependencies correctly (https://github.com/sakra/cotire/issues/77).

My script is based on Christoph Heindl's work although heavily modified. So here it is:

https://sourceforge.net/p/aiboplus/code/ci/master/tree/aiboplus/UnityBuild.cmake

The features of my Unity Build script for CMake:
- Easy to add to existing projects
- Configurable extension for the generated Unity Build files (c, cpp, cc etc.)
- Easy to exclude certain problematic sources from the Unity Build file generation
- Source file count limit for the Unity Build files
- Working out-of-source builds
- Qt support (handling moc files correctly)
- Track the source file changes with md5 hashes
- Regenerate the Unity Build files only when really needed

Limitation:
- The Unity Build files are not removed with "make clean".

Note:
- The UNITY_GENERATE_MOC() macro is optional. I wrote this lightweight moc file generation for Qt instead of the default slower moc invocations in CMake.

Basic usage of my script:

- Copy UnityBuild.cmake to your project's root directory.
- Include in the root CMakeLists.txt:

INCLUDE(UnityBuild.cmake)

- In any source directory, use like this:

SET(LIBEXAMPLE_SRC
    first.c ;
    second.c ;
    third.c ;
    )

# Parameters:
# 1. Name prefix for the generated Unity Build files
# 2. CMake variable which contains the source files
# 3. Unit size (source file count) per Unity Build file
# 4. Extension for the Unity Build files to invoke the correct compiler
ENABLE_UNITY_BUILD(libexample LIBEXAMPLE_SRC 10 c)

# Optional: Add any problematic source file which are not suitable for Unity Build and
# you are lazy to fix it.
SET(LIBEXAMPLE_SRC ${LIBEXAMPLE_SRC} lazy.c)

ADD_LIBRARY(libexample STATIC ${LIBEXAMPLE_SRC})

2015. augusztus 13., csütörtök

Shishi odoshi vs. nyúl

Szal, egy nyúl ma azt hitte, hogy felzabálja a büszke bokrunkat a kertben. Aztán a shishi odoshi helyrerakta.

2015. augusztus 6., csütörtök

A new update of my artificial intelligence for Sony ERS-7 robots

Here comes the new update of my AiBO+ AIBOWare for Sony ERS-7: AiBO+ 3.1 - Let's Play!

New changes in this release:

- New sound profiles with voice acting (text-to-speech, Marissa, Gillian)
- A game can be played with AIBO
- Reworked pick-up mode/fall over/poking detection
- Configurable adaptive volume control
- Quicker responses for petting
- Less stress on the motors
- Many small fixes

The AiBO+ AIBOWare must be installed in a PMS stick and an AiBO+ Client application can be run under Windows, Ubuntu Linux and Android.

The installation instructions and a detailed user guide are available on this page:

http://aiboplus.sourceforge.net/userguide.html

2015. augusztus 3., hétfő

Second astrophoto - Shapley 1

Shapley 1 (planetary nebula)

Captured with telescope T32 of iTelescope network, Side Springs Observatory, Australia.

Capture parameters: LRGB, 14x120, 4x120, 4x120, 4x120.

It is my second trial with astroimaging. I was a bit surprised that I got better results when I tried to work with uncalibrated images. I tried various filters, but none of them given reasonable results with shutter speed 300 seconds.

 

2015. május 24., vasárnap

Conversion script for FujiFilm FinePix W3 3D camera videos (avi) to SBS mp4 under Linux

When the following script is run, it looks for avi files in the current folder whose name starts with DSC... and their format is motions jpeg.
The left/right channels of the original W3 video are extracted and a final side-by-side video is created. All new videos will be in mp4 format.

Here it is the script:

#!/bin/bash

file_pattern="$@"

if [ ! $file_pattern ]; then
  file_pattern="DSC*.avi DSC*.AVI"
fi

for file in $(ls -f $file_pattern 2> /dev/null)
do
  echo Checking $file
  if [[ "$(file $file)" == *"video: Motion JPEG"* ]]; then
    echo Processing $file
    filenamebase=${file%.*}
    echo Create left video: "$filenamebase"_l.mp4
    ffmpeg -loglevel error -i $file -f mp4 -acodec mp3 -map 0:v:1 -map 0:a:0 "$filenamebase"_l.mp4
    echo Create right video: "$filenamebase"_r.mp4
    ffmpeg -loglevel error -i $file -f mp4 -acodec mp3 -map 0:v:0 -map 0:a:0 "$filenamebase"_r.mp4
    echo Join left/right videos to a half SBS video: "$filenamebase"_sbs.mp4
    ffmpeg -loglevel error -i "$filenamebase"_l.mp4 -i "$filenamebase"_r.mp4 \
           -filter_complex "pad=in_w*2:in_h, overlay=main_w/2:0, scale=in_w/2:in_h" \
           -f mp4 -b:v 6000k -acodec copy -map 0:a:0 "$filenamebase"_sbs.mp4
    echo Rename left video to 2d version: "$filenamebase"_l.mp4 to "$filenamebase"_2d.mp4
    mv "$filenamebase"_l.mp4 "$filenamebase"_2d.mp4
  fi
done

2015. április 26., vasárnap

First public release of my artificial intelligence for Sony ERS-7 robot dogs

After years of development, I created  the first public version of my AiBO+ AIBOWare for Sony ERS-7: AiBO+ 3.0 - AIBO Rebirth release.

A feature video can be watched:



The same video in 3D:



AiBO+ has the following capabilities at the moment:

- Basic postures: sit, stand, lie.
- Locomotion (walking, turning).
- A new, compatible Skitter is bundled. (thanks to DogsBody) [Smile]
- Avoiding near objects or deepness (e.g a stairway).
- Basic emotions: happy, angry.
- Recognizing the floor surface while walking.
- Crowdsourcing scientific data (machine learning samples).
- Adaptive LED brightness levels.
- Adaptive volume level according to the time of the day.
- Turning over if the robot is upside down.

The AiBO+ AIBOWare must be installed in a PMS stick and an AiBO+ Client application can be run under Windows, Ubuntu Linux and Android.

The installation instructions and a detailed user guide are available on this page:

http://aiboplus.sourceforge.net/userguide.html

2014. szeptember 26., péntek

Sony ERS-7 charging station pole model for 3D printing

After collaborating with Ahmad Byagowi from aibo-life.org, he created a model of the ERS-7 charging station pole what can be used for 3d printing. I played a little role in the whole process, Ahmad desires all praises.

- Model for 3d printing service:

https://www.dropbox.com/s/wyn5k7asyjtggvw/pole.STL?dl=0

- An exported pdf document where the model in 3d:

https://www.dropbox.com/s/r6p2snf2diwy8wu/pole.pdf?dl=0

2014. szeptember 11., csütörtök

Hold Tamperében tegnap éjjel / Moon in Tampere yesterday night

Vettem egy Skywatcher 650/130-as FlexTube Dobson teleszkópot, és tegnap végre derült volt az ég tehát felavattam. :) Sajnos a levegő nagyon párás volt és Tampere is eléggé fényszennyezett, de azért láttam sok pici csillagot. A Holdról készítettem egy képet a kínai telóm hipergagyi kamerájával. Így nézett ki tegnap éjjel, persze távcsővel tűéles volt a kép, meg rá is lehetett közelíteni.
 -----------------------------------
I bought a Skywatcher 650/130 FlexTube Dobson telescope and I went for stargazing last night. Unfortunately, the seeing was not good at all and the air was filled with humidity, but I could see a lot stars despite the lightpolluting Tampere. I captured an image from the Moon with my crap Chinese phone, of course, it was crisp clear in the telescope and I could zoom in.

2014. július 17., csütörtök

Shishi odoshi

Csináltam még egy videót a japán szökőkutamról.

Normál verzió:



3D verzió:

2014. május 10., szombat

Fix a problem with keys in Midnight Commander in ssh session

I posted earlier that I assembled a PC for my research project. I have experienced an annoying problem via ssh remote shell to this computer, the special keys (e.g arrows) went crazy and e.g Midnight commander was completely unusable. After many attempts, the problem boiled down to the exported DISPLAY variable in the shell environment of the remote PC. By some reason, the terminal did not like the "export DISPLAY=:0" statement, but after changing to "export DISPLAY=xxx.xxx.x.xx:0" where xxx.xxx.x.xx is the IP address of the remote machine, the problems went away.

2014. március 30., vasárnap

Életem első asztrofotója/First astrophoto in my life

Életem első asztrofotója. A kép az Antenna galaxisokról készült (NGC 4038/4039), egy ~32 cm-es Cassegrain teleszkóppal a Side Springs-i obszervatóriumban, Ausztráliában. Az iTelescope szolgáltatáson belül a T9-es teleszkópot béreltem ki, és 180 másodperces expozíciókkal, 4 felvétel készült szűrők nélkül (intenzitáskép) és 1/1/1 piros, kék és zöld szűrőkkel, összesen 24 perces expozíció

Az iTelescope-tól már kalibrált nyers fits formátumú képeket kaptam, és ezeket Gimp 2.9-cel dolgoztam fel Ubuntu Linux alatt. Csak a következő szűrőket alkalmaztam: Colors/Exposure, Colors/Brightness-Contrast, Filters/Enhance/Despeckle. Kicsit kellett vele játszani, de eléggé meglepődtem mennyire egyszerűen ki lehetett hozni a végeredményt. De egyéb asztrofotós szoftvert még ki se próbáltam, lehet, hogy azokkal még szebb végeredményt lehetne előállítani.

Egy Hubble fényképpel nem ér fel, de a neten lévő amatőr fényképekhez képest egész jó.
----
First astrophoto in my life. The picture is from the Antennae Galaxies (NGC 4038/4039) and made with a 12.5" Cassegrain telescope in the Side Springs Observatory, Australia. I rented the T9 telescope from the iTelescope service. I used 180 seconds exposures, 4 without filters (luminescense pictures), 1/1/1 with red, green and blue filters, 24 minutes exposure time in overall.

I got calibrated raw images (fits) from iTelescope and I edited them with Gimp 2.9 under Ubuntu Linux. I used the following filters: Colors/Exposure, Colors/Brightness-Contrast, Filters/Enhance/Despeckle. I played with these filters a bit and I was pretty surprised how good composite image can be done with such simple methods. I will also check other astrography softwares, maybe they can create better final image.

It is far from a Hubble picture, but it is quite okay compared to other amateur pictures on the internet.


2014. március 9., vasárnap

Building a relatively cheap, silent, small, powerful PC for scientific computing

The topic is not so easy. I wanted to build a system for "cheap", running machine learning computing quickly while it is still small. The main motivation was that I tried to use cloud servers, but they are expensive and their CPU was not so strong (8 cores, Opteron 6128, rated 6128 at www.cpubenchmark.net). I realized that I could quickly spend some hundreds of euro thus why don't I build an own machine from that price to get raw CPU power? (I don't need too much RAM or GPU right now.)

Shopping

1. Looking at the CPU benchmarks and prices, I ended up to AMD processors. They are cheap although running hotter compared to Intel. I bought a used AMD FX 8350 from ebay for ~140 euro with shipping. (This is 200 euro in the retail shops in my city.) This processor is really powerful, rated 9050 at www.cpubenchmark.net, x1.5 faster than the cloud server what I used for a month. The CPU was the biggest part of the computer costs.

2. The computer should be small so I picked a microATX case and one of the cheapest (but good) motherboard for my FX CPU. Case: MS-Tech SLIM LC-02 (43e), motherboard: MSI 760GMA-P34 (52e).

3. The PC should be silent, but on the other side, AMD FX CPU runs hot, so I need the coolest silent cooler for the microATX case. First hit in Google: http://www.frostytech.com/top5_lowprofile_heatsinks.cfm . Looking into the category, I chosen the best: Scythe Shuriken SCSK-1000 (32e).

4. Graphics card: nothing. I use the on-board GPU so far because I don't use GPU for anything yet.

5. Used 2 GB Kingston HyperX DDR3 1800MHZ RAM (15e) can be run nicely on higher frequencies, in my case, I achieved 1680 Mhz. Upgradeable later if needed.

6. Hard drive: Kingspec 32GB SSD JMF606H from aliexpress ($32 -> ~23e) to install a basic Ubuntu system. Upgradeable later if needed.

7. No monitor or peripherals because once the system will be set up and running, I put on shelf and manage remotely with ssh and vnc.

So the complete system is 140+43+52+32+15+23 -> 305 euro (~$423).

Setup

There is no perfect system and it was also right for my case. I installed Ubuntu and everything was fine except the hot AMD FX with inadequate cooling and suspend sometimes did not resume back. The hot CPU was a huge issue by default because the frequency was throttled down to half all the time when the CPU hit 60-65 degrees. The same task completed after 5h 40m when I assembled the machine and it was 4h after I fixed the heating issues:

- Since the shelf of the machine is a closed space, I removed the side of the microATX case permanently.
- I looked at many CPU thermal paste reviews and I found out that Arctic Cooling MX-2 is a cheap while giving one of the best performance, it even beats its successor MX-4. I bought 8g from ebay (6e). I have not expected too much, but the difference is very noticeable compared to the factory thermal paste shipped with Scythe Shuriken SCSK-1000.
- The third step was to undervolt the CPU without loosing performance. I was not so successful like others on the internet (~1.1V), but I was able to go down to 1.275V with tweaking the FSB and multiplier. I share my BIOS settings at the end of this post.

The undervolting (and switching off all unneeded hw in BIOS) has the advantage to lower the power consumption as much as possible. The whole effect was about 30W decrease in my case. Eventually, the system eats 60W in idle, 97W loading one CPU core and 202W on full CPU load.

BIOS screenshots




Edit (26/04/2015)

1. I put an additional 4 GB Kingston HyperX memory module into the PC
2. I experienced instability of the system after a half year. The CPU has been pulled down a bit and the voltage increased. The system become stable and I could put the side back to the microATX case.



2014. március 6., csütörtök

Fujitsu Siemens Esprimo E5615 with SSD+PCIe add-on card

I love this PC, it is our family computer at home. It is pretty enough for browsing the internet, document editing and playing some (sniper) games (eg. OF Red River :) ). It is almost completely silent and consumes not so much power. I wanted to add an SSD to the system to speed up at least the boot times. Finally, I achieved 1 minutes less boot time after moving virtual memory, virus scanner etc. programs to the SSD, but it was a pain to get the drive working in the system.

The old motherboard has nVidia nForce 430 chipset and after googling, it is pretty buggy. Many SSDs are not recognized at all in the system (like in my case) and it has regular problems with (at least) Samsung hard drives (they need to be forced to SATA I with a Samsung software tool). I bought a cheap ASM1061 chipset based SATA PCIe add-on card from ebay, but that one also did not work; Windows XP went frozen when the card was recognized and its driver installed.

How to fix the situation: The SATA PCIe card does not freeze the computer if the third and forth on-board SATA ports were disabled in the BIOS (bang my head to the wall...). SSD works perfectly with the add-on card without any issues after this change.

Well that is it. :)

2014. február 19., szerda

Short journey for accelerated HD movie playback under Windows XP

I thought the subject is ridiculously simple. No, it is not. I have a Windows XP computer (Athlon X2 5200+, AMD 6450 HD) which is capable to decode 720p/1080p content by CPU, but I wanted to utilize the GPU now. I thought it works like out-of-box and I struggled for couple of hours, tried many players (including settings tweaking, googling, reading forums): BSPlayer, MKPlayer, VLC, MP Classic, WMP etc., but it just did not work. Then I installed the only player which succeeded from the beginning: PotPlayer. CPU usage dropped to 5 % instead of 60-85 %, nice.

2013. december 1., vasárnap

Castleton-Edale túra

Múlt héten voltam egy konferencián Manchesterben, és egy napot túráztam. Itt van pár kép egy fish and chips-szel egyetemben.