Raspberry Pi 2 as my main desktop
            =================================
                        2015-09-02


A couple of weeks ago I started using a Raspberry Pi 2 as my
main desktop.  It was an experiment, suggested by some folks
on  the  #aardvark  channel  at   irc.cnaude.org,   and   to
my amazement it works great.   I  rarely  have  to  boot  my
monster PC since,  saving  a  lot  on  my  power  bills  and
finding new ways of  increasing  my  productivity  by  using
lighter apps at the same time.  In this  blog  post  I  will
describe  my  current  hardware  and  software   setup   and
give  some  tips   on   overclocking   this   single   board
computer.

Hardware
--------
The Rpi 2 is a neat little board  with  1GB  of  Ram  and  a
900MHz quad core ARM Cortex A-7 CPU.  It is connected to  my
router  through  the  on-board  ethernet  port  and  I  have
attached an external 3.5" HDD case which houses a relatively
slow Crucial BX 100 250GB SSD.  I chose to use a 3.5"  case,
since it has its own power  supply.   Most  2.5"  cases  out
there take their power straight from the USB port, but since
the Pi hasn't got power in abundance, I thought  this  would
be the smarter choice.  Since I'm connecting the SSD through
a slow USB2 port I could have also gone with a  regular  HDD
without loss of performance, but I kind of like the  silence
and lower energy consumption of the SSD.

The Pi get's its juice from a 2.1 Ampere iPad  adapter  that
came with the first iPad. I have used the shortest USB cable
I could find, to make sure all the juice gets to  the  board
without too much loss.  You really want at least 2  amps  to
power your Pi, because you're probably attaching a bunch  of
USB peripherals, and you might want to overclock.   You  can
find out that your Pi doesn't have  enough  power  when  the
"rainbow square" on the top right of  your  screen  appears.

To enable my overclocking endeavors I have  bought  a  small
copper heat-sink, and attached it to the CPU.  The Pi case I
got has small air holes on the top and enough room inside to
accommodate the CPU heat-sink.

Overclocking
------------
I have moderately overclocked my Pi.  I used  Hayden  James'
excellent tutorial [1] on this  subject.   It  appears  that
there's no silver bullet though, because the  build  quality
varies from Pi to Pi, so you'll just have to test and figure
out yourself.  It's best to start  conservatively  and  work
your way up. A good way to maximize the load of your CPU and
RAM is by installing 'stress'  and  running  this  commands:

$ stress -c 4 --vm-bytes $(awk '/MemFree/{printf "%d\n", $2
* 0.9;}' < /proc/meminfo)k --vm-keep -m 1

This will stress test all your cores and RAM. While doing
this you can monitor the system temperature with:

$ vcgencmd measure_temp

You can overclock the Pi by modifying /boot/config.txt.   My
current setup:

arm_freq=1000
sdram_freq=450
core_freq=450
over_voltage=8
force_turbo=1

This configuration will void your warranty  because  I  have
enabled force_turbo, to make sure that the scaling  governor
won't throttle down when the Pi is at rest.   I  don't  mind
that it throttles by default, but there's  this  little  lag
that's especially annoying when you load a  web  page.   The
governor usually throttles just after the  site  is  loaded,
making it less useful.

I managed to run the CPU at 1250MHz and both the  SDRAM  and
core at 550, but this wasn't too stable when working on  the
Pi for the entire day.  You don't want to overclock the  RAM
too much, since the chip's specification shows that  it  was
designed to run at 400MHz.  All in all I think that  forcing
turbo is the biggest benefit here.

With these settings my Pi runs perfectly stable  and  rarely
gets hotter than 50 degrees celsius.

