Mast Kalandar

bandar's colander of random jamun aur aam

Thu, 07 Mar 2013

Fixing a hole


acer aspire one, atom n2600, cedar trail, debian, gma3600 [link] [comments ()] [raw]

``The netbook is dead, long live my Acer Aspire One (D270)!''

The laptop on which this is being typed is an Acer Aspire One (D270) running Debian in 64-bit mode which has been the mainstay for my computer usage since the first week of July 2012. It has worked brilliantly from day one, except for graphics as explained below, and this post outlines how I fixed the last remaining hole. The AO is ideal for my kind of use --- all major applications run full-screen under xmonad and with one major application as a terminal window running screen.

Coming to graphics, the root problem was that I had (as usual) not done a proper survey --- which would have told me that this machine used the infamous GMA3600 graphic chipset from Intel/PowerVR which has been the source of a headache for many. The first boot left me with an 800x600 screen which was clearly not as advertised. So quacking left me with the suggestion that a 1024x600 framebuffer (as advertised) was possible via grub and the VESA framebuffer. The ``fbdev'' driver for X completed the picture ... with the small catch that external VGA was not be available unless it was connected at boot time!

This small hole has bothered me off and on over the last 6-7 months, till finally, over the last one or two days, the problem has been fixed as explained below. So now this netbook is really perfect.

The kernel driver for this was developed by Alan Cox starting as far back as July 2011; it was then considered buggy and was in the staging area. In November 2011 it became a "regular" driver with kernel 3.2. However, it was still too buggy to be built for stock Debian kernels. In fact, up until linux-source-3.2 (version 3.2.35-2) for Debian wheezy, the driver continued to crash with a "kernel oops" whenever it was loaded on my machine. Recently, I downloaded linux-source-3.2 (version 3.2.39-2) from Debian sid to see if it could solve my problem. (Note that the Debian kernel team only started building the relevant kernel module since version 3.5.5~experimental.1.)

Update: The latest (as of 26/03/2013) the stock kernel package (version 3.2.41-2) for Debian wheezy has the module! So all I had to do was to install this kernel.

Having access to a really fast machine, I built the kernel on that using the usual method (INSTALL_MOD_STRIP=1 make -j20 deb-pkg) and installed it. In a wonderful moment, the screen flashed (to indicate the loading of the framebuffer module) and did not crash. However, that was not quite the end of the story.

It turns out out that one needs a more recent version (0.5.0) of the xerver-xorg-video-modesetting module than that which is provided under Debian wheezy (0.3.0). Luckily, building this was quite easy by just using the same "debian/rules" etc. as work with (0.3.0). So I have created a version 0.5.0-1~local1 which installs this X window driver.

This brings up X with a simple /etc/X11/xorg.conf which ensures that the modesetting driver is used. Everything else works as before except hibernation which results in a garbled screen!

To solve that one has to disable the video quirks and add a simple one of one's own /etc/pm/sleep.d/99redraw_on_resume. One also needs to add "gma500_gfx" to the list of modules loaded at boot time to ensure that the vesafb module does not load while resuming from hibernate.

In summary:

  1. Configure, build and installInstall the kernel from Debian sid (3.2.39) using the GAM500 drm module sample config.
  2. Build and install the xserver-xorg-video-modesetting driver (0.5.0) by using the same source packaging as for Debian wheezy (0.3.0)
  3. Tweak the directory /etc/pm/sleep.d to prevent any video quirks from running except a new quirk to setup X using xrandr.
  4. Ensure that "gma500_gfx" is loaded at boot time instead of the "vesafb" module

Archives

< March 2013 >
SuMoTuWeThFrSa
      1 2
3 4 5 6 7 8 9
10111213141516
17181920212223
24252627282930
31      

2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1997, 1995,