Tuning Ubuntu on Samsung Series 7 Laptop

I recently bought a 15.6″ Samsung Series 7 Laptop (NP700Z5B-S01U) from BestBuy for $999. While I generally loathe BestBuy, they are very convenient, and I tend to go shopping at strange hours, like 11pm at night. It was their good fortune, as well, that I decided to buy this laptop during Passover, as my normal go to NYC techshop, B&H Photo, was closed for the week.

 

I haven’t had a new laptop in four years, and so this was a purchase made with great preparation and trepidation. It came down almost entirely to weight, screen size + resolution and battery life. While an ultrabook was an attractive idea, I have grown used to a high-resolution, widescreen with my four years of using a MacBook Pro, and could not give that up. In addition, most ultrabooks are still quite under powered, and I still do quite a bit of serious development work, and need something beefy.

The Samsung Series 7 has an i7 processor and 8GB of RAM, but still manages to achieve 7-8 hours of battery life on Windows 7, and around 4 hours on Ubuntu (linux is still working on really solid battery management, and also companies like Samsung and Microsoft work quite a bit together on tuning). Still 4 hours for something this powerful, is pretty great, considering what I was getting with my old MBP workhorse (about 30 minutes!).

As my intention was to run Ubuntu on this hardware, I did quite a bit of research ahead of time around issues that others were having. It seems like with Ubuntu 10 and 11, there were a wide range of compatibility issues. With that in mind, I decided to jump ahead to the current beta of Ubuntu 12 Precise Pangolin. Right away, pretty much everything seemed to work, including the much aligned trackpad, though I did have to adjust the way tapping and dragging works, and basically stop using the click-and-drag method. The screen was clear and bright, suspend and resume worked flawlessly, the wifi was fast, and all my standard apps and tools were screamingly fast.

The big two breakthroughs to really making this hardware hum were though were finding a way to enable the custom Samsung function keys and to stop the endless fan noise from whining away. The fan noise was an indicator the processor was too hot, which also meant the battery life was not going to be so great. The estimate was only two hours, which was not good enough for my needs.

What I had to do was install the proprietary ATI/AMD graphics driver, instead of using the open-source video driver that is default in Ubuntu now. While I am used to this with MBP’s and the NVidia driver, and I had hoped not to have to use the proprietary driver with my new laptop. However, once I realized that by using the proprietary driver that the fan noise would stop, and my battery life would double, it was an easy choice to make. This driver can be easily installed through the System Settings -> Additional Drivers menu.

The second breakthrough was finding the Linux on my Samsung project, aka Voria. By installing the tools offered in this repo, all the various function keys necessary for brightness, volume and other options control mostly seem to work. I think there is also some other under the hood improvements, as well, but I haven’t fully parsed that. To install the tools, just follow the installation info from the link above, which basically involes Aptitude or ‘apt-get’. Here is a more specific example:

$ sudo add-apt-repository ppa:voria/ppa
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install samsung-tools
$ sudo apt-get install samsung-laptop
$ sudo reboot

This will enable the fan control hardware function key to work, and you can attempt to set it to “Silent” in order to stop those crazy fans!

I can happily say that I used my new laptop all weekend for an epic, intensive open-source hackfest, and it performed like a champ, had fantastic battery life, and generally impressed everyone who saw it. In a sea of Macbooks and Thinkpads, it definitely stands out, and at the current price, can’t really be beat.

From here, I am going to look into better utilizing the 8GB SSD cache as a swap or perhaps installing the core OS directly onto that. I don’t have much time these days to tinker in that way, but I would love to be able to get Ubuntu back up to a 7 to 8 hour battery life, especially with the travel I do. Otherwise, I will be experimenting with the HDMI video out, the Wifi Direct support and more in the coming days, as well as keeping up to date with the final Ubuntu 12 releases.

All in all, if you are looking for a new laptop and want to make the switch to Ubuntu, this is a setup I would highly recommend.

Update May 6, 2012: I have found an excellent new resources at http://bgrande.de/chronos7.html which provides a detailed overview of the status of various hardware components of the Series 7 support by Linux.

It also provides a new grub configuration to utilize that has helped reduce fan noise issues quite a bit. Just put the grub file here: http://bgrande.de/scripts/grub in place of your ‘/etc/default/grub’ then run ‘update-grub’.

