Toshiba AC100 Screen Upgrade to 1280×720

In the last article I mentioned upgrading the screen on the Toshiba AC100 to 1280×720. Here is how to do it.

Remove the two rubber covers circled in the picture below, and remove the two screws underneath.

Toshiba AC100 Screen Bezel Screws

Toshiba AC100 Screen Bezel Screws

Gently pry the bezel apart using your fingernails or a plastic scraper. If you use something metal like a screwdriver, you are likely to leave unsightly gauge marks around the edges. The trick is to push the inner bezel inward to allow the clips to detach without breaking.

Prying the screen bezel of the Toshiba AC100 apart

Prying the screen bezel of the Toshiba AC100 apart

Perhaps you may get a better of idea from this photo regarding which direction you should be gently bending the bezel in to pry it apart.

Prying apart the screen bezel on the Toshiba AC100

Prying apart the screen bezel on the Toshiba AC100

Eventually the bezel will open up and you will be able to get to the display panel.

Bezel on the Toshiba AC100 opened up

Bezel on the Toshiba AC100 opened up

Gently bend the inner part of the bezel toward you and remove the four screws marked in the photo. Be careful – if your screw driver slips you are likely to damage the screen panel. Needless to say, this applies both while removing the old screen and fitting the new one.

Bend the bezel out of the way and remove the four screws holding the screen panel

Bend the bezel out of the way and remove the four screws holding the screen panel

Flip the screen toward you, and you will see the LVDS cable plugged into it. It is held on with tape, so you will first need to pry the tape off the screen. Be very careful when doing this – the connector is quite fragile.

Unplug the LVDS connector

Unplug the LVDS connector

When you have unglued the tape, unplug the LVDS connector and remove the screen.

Unplugged LVDS Connector

Unplugged LVDS Connector

Here is a picture of the removed screen. There are several variants of these panels, and the main thing to look for when getting a replacement panel is to make sure that the LVDS connector is in the same place (or as near as possible). Otherwise the cable won’t reach it.

Standard Toshiba AC100 display panel

Standard Toshiba AC100 display panel

The problem with the replacement 1280×720 panel (AU Optronics B101EW01) is that the mounting points are about 2mm narrower than the original panel. This isn’t strictly a problem, but if you don’t modify it, you will only be able to get two of the four screws back in, and the screen will be about 1mm off-center.

Screen mounts don't quite line up

Screen mounts don’t quite line up

To correct this, you will need to modify the mounts on the replacement panel by cutting the screw holes open on the outside. To be able to center the screen, you will have to modify all mounts.

Modifying the mounting points on the replacement screen panel

Modifying the mounting points on the replacement screen panel

This is what it will look like when you are finished. Be careful – the bits of metal you will remove are tiny and will try to fly off in a random direction. You don’t want these flying off into something they can short out!

Modified screen panel mounts

Modified screen panel mounts

