Monday Oct 20, 2008

Use ekiga and a usb webcam for video conference

It is easy to setup a video conference by using ekiga.

1. Plug your USB webcam.
(See the list of webcams supported on opensolairs)

You then should have the device file /dev/video0 created automatically.

2. Configure ekiga with GUI.

When the first time running Ekiga or you click Ekiga menu
Edit -> Configuration Druid, you can see a dialog pop up. After click
"Forward" button for a couple of times, you see a dialog to ask for an
account, you can just click "I do not want to sign up for the
free service", and then go forward. When you are asked for choosing
"Video Manager", please choose V4L2. After these configuration steps,
can see the application window, and then click the video camera button
to see
the video. Now you will see the local video captured by your usb webcam.

3. To connect with others to see the remote video.

It is easy to use h323 protocol to connect two PCs. Just one step:

In the address blank of Ekiga main window, type:
h323:ip-address, e.g., h323:

The hostname or ip address belong to the PC that you want to call. Then type return or click the call button to issue the call. After the peer accepted the call, then you are connected. Remote video will be displayed on both sides.

If ekiga can not detect the webcam but the /dev/video0 file is already created, it might be the file permission problem. The access to /dev/video0 is
granted to login user only. So, if you are running ekiga using another user
name, then ekiga can not detect the webcam. Just change the user to the
login user will make it work.

After you are connected, clicked the "View" menu to try various ways of displaying remote/local video or zoom the video.

Sunday Jun 22, 2008

ugen driver in Solaris

ugen (USB generic) driver in Solaris is useful for users because it exports device nodes for each of the end point of a USB device. Users can access the raw data of the USB device via the ugen nodes. libusb or openusb interfaces are built upon this driver. It is not that staight forward that in what cases ugen nodes will be exported. Recently I was asked by people who want to utilize ugen device nodes in their projects. The following is trying to summarize all the cases.

ugen nodes are exported by default for the following devices:
1. Any USB devices that have not a class or vendor unique driver in
2. USB storage devices bound to scsa2usb(7D) driver. (refer to
scsa2usb(7D) manpage)
3. USB printer devices bound to usbprn(7D) driver. (refer to
usbprn(7D) manpage)
4. For a multi-interface USB device, usb_mid driver is by default
attached to it.

If none of the device's interfaces are explicitly
bound to the ugen(7D) driver, then usb_mid driver will create ugen
nodes for the device.

ugen nodes are not by default exported for some USB devices (a USB mouse, for example),
because it is bound to hid driver by USB class number and hid driver
does not create ugen nodes.

Monday Jun 02, 2008

Association: The Difference between USB and Wireless USB

The Wireless USB technology from tries to make it easy for end
users to connect a wireless USB device with a wireless USB host, quoted
from the specification: “The goal is that end users view it as the same
as wired USB, just without the wires.
”. However, there have to be
something different because of the difference of wireless and wired
environment. The most significant thing is "Association". It is
something happened before the first time that a wireless USB device can
be enumerated by the host system.

Association is special for wireless host and device, it is new for
wired USB users and it is not a straight forward concept for most
people. But if we take a look at the following question, we might know
it well.

Suppose two PC boxes are put in one room, each of them has a WUSB host.
A user brings a WUSB device to the room and turn on the device radio.
The question is, which PC box should enumerate the device? Or the
question can be asked in another way, how can the user choose a PC box
with which he would like to connect the wireless device?

It is not a question at all if in a wired case: the user just plug the
device to the PC box with which he want to connect the device. In
wireless case, a new way must be invented to let the specific wireless
hosts and devices know that which device should be connected to which
host. So, comes the technologies called "Association Model". It
makes the specific WUSB host and device create a shared CC (Connection
Context). A CC includes three elements: CHID (Connection Host ID), CDID
(Connection Device ID), CK(Connection Key). Once the CC is created
during the association process, it will be saved in the non-volatile
memory on both host and device. Thus, the host and device will "know"
each other and trust each other in a wireless environment.

According to WUSB specification, there are two Association Models optional for device manufactures and users.

- Cable Association

  User need to connect the WUSB device with his PC box with a USB cable