If you are not having success with the proprietary video drivers aka fglrx (I am not using them b/c they do not work with 3.3 kernel), then you also should add ‘blacklist radeon’ to the end of ‘/etc/modprobe/blacklist.conf’ and then run ‘update-initramfs -u’ command to update the configuration of blacklisted hardware modules. Instead, your graphics will be powered by the on-chip Intel graphics driver, which works just fine.

You will want to reboot to see all the changes take affect.

Update September 3, 2012: After weeks of diving back into tuning of Ubuntu on my Chronos, I have finally made some progress. I had never entirely solved the fan noise issue, resulting in a constant, annoying “puff, puff, puff” sound, over and over again while I was working. It was not the CPU fan, it was the AMD Radeon graphics card fan, and all of the previous information in this post, would do nothing to calm or quiet it. I had solid battery life still (4-5 hours), but just this little constant annoying noise that drove me nuts.

I am happy to say that it seems (cross my fingers) , that I have solved the issue, as I now have a dead silent laptop. I am not sure what exactly did it, but here are the variety of combinations I have going now:

1) Ubuntu Precise 12.0.4.1, all the latest and greatest updates

2) Kernel 3.5: Here’s a YouTube video on installing it! http://www.youtube.com/watch?v=traegZveTKo

2) Update to latest BIOS firmware from Samsung. You can find your exact model, but it will be a page like this: http://www.samsung.com/us/support/owners/product/NP700Z5A-S02US
then go to “Manuals & Downloads” then “Firmware” and get the “Update Software (Firmware)” Windows EXE. You will need to boot into Windows to run this.

3) extra settings from /etc/default/grub
(make sure you used the proper escaped quote \”Linux\” below)

GRUB_CMDLINE_LINUX_DEFAULT=”acpi_osi=\”Linux\” pcie_aspm=force acpi=noirq acpi_backlight=vendor intel_iommu=off i915.modeset=1 i915.i915_enable_rc6=1 i915.lvds_downclock=1 i915
.i915_enable_fbc=1 i915.semaphores=1 i915.powersave=1 iwlagn.power_save=1 snd_hda_intel.power_save_controller=1 snd_hda_intel.power_save=1″

#to make sure your keyboard backlights are on
echo 8 > /sys/devices/platform/samsung/leds/samsung\:\:kbd_backlight/brightness

4) Using open/default graphics driver for internal Intel graphics, so blacklisted radeon and fglrx. In “/etc/modprobe.b/blacklist.conf” add these lines:

blacklist fglrx
blacklist radeon
blacklist radeonfb
alias radeon off
alias lbm-radeon off

then make sure to update your initramfs with command >  update-initramfs -u

5) Still using the various Voria/Samsung packages: samsung-tools and samsung-laptop

Again, I am not sure exactly which is the key element here, but I think it may be the combination of the latest BIOS update and Kernel 3.5. Good luck, and please post any comments or successes you have.

+n8fr8

 

 

QRAnime aka Blipverts aka Snowcrash

animated qrcode

Make your own and learn how to read this here: https://github.com/n8fr8/qranime/

/** HOW TO READ **/

1) Install the Android Barcode Scanner app
https://market.android.com/details?id=com.google.zxing.client.android&hl=en

2) Enable the "Bulk Mode" scanning under Menu->Settings

3) Activate and point the scanner at the animated code for awhile.

4) Press the Menu->History option to read the collected lines of text

The “Took”: Tibetan-enabled Nook eReader

Thanks to amazing work by Tibetan font experts Tom Meyer and Chris Fynn, as well as the Barnes and Noble Nook eInk reader device hackers at NookDevs.com, I have modified my $199 Nook  ($149 if you get the wifi only model!)  to support proper rendering of Tibetan characters. This is dynamic rendering of Unicode text, and not just static pre-rendered images.

You might have seen an earlier post I wrote about this here, and I’ve essentially done the same thing this time, but with an important addition of code from Tom that properly stacks the characters (a critical feature often not available in an OS font library), and a new Tibetan font (actually Bhutanese) from Chris which is small, lightweight and efficient enough to be used on Android. All together this provides support for reading Tibetan text on web pages, and within full application user interfaces, eBooks and more.

