Update Samsung SSD 840 EVO firmware on Zotac Linux server (poor read performance of old files).

My Samsung SSD 840 EVO was suffering from the apparently well known problem that 'old' files (files which have been written a long while ago and not touched since) had slow read transfer rates (as low as 5 MBytes/s in places, 29 MBytes/s for some big files I had).

I have a Zotac server without a CD drive, so I needed to run the Samsung Performance Restauration tool. I used the DOS / Mac variant which is a DOS bootable disk which contains the update tool. The easiest way to prepare the USB stick is NOT to use the USB zip provided by Samsung but to use the *.iso file (Samsung_Performance_Restoration.iso) instead:

- Mount the ISO file and get the file ISOLINUX/BTDSK.IMG from it.
- dd the BTDSK.IMG directly onto a USB stick
- boot from the USB stick and follow the instructions

On my Zotac machine when booting from this USB stick I got a couple of broken error messages about not being able to boot from device XYZ, but it booted OK from the stick after a couple of seconds.

The performance restauration procedure took 4.5h for a 1TB SSD (60% full) and about 15h for another 1TB SSD (95% full), so expect this to take some time.

Both SSDs were not erased by the procedure.

Avoid hang of headless Zotac server on Ubuntu Linux reboot. (How to disable the graphical console for grub and the Linux kernel.)

My Zotac server did not reboot without a monitor attached. Booting from power-up did work ok. The graphical console of grub seemed to be the problem. Since I do not use the monitor output at all not setting any graphics mode at all and using the 80x25 default console is fine for me. This is how to disable the graphical grub console:

Edit /etc/default/grub

Uncomment this line:

In addition I disabled setting any graphics mode on the Linux kernel and setting the timeout to 1 second.

