Adding USB SVGA: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
On XO-1.5 and using recent Operating Systems, it is easy to make a USB2VGA adapter work. Using USB2VGA adapters slows your XO down, and has some limitations (see below for details).
See [[Remote display]] for other ways to connect a second display to an XO.

== Adding an SIS USB-SVGA adapter ==


= Selecting the right USB-SVGA adapter =
It is possible to make use of the USB connectors on the XO to plug in an USB-VGA adapter. Note that Linux supports some of these chips with the '''sisusbvga''' driver for the kernel side and '''sisusb''' module for the Xorg side. The hardware we used is branded as blue box and detected as :


This technique is supported with some USB-SVGA adapters based on the SIS USB-SVGA device, which uses the 'sisusbvga'(kernel) and 'sisusb'(xorg) drivers.
<pre>
Bus 004 Device 005: ID 0711:0900 Magic Control Technology Corp. SVGA Adapter
</pre>


This driver supports cards based on the Net2280/SiS315 chipset, according to [http://www.winischhofer.eu/linuxsisusbvga.shtml the author's page here]. Some devices reported to work [http://www.nslu2-linux.org/wiki/HowTo/AddVGAAdapter according to the NSLU2 wiki]
This driver supports cards based on the Net2280/SiS315 chipset, according to [http://www.winischhofer.eu/linuxsisusbvga.shtml the author's page here]. Some devices reported to work [http://www.nslu2-linux.org/wiki/HowTo/AddVGAAdapter according to the NSLU2 wiki]
Line 16: Line 12:
* [http://www.startech.com/Product/ItemDetail.aspx?productid=USB2VGA2&c=UK Startech.com USB2VGA2]
* [http://www.startech.com/Product/ItemDetail.aspx?productid=USB2VGA2&c=UK Startech.com USB2VGA2]


Using lsusb, we have seen these identifiers on devices that work:
'''Important notice :''' unless you compiled the sisusbvga module for your kernel, the module can possibly not be fully powered on, do not think the XO is not powerful enough to handle it, just insert the module to make sure it gets powered on.


Bus 004 Device 005: ID 0711:0900 Magic Control Technology Corp. SVGA Adapter
=== Compiling the kernel module ===


'''Important notice :''' In older OSs, unless you compiled the sisusbvga module for your kernel, the module can possibly not be fully powered on, do not think the XO is not powerful enough to handle it, just insert the module to make sure it gets powered on.
You will need to follow the instructions about rebuilding your kernel at [[Rebuilding OLPC kernel]].


= On XO OS 10.1.3 or newer =
Modify the olpc_defconfig to include the SiS USB-SVGA driver :


Just plug the USB2VGA device to the XO, and start it up (or restart it if it is on). The desktop will appear smaller on the LCD of the XO, becasue it will be a 1024x768 desktop.
<pre>
diff --git a/arch/i386/configs/olpc_defconfig b/arch/i386/configs/olpc_defconfig
index 8439431..74abf3b 100644
--- a/arch/i386/configs/olpc_defconfig
+++ b/arch/i386/configs/olpc_defconfig
@@ -215,7 +215,6 @@ CONFIG_NR_QUICK=1
# CONFIG_MATH_EMULATION is not set
# CONFIG_MTRR is not set
# CONFIG_SECCOMP is not set
-# CONFIG_VGA_NOPROBE is not set
CONFIG_HZ_100=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
@@ -1711,7 +1710,8 @@ CONFIG_USB_SERIAL_PL2303=m
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
</pre>


= On XO OS 10.1.1 and 10.1.2 =
Note that we actually chose to have support for the console on the driver, which is not mandatory but can be convenient when testing.


You will need to install some required modules from the main repositories
Now recompile your kernel using this olpc_defconfig. The newly generated kernel RPM package will include this driver.


yum install xorg-x11-sisusb xorg-x11-server-Xephyr
=== Including the driver in the OLPC development image ===


And then a test RPM that contains the required auto-configuration scripts
Now that you compiled the kernel it would be good to have it included into a testing image. Assuming that you use pilgrim, apply the following patch to get the xorg module installed as well as the kernel module not being removed by the installer script :


yum install http://dev.laptop.org/~martin/test-usbvga/olpc-utils-1.0.29-1.fc11.i586.rpm
<pre>
diff --git a/streams.d/olpc-development.stream b/streams.d/olpc-development.stream
index 58fdd0b..5a8c608 100755
--- a/streams.d/olpc-development.stream
+++ b/streams.d/olpc-development.stream
@@ -70,6 +70,7 @@ xorg-x11-drv-evdev
xorg-x11-drv-keyboard
xorg-x11-drv-mouse
xorg-x11-drv-cirrus
+xorg-x11-drv-sisusb
xorg-x11-utils
xorg-x11-xinit
xorg-x11-xauth
@@ -535,7 +536,7 @@ EOF
mkdir -p $INSTALL_ROOT/etc/sysconfig/modules
cat <<EOF > $INSTALL_ROOT/etc/sysconfig/modules/olpc-1.modules
#!/bin/sh
-module_list="i8042 i2c-dev sdhci dcon_bl gxfb_dcon psmouse ovcamchip cafe_ccic cafe-nand battery-class olpc-battery mousedev evdev atkbd leds-olpc"
+module_list="i8042 i2c-dev sdhci dcon_bl gxfb_dcon psmouse ovcamchip cafe_ccic cafe-nand battery-class olpc-battery mousedev evdev atkbd leds-olpc sisusb"
for i in \$module_list ; do
modprobe \$i >/dev/null 2>&1
done
@@ -1315,6 +1316,10 @@ EOF
lib/modules/*/kernel/net/ieee80211/ieee80211*.ko \
lib/firmware/*.bin | \
cpio -O boot/olpcrd -o -A -c
+ # add the sisusb driver
+ echo " - Adding sisusb SVGA adapter driver"
+ ls lib/modules/*/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko | \
+ cpio -O boot/olpcrd -o -A -c
case $VARIANT in
ext3|devel_ext3)
# the piix ide drivers are only needed for emulation
</pre>


Connect the USB SVGA adapter, and restart your XO.


= On XO OS 8.2.1 and earlier =
=== Compiling the xorg module ===


The process is more complex as you will have to compile kernel and xorg modules. See [[Adding_USB_SVGA/Fedora_9_and_earlier]
The package '''xorg-x11-drv-sisusb''' is outdated and therefore will cause ABI mismatch between this particular module and the Xorg server. As I could not recompile this module, I used an Ubuntu package to get the '''sisusb_drv.so''' file.

<pre>
mkdir -p extract/
wget http://fr.archive.ubuntu.com/ubuntu/pool/main/x/xserver-xorg-video-sisusb/xserver-xorg-video-sisusb_0.8.1-9_i386.deb
dpkg -x xserver-xorg-video-sisusb_0.8.1-9_i386.deb extract/
scp extract/usr/lib/xorg/modules/drivers/sisusb_drv.so olpc@laptop:/usr/lib/xorg/modules/drivers/
</pre>

Now that the module is copied to the laptop, we can start with the Xorg configuration file.

=== Configuring the Xorg ===

Add a monitor section for your projector :

<pre>
Section "Monitor"
Identifier "Monitor1"
ModelName "Monitor Model"
Option "DPMS"
EndSection
</pre>

and a device section for the SiS USB-SVGA device :

<pre>
Section "Device"
Identifier "Card1"
Driver "sisusb"
EndSection
</pre>

Kill your existing Xorg server and restart it with '''olpc-dm'''.

== Binaries ==

If you wish to get started quickly, here is a binary:

[http://anthill.hailmail.net/sisusb/sisusbvga.ko http://anthill.hailmail.net/sisusb/sisusbvga.ko]

This was compiled for Build 802, kernel 2.6.25-20080925.1.olpc.f10b654367d7065

You can install this module with

<pre>
# mkdir -p /lib/modules/`uname -r`/kernel/drivers/usb/misc/sisusbvga/
# cp sisusbvga.ko /lib/modules/`uname -r`/kernel/drivers/usb/misc/sisusbvga/
# depmod
</pre>

Then you will have to find a matching set of sisusb drivers for X Windows. The [[Adding_USB_SVGA#Compiling_the_xorg_module|drivers]] distributed in Ubuntu 8.10 are known to work.

== Adding a DisplayLink USB-VGA adapter on XO-1.5 ==
I was somewhat successful making this adapter work on my XO-1.5 running Fedora 11 (os205)

<ol>
<li>
Install kernel development libraries and get the udlfb kernel driver <pre>yum install kernel-devel kernel-headers gcc glibc glibc-devel glibc-headers
git clone http://git.plugable.com/webdav/udlfb/</pre>
</li>
<li>make & make install it</li>
<li>Your external display should go green when you install the kernel module <pre>modprobe udlfb</pre></li>
<li>Get xorg development libraries and the xorg driver<pre>sudo yum install xorg-x11-server-devel.i586
git clone http://git.plugable.com/webdav/xf-video-udlfb/</pre>
</li>
<li>make and make install it</li>
<li>copy the (incorrectly installed) driver to the right place<pre>sudo cp -a /usr/local/lib/xorg/modules/drivers/* /usr/lib/xorg/modules/drivers/</pre></li>
<li>Set up xorg.conf (this is the difficult bit).</li>
</ol>

I was able to make this work with either the external display or the built in panel, but not both at the same time. If the panel comes first in ServerLayout, then the external display is not used at all. If the external display comes first then both displays "work", but the built in panel has severe graphics corruption. I created two ServerLayout sections and hacked olpc-dm to select the external display if it was plugged in on boot.


== Pictures ==
== Pictures ==
Line 183: Line 54:


== Other Resources ==
== Other Resources ==

See [[Remote display]] for other ways to connect a second display to an XO.


This [http://www.olpcnews.com/forum/index.php?topic=1066.msg30956#msg30956 thread] has instructions that may be useful if you are running an alternate Linux distribution on your XO.
This [http://www.olpcnews.com/forum/index.php?topic=1066.msg30956#msg30956 thread] has instructions that may be useful if you are running an alternate Linux distribution on your XO.

Revision as of 14:49, 6 October 2010

On XO-1.5 and using recent Operating Systems, it is easy to make a USB2VGA adapter work. Using USB2VGA adapters slows your XO down, and has some limitations (see below for details).

Selecting the right USB-SVGA adapter

This technique is supported with some USB-SVGA adapters based on the SIS USB-SVGA device, which uses the 'sisusbvga'(kernel) and 'sisusb'(xorg) drivers.

This driver supports cards based on the Net2280/SiS315 chipset, according to the author's page here. Some devices reported to work according to the NSLU2 wiki

Using lsusb, we have seen these identifiers on devices that work:

 Bus 004 Device 005: ID 0711:0900 Magic Control Technology Corp. SVGA Adapter

Important notice : In older OSs, unless you compiled the sisusbvga module for your kernel, the module can possibly not be fully powered on, do not think the XO is not powerful enough to handle it, just insert the module to make sure it gets powered on.

On XO OS 10.1.3 or newer

Just plug the USB2VGA device to the XO, and start it up (or restart it if it is on). The desktop will appear smaller on the LCD of the XO, becasue it will be a 1024x768 desktop.

On XO OS 10.1.1 and 10.1.2

You will need to install some required modules from the main repositories

yum install xorg-x11-sisusb xorg-x11-server-Xephyr

And then a test RPM that contains the required auto-configuration scripts

yum install http://dev.laptop.org/~martin/test-usbvga/olpc-utils-1.0.29-1.fc11.i586.rpm

Connect the USB SVGA adapter, and restart your XO.

On XO OS 8.2.1 and earlier

The process is more complex as you will have to compile kernel and xorg modules. See [[Adding_USB_SVGA/Fedora_9_and_earlier]

Pictures

Here are some pictures of the OLPC working with the USB-SVGA adapter.


Other Resources

See Remote display for other ways to connect a second display to an XO.

This thread has instructions that may be useful if you are running an alternate Linux distribution on your XO.