With up to 32gb of storage possible via the tiny micro SD Card, this one device could probably store and serve up the majority of Tibetan Buddhist texts, not to mention literary, poetic and historic works, that exist, all in a lightweight, energy-efficient device. Since the device is also networked, you can use it to pull down the latest Tibetan language online news and blogs.

And yes, this is all possible because the Nook is based on the free, open-source Android operating system. Yay for freedom in all forms!

This is support for both web pages, as well as full applications on the device.

Building tactile iPad apps using Open Standards

Some of you may know that I work part-time in the NY Senate CIO team helping improve transparency of our state government through the use of open technology standards. In addition, I am working on a number of mobile applications to provide broader “get it when you need it” access to pending legislation, committee meeting information and agendas, live video streams, Senator contact information and more. Today, we’ve got a cross-device mobile web site up at http://m.nysenate.gov that you are free to check out.

Our goal is to build all of these applications using a mobile web-based approach. This means instead of building apps in Java for Android, or Objective-C/Cocoa for iPhone, we use HTML5, CSS and Javascript. However, this does mean we have to spend some extra effort to make these web apps feel like actual, native mobile applications.

Fortunately, projects like JQTouch, a library that provides automatic formatting and interactivity tuned for the iPhone, make our lives much easier. However, with the release of the iPad this weekend, it has begun to hit us that that same old lists, menus and forms that make sense on the iPhone, may not be the best metaphor for the larger iPad screen. With that in mind, I’ve begun some basic prototyping focused on building a more tactile interface where the user can drag, pinch and swipe their way through all the legislative data they might want. Through using JQTouch, along with the JQuery Touch plugin, I was able to pull something together fairly quickly.

Here’s a video below of my first crack at this. You can also point your iPad or iPad Simulator device at http://m.nysenate.gov/ipad to play with it live. I’ll release some of this code shortly, but you can also view source on that same URL with any web browser.

Orbot: An Anonymous Proxy for Android using Tor

I’d like to make this post without much fanfare. Just looking to share information on the work I’ve been doing with the fantastically radical team over at the Tor Project, as part of my work on the Guardian Project. We have successfully ported the native C Tor app to Android and built an Android application bundle that installs, runs and provides the glue needed to make it useful to end users…. secure, anonymous access to the web via Tor on Android is now a reality. (Update: Tor doesn’t magically encrypt all of your Internet activities, though. You should understand what Tor does and does not do for you.)

However, there is still much work to be done… read on!

1) Tor 0.2.2.5-alpha release contains all the necessary code for building the Tor binary exe using the Android C SDK. I utilized http://github.com/tmurakam/droid-wrapper toolchain wrapper scripts to make life easier. This will produce the output Tor exe that can run on Android w/o needing root.

Update: Thanks to Jake, you can now read the updated Orbot BUILD doc for the step by step build how to.


(thanks to ioerror for the pic)

At this point, we are pretty convinced that the performance and efficiency of the C binary is quite significantly better than the Java-based ports of Tor running within Dalvik… this translate to a better experience for the user, with no noticeable increase in battery drain or lag on the rest of the device while Tor is running in the background.

2) Orbot – this is the new Android app which bundles the Tor binary, handles its proper installation on the device and then provides a gui for starting/stopping, view the log and torrc, etc. It also provides a built-in HTTP Proxy and is licensed under the Tor license.

home.jpgtor-on.jpglog.jpg

Just to be clear – we aren’t using the NDK or a shared library… we are actually extracting a binary and managing it via Runtime.getRuntime().exec() calls. This is 100% supported – who knew?! More info on how to do this here

The first code is up here… all is working, but def needs much polish:
https://svn.torproject.org/svn/projects/android/trunk/Orbot/

This post is in part a call for developers to contribute to the continued development of Orbot, so we can get it to a 1.0 state. The other big task is to modify the open-source, privacy focused Shadow browser, from the University of Cambridge DTG group, in order to make it work with our HTTP proxy. That would be a really great step forward, as right now, we have to ask users to set their global APN (read: https://svn.torproject.org/svn/projects/android/trunk/Orbot/INSTALL)

Thanks for everyone’s help and support to get here. I’d like to keep pushing on to a public release via the App Market very soon. Let me know if you’d like to contribute in any way – code, screen designs, icons, testing….

Domo arigato, Mr. Orbot-o!!