for a few seconds. The WUSB host on the PC box then talks to the device
to create a CC. The user then unplug the WUSB device and need not to
plug it any longer, unless he decide to connect the WUSB device with
another PC. With the CC stored in both WUSB host and device, when user
turn on the device radio, because the device and host already know each
other, they can authentication each other and be connected just as
wired USB. The only difference is, the connection is over air.

- Numeric Association

  User need not a USB cable in this case. But the WUSB device need to
have a screen to display digit numbers. The process is, user turns on
the device radio, and run the WUSB administration software on the host
to specify a WUSB host on the system to start to associate itself with
the device which is beaconing. The specified WUSB host then talk to the
device over air and create a CC. Because it is performed in the open
radio, user is asked manually confirm the association. A digital number
is displayed both on the host system screen and the device screen. If
they are the same, user press OK on both sides. If not, then the
association is not right.

From the host software's view, there must be an utility to manage the
CCs stored in host system. Because, on one system (e.g., a PC box),
there could be multiple WUSB hosts. And also, there could be multiple
WUSB devices associated with a WUSB host. What's more, when system
booting up, a daemon is needed to load the CCs from file system to the
WUSB host driver instances. A specific CC belongs to a specific WUSB
host instance.
To support the above issue, on Solaris, a software design is under
review. A daemon wusbd is introduced to be used to manage the CCs for
WUSB hosts and devices. It add/remove the CCs to CC database, load the
CC to host driver instances. A admin tool wusbadm is introduced for
user interfaces. It sends requests to wusbd when needs to operate CCs.

After the association process, from the host software view or the end
user view, it is all the same as wired USB devices, e.g., device
enumeration, USB client driver attach, connect/disconnect event
handling, devfs nodes, etc.

One of the goals for this design is the similar as the what the WUSB
spec tells, to have a simple user interface and make end user view WUSB
the same as wired ones. Connect and play, just without wires. Users
just need to turn on the device radio to connect, or, turn off the
device to disconnect. And something better in WUSB case: there are
always enough "ports" there. A WUSB host is supposed able to connect up
to 127 WUSB devices, theoretically. So, you just put WUSB devices
around your PC box, associated for once, then enjoy them as USB ones,
and without wires.

Saturday Dec 15, 2007

In practice: Ekiga video conference

It happened on this Tuesday (December 11, 2007). By running the latest Solaris Express on laptops, we had the first dual way Ekiga video conference between Sun engineering teams in Beijing and headquarter staff in MPK, US. During the whole meeting, which lasted more than one hour, the video stream is quite stable and the video quality is fine. I like video conferences much than audio only ones. People smile to each other and wave to each other, very nice. Many people know each other by emails or by conference calls, now, they see faces and smiles.

Not like some dedicated video conference equipments, the hardware equipments we used are very simple, just a laptop + a webcams + a projector. All are low cost commodity devices. In Beijing conference room, we use a Lenovo laptop running Solaris Express (build 76) and a Logitech USB webcam. US staff were using the similar equipments.

More detail usage info about Ekiga application and USB webcam driver can be found in my previous blogs:
USB webcams and video conferencing on Solaris
Have a larger video size in Ekiga

Monday Nov 26, 2007

amsn on OpenSolaris

amsn is a nice instance chatting application. It supports video chatting. A talent community member just ported it to Solaris. I received emails from him and had a chance to see the screen shots of amsn running on Solaris. It looks great! The video is captured from a USB webcam which is supported by usbvc(7D) driver. The following link is also from him, the patch for Solaris is submitted to amsn community:

I believe Solaris users will enjoy it!

Have a larger video size in Ekiga

Learned from an Ekiga developer, Ekiga supports a larger video size if you change the default value by gconf-editor. It is easy to have a larger video size in Ekiga application. I tried the following on my Solaris desktops, it works.

Login JDS, run 

# gconf-editor

In the gconf-editor window, select apps->ekiga->devices->video->size. Change the value of size from 0 to 1. Before quit, click somewhere else to save the change. Done.

Note, you need to "fully" quit Ekiga before change the above value. My favorite way is to run 'pkill ekiga' first.

Thursday Sep 27, 2007

New USB webcams tested on Solaris