Once you have completed this, the refitting is the reverse of removal. Plug in the LVDS connector, and re-apply the tape – there should be enough stickyness left in it to keep the connector in place. When putting the screws that hold the screen back in, make sure you center the screen – after all, that is why we modify the mounting brackets. Clip the bezel back shut (again, bending it gently toward the inside when pressing it back together will allow the clips to engage more easily. Replace the screws, and the rubber pads (they should still be sticky enough after one removal to remain in place – if they are not, you can use a tiny bit of double sided tape).

That is all you need to do from the hardware point of view, but if you leave it there, you will end up with a 1280×720 panel that only displays 1024×600 in the top left corner. If you look at the splash screen, you will get the idea – notice the white border at the bottom of the splash screen – that is the bottom edge of the 1024×600 area.

Truncated resolution

Truncated resolution

Unfortunately, the screen is initially configured by the boot loader, and since the specification and the source code for this are not open, it is not possible to change it. What we can change, however, is the kernel’s frame buffer driver to re-initialize the screen to the correct resolution. You can do this by applying this kernel patch.

Note: The screen will appear garbled between the splash screen and the point where the userspace re-initializes the display. This will typically happen when your rc.sysinit sets the display font, early during the boot process. Unfortunately, the driver currently doesn’t re-set the display panel as soon as the frame buffer is initialized.

That is pretty much it. I find that upgrading the screen makes a big difference in usability. As far as I am concerned, 1024×600 is completely useless. In comparison, 1280×720 is livable with.

20 thoughts on “Toshiba AC100 Screen Upgrade to 1280×720

  1. Very nice
    some questions
    can you give a source and price for the display?
    Do you see a chance to get a touchscreen inside? Maybe. hooking it up to some free i2c or USB free accessible internally?

    Great work.. one more reason to get uboot working.

    • As I mentioned in the article, the display panel I used is AU Optronics B101EW01. It is available from many sources:

      Here are some links for availability and pricing:

      Google Shopping Search

      AliExpress Search

      You could probably get away with getting something up to about 1mm thick over the screen. The problem with getting the touchscreen inside is wiring it up. It would require messy soldering onto the unused blank mini-PCIe header’s USB lines on the motherboard. Possible, but difficult.

      Alternatively, if you get a model with the 3G modem, you could remove the mini-PCIe modem card (who needs one when you can tether off an Android phone :-)), put in a mini-PCIe USB card and hook it up to that neatly. The only minor difficulty is that you have to get the model with the 3G modem (a bit more expensive, may not be available in all markets) – the ones without the modem usually come without the mini-PCIe connector soldered to the motherboard – which gets you back to the difficult soldering requirements. If you are going to do that, you might as well solder in the second mini-PCIe connector to the unused spot on the motherboard.

        • I don’t know, I haven’t tried it, but in principle, if the connector is in the right place it might be OK.

          If you do it using that screen, please post a message here saying whether it worked or not. 🙂

      • Did you just say it has a mini-PCIe modem card? Is it possible to put an ssd in that slot instead?

        Also great job, 1024×600 has been a pain.

  2. Thanks for the great AC100 reports (overclocking and upgrading).

    I am using ubuntu oneiric ocelot and would like to patch the kernel. Is there any how-to discription?

    • Generally speaking, if you are not the kind of a Linux user that is confident with all off the following:
      1) checking out the kernel tree out of git (gitorious link is in the OC-ing post)
      2)configuring the required options (typically you can cp /proc/config.gz to your kernel checkout directory, ungzip and rename to .config)
      3) compiling it
      4) rebuilding the initrd if required (using cpio)
      5) building the boot image out of the kernel zImage and initrd (using abootimg)
      and
      6) installing it onto the relevant boot partition (using dd)

      then you probably shouldn’t be doing this until you are confident with all of the above and have undertaken it successfully multiple times before you start considering patching the kernel as well either just before or just after step 2) above.

      If you are confident with all of the above, for AC100 specific details, you may want to take a look at the AC100 wiki and drop by on #ac100 on Freenode.

      I don’t use Ubuntu so I cannot provide any Ubuntu kernel packages, but perhaps someone on #ac100 could be persuaded to build and post some binaries.

      If there is enough interest I could be persuaded to put together an article with some generic instructions on AC100 kernel building, patching and updating, but how compatible that will be with the default Ubuntu setup (particularly WRT the initrd) I don’t know.

      Either way, if you are doing this, make sure you have an AC100 with the Android 2.1 boot loader with a known, tested recovery kernel image in place so that if your new kernel fails to boot you can always reboot into the recovery kernel and try again (you get the recovery boot menu if you hold down the home key in the bottom left of the keyboard during boot-up).

      If a lot of this doesn’t make sense, absorb the info on the wiki and drop by on #ac100 where we can fill in any gaps. 🙂

      • I would be interested! I now have ubuntu installed and would like to try some of your patches, but I don’t know how. I know cvs, svn and patching… so it shouldn’t be very difficult. But I’m not sure about all the compiling options? cross compiling? checking if I have a recovery kernel? flashing the kernel?

        What would be very interesting as well would be different systems, and how to get them running on the AC100. I only use ubuntu becouse it installs easy, but there must be a lot more/faster things we can use?

        • Compiling is a matter of checking a copy out of marvin24’s repository (or mine, but there are patches in there you’ll have to back out if you haven’t got the upgraded screen and cooling modification), and building the kernel in the usual way. You can re-use the config from the default Ubuntu kernel (look in /proc/config.gz).

          The AC100 specific procedures for building the aboot image and flashing are on the wiki, I’m sure you’ll find them if you google them.

          Performance wise, it’s all pretty much the same. You are unlikely to see any performance difference between different distributions – it all comes down to how you configure it. Personally I prefer RHEL (I have ported RHEL6 to ARM). Installing Fedora is just a matter of untarring the rootfs image onto the SD card. The only thing you’ll need to keep from your old install is /lib/modules as that’s where the drivers for your current kernel are.

  3. Very interesting! But I have one little question 🙂 If it’s possible to re-initialize the screen to the 1280×720 resolution, maybe there is a way to re-initialize HDMI-resolution? When I connect Toshiba AC100 to TV by HDMI cable, image is upscaled by interpolation, not real 1920×1080.

    • You should be able to specify the modelines explicitly in your xorg.conf. If you set put in a modeline for 1920×1080, it should do what you want. You can set up multiple modes and switch between them as required.

      • Thank you for answer! Is it available only in ChromeOS? Or there is some way to make it on Android?

        • You’d have to build your own custom ROM to get a higher res screen working under Android. No idea about ChromeOS I never tried it.

      • I’m not sure about the technical details, but I’ve been trying a few modelines to get my TV work and my only guess is that the hardware is very limited.
        Some modelines simply don’t work. The ac100 graphics hardware is very strange and it always looks like interpolating.

        • I never tried getting the external port to work, but from what I overheard on #ac100, it doesn’t support twin-view, you can only get internal or external port working at the same time. I don’t know if this is a hardware or driver limitation.

          The HD modes (720 and 1080) are standardised and you should be able to get suitable modelines. No other modes are guaranteed to work on a TV, AFAIK.

  4. Great job and thanks a lot for the nice explanation.

    In your kernel patch, you set the fbmem to 3.5 MB @ 509 MB which exceeds the 512 MB. As it apparently works for you (which I assume is due to the reset of these values in the paz00_panel_init method), I am just curious why this is the case.

    • Well spotted! I’m pretty sure that is, indeed, a bug.
      I suspect the reason it works anyway is because by default the frame buffer runs in 16-bit mode, and 1,280x720x2=1,843,200, so it still fits with plenty of room to spare.

      Having said that, if you look at the other post here regarding claiming back the unused frame buffer memory, it seems that the frame buffer memory is mapped at 448MB. On 3.0.x kernels it seems to be mapped at the top.

      Exactly what magic goes on in 2.6.38 that makes the mapping at 509MB go to 448MB, I have no idea.

      • The .start value is reset after the paz00 (paz00_panel_init in board-paz00-panel.c) gets initialized but there has been a bug (where the .end value has not been adjusted) such that
        .start = 448MB
        .end = 512MB
        instead of
        .end = 450MB

        This however should not matter (because of the small size of the actually needed fb, just as you said).

        The remapping also happens on the 38 kernel so by reading the comments that you pointed out, I get more confused as I cannot find a reason for the mapping difference. The 3.0.13 kernel that I am running is ignoring the second mem parameter anyway which I also do not understand.

        Anyway, thanks for the clarification.

Comments are closed.