Software
--------
I installed vanilla  Raspbian  on  my  Pi  using  the  NOOBS
network installer from the main  Raspberry  Pi  website.   I
quickly swapped the default desktop for xmonad, because it's
a lot lighter (and I'm a big Haskell fan-girl). I realized I
needed to change some of my computing habits, so I  switched
to Mutt for e-mail and  Newsbeuter  for  all  my  RSS-feeds.

When you start using the Pi full-time you will  get  a  keen
eye on how demanding all the processes  are  and  one  thing
that will  immediately  jump  at  you  is  how  poorly  most
browsers perform.  This is the reason why the  Raspberry  Pi
Foundation made modifications to Epiphany to make it  a  bit
more  snappy.   But  still,  you   would   like   to   avoid
javascript-heavy websites like youtube.com  and  you'll  get
adept at finding alternatives:  Youtube-dl  for  downloading
youtube videos for example.

I tried porting Fennec (Mozilla Mobile)  to  the  Pi,  since
this ARM-browser runs great  on  my  cheap  Android  tablet.
However, Mozilla seems to  have  switched  their  focus  for
Fennec to Android, so I had to rollback  100k  of  Mercurial
commits to get to a version that  still  had  Linux  Desktop
support.  Long story cut short: I couldn't get it to compile
and didn't want to make it a knight's quest  getting  it  to
run.  Instead I switched to using Dillo for quickly  looking
up things and  I'm  using  Epiphany  and  Chromium  for  web
development.  Chromium suffices nicely for debugging the web
apps I built  for  my  work  and  after  I  overclocked  I'm
actually quite happy with its performance.

It's a  bit  odd  that  browsers  don't  run  faster,  since
browsing works fine on cheap  ARM-based  tablets.   I  guess
those have a lot of special ARM-optimizations, and  it  also
helps that they are  more  closely  tight  to  the  GPU  for
displaying the latest CSS3 transforms  and  Javascript-based
trickery.  It would really be nice  if  someone  ported  the
Android webview, or Fennec to the Pi,  utilizing  OpenGL  ES
directly for rendering.

Speaking of OpenGL, you will notice that some games  in  the
default Raspbian repo run extremely slow.  This  is  because
they have been written for the regular OpenGL and need to be
ported to OpenGL ES for acceleration.  There  are  a  couple
projects that  can  help  you  porting,  without  having  to
overhaul the entire graphics stack.  Check out Regal [2] and
GLShim [3] if you're interested.

I'm trying to port Armagetron to the Pi, because  I  have  a
tron server daemon running on  my  VPS  and  would  love  to
continue playing it.  That aside, there's a lot of  fun  and
play to  be  had  on  the  Pi.   There  are  many  emulators
available,  and  I  recommend  using  Retropie  to   install
standalone versions of the available emulators.   Especially
Retroarch is pretty neat.

Quake 1 to 3 also run great on the Pi, as  does  Dosbox,  so
there's more than enough out there  for  your  leisurely  Pi
usage.  Personally I tend to avoid the official Pi store for
software, since it seems to  be  ridden  with  GPL-violating
packages.

Software freedom is actually the  one  thing  that  bugs  me
about the Pi.  Its firmware and drivers aren't all free  and
open source and although you can  decide  for  yourself  how
long your freedom beard grows about this subject, it doesn't
help the Linux and BSD support for  the  Pi.   Personally  I
would love to  run  NetBSD  on  this  machine,  but  without
hardware accelerated graphics I don't  see  the  point.   If
freedom is really important to you, you might want  to  wait
for   the   9   dollar    chip    by    Next    Thing    Co.

One thing that amazed me is that Libreoffice runs way better
than Abiword.  I quite expected the opposite and don't  know
whether this is  something  that's  caused  by  my  specific
setup, but Libreoffice runs nice and snappy.  Anyway,  since
my pc-swap fired up the minimizer  in  me,  I'm  considering
moving  all  my  Libreoffice  templates  to  LaTeX  instead.

Conclusion
----------
The Pi is a nifty bit of kit and more than  powerful  enough
to replace my desktop for most  of  my  computing.   Critics
regard it as a mere toy, but it's quite  powerful  at  that.
Fine-tuning the Pi, and finding new  and  better  apps  that
replace the bloated ones you were using is pretty sweet  and
good for your productivity.  I intend to keep using  the  Pi
for most of my work and hope to someday update it to  a  8GB
octacore Pi 3.


Hyperlinks:
[1]: http://haydenjames.io/raspberry-pi-2-overclock/
[2]: https://github.com/p3/regal
[3]: https://github.com/lunixbochs/glshim


-----------------------------------------------------------
                      Tags: english