My /etc/default/grub  file now looks like this:
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`


Reboot time: The time between pressing enter after 'reboot' and being logged in again with ssh is 25s.


Copy files using rsync as root when the remote host does not allow root access and ssh is on a different port

  • Step 1: Make sure you can execute commands as root on the remote host after logging in, without entering your password. For this there are two alternative options:
    • You can allow the user to execute sudo without entring the users password. You can do this by adding the following line to the end of /etc/sudoers:
      •      ALL=NOPASSWD: ALL
    • You can enter the sudo password in advance once and make sure it is cached between sessions. To make sure it is cached between sessions you must add the '!tty_tickets' option to the Defaults line in /etc/sudoers, and then you must run a dummy command as root:
      • Defaults        env_reset,!tty_tickets
      • ssh -p PORT -t USER@REMOTE_HOST sudo id
  • Step 2: Do the rsync. Override the ssh port. Specify "sudo rsync" as remote rsync command. Target the rsync at the non-root user which can now sudo:
    •  sudo rsync -avRe "ssh -p PORT" --rsync-path "sudo rsync" LOCAL_DIR USER@REMOTE_HOST:


Ubuntu Linux: Show network throughput of network device eth0 etc in bytes: iftop -B

By default iftop shows the bandwidth in Bit/s

To show the bandwidth in Bytes/s
iftop -B


Quit screen on german keyboard

On a german keyboard the key binding for 'quit' on GNU screen does not seem to work for me (on Max OS X). But one can simply invoke the quite command directly through the command mode:

  • Ctrl-A : quit

Save screen scrollback buffer to file


  • Ctrl-A : hardcopy -h file.txt

For me this saves a lot of leading blank lines, but this is ok.


Strip PDF restrictions on Mac OS X without any special tools

Assuming you have a PDF which has certain restrictions on it (for example you cannot edit the PDF using Preview in the usual way), but which you can print, this is how you can strip these restrictions from the PDF:

  • open the Printer Queue for your Printer
  • stop the Queue
  • print the PDF
    • now you should have a file starting with 'd' under /var/spool/cups which is an unprotected version of your PDF
  • in Terminal type sudo cp /var/spool/cups/d* ~/Desktop/d.pdf
    • this assumes there is just one file starting with a 'd' which is usually the case. If there are multiple files pick one by one until you have your file.
  • in Terminal type sudo chown foo:foo ~/Desktop/d.pdf (replace foo with your actual user name)
  • file ~/Desktop/d.pdf does not have any restrictions
  • in the Printer Queue delete the print job
  • start the Printer Queue
Note that this procedure does not allow you to strip passwords from files which you cannot print without a password. The restricted file must at least allow you to print the file.


Mac OS X Lion: Scan for wireless networks

Mac OS X Lion provides a command line tool to scan for wireless networks and print useful information about the networks:

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s

Also, to see additional information about the currently active wireless connection hold down the Option key while clicking on the Airport Symbol in the menu bar.


Common bashrc settings

There are my personal preferences. Your preferences may differ.

alias e=jed
alias mv="mv -i"
alias cp="cp -i"
alias rm="rm -i"
complete -r
export LANG=C
export EDITOR=jed
export PATH=$PATH:${HOME}/bin


Zotac Zbox ID18 Linux Server

  • Zotac Zbox ID18
  • Samsung SSD 840 EVO 1TB
  • 4GB RAM (SODIMM 1600)
  • Ubuntu 13.10
Samsung SSD firmware update: The process is quite broken:

  • download the 'Windows' Firmware update for the 840 EVO
  • mount it
  • dd the btdsk.img onto a USB stick
  • put the USB stick into the Zotac
  • change the Zotac BIOS so it boots from the USB stick
  • reboot
  • ignore all error messages about missing partitions
  • eventually the Samsung Firmware Update program comes up
  • take note of the Firmware revision
  • follow the instructions of the program
  • wait
  • ignore the message about power cycling the SSD, since you cannot power cycle it in isolation
  • ignore the message about the firmware update being unsuccessful
  • reboot (still from the USB stick)
  • check that you have the new firmware revision
  • Linux shows: ata1.00: ATA-9: Samsung SSD 840 EVO 1TB, EXT0BB6Q, max UDMA/133)
The installation of Ubuntu is quite straight forward.
Recommended settings after installation:
  • Enable TRIM support and avoid unnecessary writes when reading files and dirs:
    • /etc/fstab:
    • UUID= /   ext4    discard,noatime,errors=remount-ro 0       1
  • Reduce amount of disk space reserved for root from 45GB to 1GB:
    • sudo tune2fs /dev/sda1 -m 0.1
  • Install sshd:
    • sudo apt-get install openssh-server
  • Install 'sensors' to check the CPU temp:
    • sudo apt-get install lm-sensors
    • sudo sensors-detect
    • sudo service kmod start
    • sensors
  • Install 'smartmontools' to see the SSD temp and other interesting data:
    • sudo apt-get install smartmontools
    • sudo smartctl -x /dev/sda | grep -i 'Current Temp'
  • Do not start GUI/X
    • edit /etc/default/grub:
      • GRUB_TIMEOUT=1
    • sudo jed /etc/default/grub
    • sudo update-grub
  • I like to install:
    • sudo apt-get install jed apcalc screen minidlna openssh-server samba emacs ispell subversion g++ imagemagick
  • If you have a couple of minutes:
    • sudo apt-get update
    • sudo apt-get upgrade
  • If you would like to manually TRIM the SSD:
    • sudo fstrim -v /
  • Install SAMBA:
Example /etc/samba/smb.conf:
    comment = Share on the Zotac
    path = /zotti
    browsable = yes
    guest ok = yes
    read only = no
    create mask = 0777
    veto files = /.*.pdf/.*.jpg/.DS_Store/._.DS_Store/.*.ini/.*.txt/.*.mov/.*.avi/.*.mpg/.*.png/
    delete veto files = yes
    hide dot files = yes
    hide unreadable = yes


jed settings for indent=4, just spaces, line numbers on, sane brace insertion

My favorite jed setting in $HOME/.jedrc
% For the following to work you _must_ comment out any c_set_style() call!
C_BRACE = 0;
C_Colon_Offset = 0;
public variable C_Class_Offset = 4;


Brother MFC-7440N Toner empty message

Today I again got the 'toner empty' messages from my Brother MFC-7440N printer, for the second toner cartridge in this printers life. I printed 3639 pages total (new toner since 2506 pages). The printer would not print any page any more (after showing the toner almost empty message for ages).

This time the 'tape across toner window' trick would not work, even with black tape. The 'toner empty' message would only go away after doing this strange procedure which probably resets some internal state so it re-checks the toner state:

Open the front cover, then press the Back (german:Storno) button (the left bottom one of the four round black buttons), then press * 0 0 and then * 1 0. (Do not press 1 or 2 as indicated in the display. This is for the drum.) After this the 'toner empty' and also the 'toner almost empty' messages were gone and I could perfectly print again.

A subset of * 0 0 and * 1 0 might be sufficient. Not 100% sure the black tape is necessary at all.

Now the printer is printing happily and in perfect quality again. Lets see how long. :-)


Mac OS X Desktop Background is gray

One things which bugged me was that every now and then my desktop background on my Mac Book Pro would turn plain medium gray at tome point. I cannot even tell when this happens. Trying to reset the background image will not help when this occurs.

(I am using an external monitor connected to the Mac Book Pro and I put this configuration to sleep and I turn the monitor off at least once a day. I do not power down or reboot the laptop at all unless absolutely necessary.)

Logging out and back in solves the problem, but is of course tedious. I found a better workaround here: http://reviews.cnet.com/8301-13727_7-57389668-263/os-x-desktop-backgrounds-gray-after-waking-from-sleep/

  • open a Terminal 
  • type: killall Dock
The background image is managed by the Dock application which automatically restarts when killed. This is of course not a solution, but is a rather easy way to 'fix' this, until it happens again. :-)


Ubuntu 12.04: Boot Windows by default

If you have a dual-boot system with Ubuntu Linux and Windows and you would like to boot Windows by default instead of Ubuntu you will find to useful answers here:

I was using the GUI option since the manual option requires you to know the index of the Windows entry upfront (index starting at 0, for me Windows was at index 5).
This is what I did:

- Start a Terminal (search for 'Terminal' in one of the topmost icons), then paste/type this into the terminal:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
(enter password)
sudo apt-get update
sudo apt-get install grub-customizer
(program comes up)
- click Preferences
- select Windows as default
- Close
- Save
- close the program
- restart to test it, done


Viewing local manpages (files)

When I have an unformatted manpage file like foo.1 I had always big trouble looking at it. man foo.1 and setting the man path using -M did not help, and figuring out the usage of nroff manually is a pain. I found the answer on here which I just bluntly replicate here for my (and potentially your) convenience: http://craiccomputing.blogspot.de/2007/01/viewing-local-man-pages.html Just specify an absolute or relative path to the file, like:
man ./foo.1


CPU Benchmark Intel Core i3-2350M vs Intel Core i7-2820QM

Today I benchmarked my i3 Linux laptop vs my i7 MacBook. The results are what I expected, though I am quite happy about the performance of the 'slow' i3, which is a really cheap Lenovo B570 mainstream notebook.

The benchmarks are of course rather meaningless.

  • Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz 
    • (dual core, 4 cores with hyperthreading, no turbo boost)
    • (in a Lenovo B570 M58GMGE, 8GB, Ubuntu 12.04)
    • (according to cat /proc/cpuinfo)
  • Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz
    • (quad core, 8 cores with hyperthreading, turbo boost up to 3.4GHz)
    • (in a MacBookPro8,2, 8GB, Mac OS 10.7.4)
    • (according to Temperaturmonitor 4.94)
Benchmark      i3     i7     speedup
g++-4.6        6.8s   3.9s   1.74x
calc           5.7s   4.2s   1.36x
Cinebench CPU  2.22P  4.63P  2.09x (i3 Win7, i7 OSX)
Cinebench GL   12.40  27.90  2.25x (i3 Win7, i7 OSX)
Cinebench CPU  -      1.24   -     (VirtualBox guest Windows 7, host OSX, 1 CPU)
Cinebench CPU  -      4.27   -     (VirtualBox guest Windows 7, host OSX, 8 CPUs)
(s in real time)

Benchmark command lines:
  • time make CXX=g++-mp-4.6 OPT=-O3 -j 20 
    • compiling streplace 0.9.36
    • just 5 parallel objects (does not fill the 8 slots of the i7)
  • time calc 'log(fact(11**5))
    • single core
  • Cinebench 11.5 on Windows 7 SP1 and Max OS X 10.7.4


I support this to the fullness:

Copyright-restriction-free Christmas songs from the Musikpiraten e.V.:


Create Booklet PDF service (Mac OS X)

I used this tool to print an A5 document as booklet with staples and four pages per sheet on Mac:


This worked for me from Word 2011 on Mac OS X Lion 10.7.1 and probably works for any other program as well as this is a universal PDF service (Create Booklet in the PDF menu button in every print dialog).


Mac OS X Lion Apple Mail: Search does not work

After switching to Lion and importing all my old mails (actually all users) from the time machine backup I found that all old mails were there, but Mail would not find any of the old mails when searching.

This cured the problem for me:
Foe each individual mailbox (Inbox, Sent, all your own mailboxes) do:
Menu (not context menu): Mailbox -> Restore (in german: Postfach -> Wiederherstellen)

Juniper SSL VPN SAM does not work on Mac OS X Lion (10.7)

The reoccurring pattern continues: With every individual new Mac OS X version Apple kills existing VPN solutions for Max OS. This is at least true for Cisco VPN and also for the Juniper SSL PVN.

For the Juniper SSL VPN on Mac OS X Lion (10.7) the symptom for me was that the host checker never was loaded and never came up. The browser would just sit there indefinitely.

To get the Juniper SSL VPN working on Lion I found this solution:


(replicated on this webpage:)


1) Download and install Pacifist from: http://www.charlessoft.com/Pacifist.dmg
2) Download and Mount JavaForMacOSX10.6Update5 from http://support.apple.com/kb/DL1360
3) Download and Mount JavaForMacOSX10.7 from http://support.apple.com/kb/DL1421
4) Launch Pacifist and select Open Package
5) Select the mounted JavaForMacOSX10.6Update5.pkg
6) Hit install, when it prompts always select "Replace"
7) After it is complete, select Open Package and select the JavaForMacOSX10.7.pkg
8) When it prompts select "Replace"
9) You can copy Safari 5.0.5 from SL or if you do not have access to a SL machine
10) Download and mount Safari 5.0.5 from http://appldnld.apple.com.edgesuite.net/content.info.apple.com/Safari5/041-0564.20110413.Fi9pb/Safari5.0.5SnowLeopard.dmg
11) In Pacifist select Open Package and select the Safari 5.0.5 pkg file
12) This time select Extract and place it onto your desktop
13) Go to the Safari5.0.5SnowLeopard folder on your desktop, inside of that you will see an Applications folder, open that and you will see Safari, you can rename this Safari, I named mine Safari 5.0.5 and copy it to your main Applications folder or whereever you want.
14) Launch this Safari and go to About and make sure it says 5.0.5
15) Try your Secure App Manager.

Essentially you need to install the 10.6 Java and the 10.7 Java and downgrade to Safari 5.0.5 (at least 5.1 does not work).

The above description worked for me. I got a couple of error messages saying that files cannot replace folders, but this seems to be harmless. Just continue with 'Replace'.


Converting Mac/LF encoding to Latin1/LF

I'll never really get the concept behind the surfaces and default surfaces and no surfaces with recode. Anyway, this is how to convert a file with Mac encoding and LF linefeeds into Latin1 encoding and LF linefeeds:

recode mac/..l1 myfile.txt

Will we ever be able to get rid of the OS dependent behavior like 'Mac text files have CR lineendings' (which is even wrong since Mac OS X)?


Mac OS X Screen-Sharing: Cut-Copy-Paste

You can cut/copy/paste across to/from your screen sharing session. It just does not share the copy buffer automatically. Instead you need to transfer the copy buffer into either direction explicitly by selecting Edit -> Send copy buffer or Receive copy buffer (the actual english text might be different, you will figure it out). Doing so will not copy or paste anything in itself. You then need to paste on the target side.

For example to transfer from your host to your remote machine:

* copy on host machine
* Screen-Sharing: Edit->Send copy buffer
* paste on remote machine


Enabling Screen-Sharing on Mac OS X via ssh

Recently the Nvidia graphics card in my MacBook Pro died (the well known Nvidia hardware failure problem) and I wanted to control the (otherwise running fine) machine remotely but screen sharing was not enabled on the damaged machine. Some digging with Google brought up a very easy solution. You need ssh access to the machine for this of course.

# for <= Mac OS X 10.6.2 do:
sudo sh -c "/bin/echo -n enabled > /Library/Preferences/com.apple.ScreenSharing.launchd"
# for >= Mac OS X 10.6.3 do:
sudo sh -c "/bin/echo -n enabled > /private/etc/ScreenSharing.launchd"
# for Mac OS X Lion do: (use unload to disable)
cd /System/Library/LaunchDaemons/
sudo launchctl load -w com.apple.screensharing.plist

This post contains all these hints:

I personally just tested the second variant for 10.6.8 so this is all I can confirm. The other variants were just taken from this post above to have it all in one place.

Set page margins with TextEdit

I did not find any way to set the page margins with TextEdit itself in an RTD (RTFD) document. But actually this is quite easy to do by editing the RTF file (or RTFD/TXT.rtf file) directly as ASCII (for example with emacs etc).

On the fifth line you will find this:


The margl and margr are for the left and right margin, respectively (1440 = 1.0 inch = 25.4 mm). I added margt and margb for the top and bottom margin in the example above to be 360 (= 0.25 inch). These two are usually not part of an RTF which you created with TextEdit.


I just stumbled across this very true summary about technical debt and how to deal with it:


In my experience technical debt always happens. One must always try to avoid it but it can never totally be avoided (for multiple reasons). The main point is: You (the one who writes and maintains the code) must deal with it in your daily normal work every day immediately and you must organize to pay it off without asking for permission or telling other people.

The sentence 'We never have enough time to pay off our technical debt' does not make sense and is wrong. Nobody will provide you with time to do this and nobody will schedule it for the future. You need to deal with it yourself. You need to factor any cleanup into the planning. Do not expect extra time to be given to you to clean up later.

The sentence 'This is so wrong, we should fix it. Let's add this to our defect database so it does not get lost.' usually means: 'I don't understand or care about technical debt so let's put this into a strange ever growing database and forget about it. It will never get done.

Defect databases most of the time help to create technical debt since they encourage people to file work items which really need to be done now for the future. They do not help to reduce technical debt. A 8x8cm piece of paper with the top issues on it you need to work on is better. You usually will not be able to deal with more debt than what fits on this piece of paper.

I always compare technical debt with a snow-pusher which has a flat pushing front. By pushing harder it can always get a bit further by pulling back and by ramming into the snow wall once more, but after some time it can only ever advance by a couple of centimeters per push. The only way is to get rid of the snow is to get rid of the snow. Pushing the snow forward for future processing is not going to work.


Brother MFC-7440N Toner empty end of life

Today I got the 'toner empty' messages from my Brother MFC-7440N printer. I printed 850 pages total and this is a TN-2110 which came with the printer. About 10 pages before I got the 'toner almost empty' (all in german so these messages might not be accurate) message.

The MFC-7440N would stop printing any pages. The last pages before this came out 100% fine so I wanted just to continue to print with this toner cartridge. A lot of googling lead me to several 'solutions' which did not work for me. I am not yet 100% sure what helped, but taking out the toner cartridge with the black case, shaking the toner, and putting yellowish paper tape across both holes on the left and the right of the black toner cartridge housing solved the problem.

After putting the toner back I could print a page normally and I no longer see the 'toner empty' nor the toner almost empty messages. The page count is still at 851.

I also found these hints: Open the front cover, then press the Back (german:Storno) button (the left bottom one of the four round black buttons), then press * 0 0, or * 1 0. But both did not work for me. (Do not press 1 or 2 as indicated in the display. This is for the drum.)


Gimp does not start on Mac OS X

I don't know what is going, but the high level symptom is 100% reproducible since my very first days on Max OS X: After not having used Gimp for about 1-2 months is will never ever start when I need it.

Today it even would not start when re-installing it. Not a big surprise since this was already the latest and greatest version.

What helped, however, was hard killing the X11 app: Twice.

After killing the X11 app it came back again and I killed that again. I assume the automatic starting of X11 by Gimp is broken or that some other X11 app leaves the X11 server in a state such that Gimp cannot deal with it.


Nokia mobile phone SMS backup/download

Today I wanted to download all sent and received SMSes from my Nokia 6021 phone via Bluetooth. This utility worked for me on Mac OS X: Phone Director 1.4.2 available here: http://www.macmedia.sk/download.htm.

You need to create a COM port with the Nokia PC Suite service as described in the Bluetooth README which comes with Phone Director. Then select this new com port in the preferences.

When you save the SMSes as text it will save it with CR line endings and UFT-8 encoding. To convert this to Latin1 and LF line endings (which I prefer) use this:

recode utf8/cr..latin1 SMS.txt

You can get recode from: http://recode.progiciels-bpi.ca/


Keychain Access crashes (Schlüsselbundverwaltung Absturz)

Today my Keychain Access (in german Schlüsselbundverwaltung crashed reproducibly on startup. The first symptom was actually that Safari did not remember some passwords. Starting keychain access resulted in 100% reproducible crashes.

I found part of the solution on this german page:


Enable 'Start in 32-bit mode' on the Keychain Access program. This made it possible to start the Keychain Access and also the First Aid. The First Aid would however still crash and neither print a concrete problem nor repair it. It would just print 'crashed unexpectedly' (or so, in german).

iTunes would also still crash with the same error message (the same traceback) as Keychain Access.

So I rolled back the ~/Library/Keychains/login.keychain to a two weeks older version and this solved the problem. Apparently the keychain was corrupted. Now iTunes works again and I also can set Keychain Access back to 64 bit mode.

A bit frightening still.