I received five Logitech webcams weeks ago. They are all new models, very fancy. I then had a quick test on Solaris Express. Four of them work well with Ekiga application integrated in Solaris, just plug and play. One of them can not work, the reason is that it does not conform to USB video class spec from, it needs chip specific driver. The other four webcams passed more tests later. I have updated one of my previous blog to add the names of them to a device list which tells all the tested webcams on Solaris video class driver (usbvc(7D)).

 Device Name                          Vendor ID, Product ID

Logitech Quickcam Pro for Notebooks       046d,0991
Logitech Quickcam Deluxe for notebooks    046d,09c1
Logitech Quickcam Communicate Deluxe      046d,0992
Logitech Quickcam Pro 9000                046d,0990

So far, there are about 9 or more webcams are supported by Solaris video class driver (usbvc(7D)). Again, for a full device list, please refer to my updated blog for USB video webcams and applications.

Sunday Jun 24, 2007

USB Documents: for Solaris users and driver developers

I collected some useful links for Solaris USB users and driver developers as following. For ease of use, they are grouped into classes. Most of them are frequently updated and quite up to date. Before I put them here, I sent them to my colleagues, so you can also find them posted on some opensolaris forums by others.

USB overview

  1. Solaris USB FAQ
  2. Lists of USB devices verified on Solaris
  3. USB in the future -- Wireless USB technology

Using USB devices on Solaris

  1. Use USB devices on Solaris 10
  2. Use USB devices on Solaris Express
  3. Use USB printers on Solaris 10
  4. USB Security Script for USB device access control

Develop USB device drivers

  1. Develop USB drivers on Solaris
  2. USB project page on
  3. Documents for USB driver development on Solaris

Mail lists for Solaris USB user/developers


USB webcams and video conferencing on Solaris

OpenSolaris build 56 (released in January, 2007), USB video class
driver usbvc(7D) is integrated into Solaris. That is, if a user plug a
USB webcam that compliant to USB video class spec from, then
the webcam will plug and play on Solaris. More details see the "Heads-up".

In OpenSolaris build 63 (released in April, 2007), Ekiga video plugin
is also integrated. It is a video conferencing application, supporting
H323 and SIP protocol. Solaris users can enjoy video conference on
Solaris if they have a USB webcam and a audio speaker/microphone.

While I was developing usbvc driver, a JDS team was working on Ekiga
video plugin. There are a lot of cases need be tested for the driver
and Ekiga application. Ekiga is the first user of  the driver,
therefore, several problems are discovered when they run together. We
are lucky that we had a very good communication channel, so all the
bugs/issues were solved in a very efficient way. Before I integrate the
driver to Solaris source tree, Ekiga's video plugin can already work
very well on usbvc driver.

The most frequently asked question is, which webcams can be supported
by usbvc driver? Theoretically, all USB webcams that compliant to USB
video class spec can be supported. In practice, the following webcams
are tested, their video capture functions work well. Users are
encouraged to report problems if they have chances to use any other
webcams that compliant to the spec. The following list is last updated at Nov. 26, 2007. Please note that some devices have the same names but different IDs.

    Device Name                          Vendor ID, Product ID

Logitech Quickcam Pro 5000                046d,08c5
Logitech Quickcam Pro 5000                046d,08ce
Logitech Quickcam Fusion                  046d,08ca
Logitech Quickcam Orbit MP                046d,08cc
Logitech Quickcam Pro for Notebooks       046d,08cb
Logitech Quickcam Pro for Notebooks       046d,0991
Logitech Quickcam Ultra Vision            046d,08c9
Logitech Quickcam Deluxe for notebooks    046d,09c1
Logitech Quickcam Communicate Deluxe      046d,0992
Logitech Quickcam Pro 9000                046d,0990

The following ones are reported to work. Thanks people for reporting this. Last updated at Apr. 9, 2008

Logitech Quickcam Pro for Notebooks    046d,8c3
Logitech QuickCam Sphere AF               046d,994
HP         Deluxe DC-8872

Issues can be reported to or


Colin Zou is a software engineer enjoying improving operating systems. Besides sitting at a computer all day like a dull boy, he also likes hiking and the activities on the beach.


« June 2016