HomeHome ArchiveArchive

Installing a Creative WebCam PRO eX under Linux

Video

The following steps were necessary to bring a Creative WebCam Pro eX up and running:

  1. Get the pwcx module (to have higher resolutions etc.) (the 2.4.20 module compiled with gcc 3.2 would work just fine, allthough I’m running 2.4.22 compiled with gcc 3.3.2)
  2. Install the pwcx driver under ` /lib/modules/usb` so that the module won’t be erased on each new make modules_install.
  3. Compile and install kernel with the following options:
    1. usb-uhci as a module (the usb module would NOT let the pwc driver recognize the cam)
    2. enable video4linux as a module (required by the pwc driver)
    3. get the 8.12 release of the pwc driver (the version shipped with kernel 2.4.22 (version 8.10) would not recognize the cam)
    4. replace the respective files under /usr/src/linux/drivers/usb with the ones from the pwc sources/tarball
    5. disable symbol versioning (otherwise the pwcx module wouldn’t work)
  4. modprobe usb-uhci
  5. modprobe pwc (modprobing for pwc before probing for usb-uhci wouldn’t recognize the cam)
  6. insmod --force /lib/modules/usb/pwcx-2.4.20.o (you can make that automatic)
  7. (Make the required /dev/video* devices - here they were made by the first video app I’ve installed (under Debian))

Audio

Sound input is over a C-Media Electronics Inc CM8738 onboard soundchip/-card. Output is over passive audio boxes or over the headset.

Both input and output are horribly low. Video conferencing without voice is useles. This sucks. Sound output from other programms (f.ex. xmms) is loud enough. Does anybody know why? Is the creative headset plain crap (expensive crap for that matter) or is it a software problem?

Software

I’ve tried to run camstream and gnomemeeting. Both seem to be running OK.

References

I’d be happy to hear from you if this HOWTO was useful for you (makes me feel better and write more useful howtos).

Enjoy - Tomas Pospisek

Embedding Ruby in C++

Introduction

Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, extensible, and portable. This class embeds the Ruby interpreter in a C++ application.

Usage examples

  RubyEval& ruby = *RubyEval::instance();

  ruby.eval("puts 'hello ruby'");

  assert( NUM2INT( ruby.eval("1+1") ) == 2 );

  assert(RubyEval::val2str(ruby.eval("'Regexp'.gsub(/x/, 'X')")) == "RegeXp");

Download

Class documentation

Public Methods

 

\~RubyEval ()

void 

run_file (const char *filename, ostream &out=cout)

 

Run Ruby interpreter with filename. **

VALUE 

eval (const char *code)

 

Evaluate code string. **

VALUE 

eval (const char *code, ostream &errout)

 

Evaluate code string and print errors. **

bool 

evalOk ()

 

Last evaluation was successful. **

Static Public Methods

RubyEval * 

instance ()

 

Singleton Instance. **

string 

val2str (const VALUE rval)

 

Convert Ruby value to string. **

string 

strval2str (const VALUE rval)

 

Convert Ruby string value to string. **

void 

exception_print (ostream &errout=cerr)

 

Get Ruby error/exception info an print it. **

string 

exception_info ()

 

Get Ruby error/exception info as string. **

Tuning Linux for a Toshiba Satellite 1800-712

Overview

Here are infos on how to tune Linux for better performance on the following hardware. It should apply to other machines than the specific Toshiba modell provided that some of your HW is the same. It is meant as a supplement to Enrico Segre’s page and jxh’s page that describe general configuration more in detail. Toshiba maintains quite good Linux pages. Useful tools are Jonathan Buzzard’s Toshiba Utilities, klaptop and apm.

I’d be happy to hear from you if you’ve succeeded in resolving any of the remaining problems on your toshiba.

Enjoy - Tomas Pospisek

Setup


Laptop Toshiba Satellite 1800-712 Multimedia audio controller: ALi Corporation M5451 PCI AC-Link Controller Audio Device (rev 01) IDE Interface ALi Corporation M5229 IDE (rev c3) VGA compatible controller Trident Microsystems CyberBlade XPAi1 (rev 82) - - Kernel 2.4.22 XFree86 4.3.0 ——————————– ——————————————————————–

Harddisk

The performance under a standard distribution kernel was painfully slow - hickups in the X screensaver were the rule. Freezes for a few seconds up to half a minute after heavy disk access happened. The ALi 15x3 driver remedies that - it quadrupled disk performance (!). Make sure that you put all settings in the BIOS to maximum performance (even the Fan setting!?!?!?!!!) otherwise the driver won’t be able to switch on DMA. Tuning the IDE system with hdparm didn’t bring any advantage. The IDE subsystem is currently performing at:

petertosh:~# hdparm -Tt /dev/hda

/dev/hda:
Timing buffer-cache reads:   128 MB in  1.20 seconds =106.67 MB/sec
Timing buffered disk reads:  64 MB in  3.48 seconds = 18.39 MB/sec

See also my results here. I used the rawtest program to test raw read/write throughputs.

Sound

Under the 2.4.18 kernel the sound module would die after a suspend/resume if it had some client playing music. The 2.4.22 kernel fixes that problem.

Video

At the moment I’ve compiled the VESA Framebuffer driver into the kernel. The Trident FB driver is giving me rather interesting psychadelic effects. For X I’m using Alan H’s trident X driver, version 4.3.0.

I needed to upgrade libxine from 1-beta9-1 to 1-rc0a-1 to be able to watch movies - before that X would crash with the x11 driver and performance with the xv and the xshm driver would be horrible.

Reboot/Restart

I’ve read somewhere that not using ACPI would fix the problem that the laptop will freeze after a reboot. It didn’t fix it here - it’s still freezing.

rawtest

rawtest is a tool to test throughput to raw devices. A raw device is an alternative interface to a block device where the linux kernel will not buffer anything. See raw(8) for more info.

To create a raw device first make an empty partition that is at least $BLOCKS large (see fdisk(8), cfdisk(8)). Then attach the raw device to that partition (see raw(8)). Finally run rawtest on it.

ALL THE DATA ON SUCH A DEVICE WILL BE DESTROYED!!!!!

So please BE CAREFUL when using rawtest and the disk partitioning tools.

Download: rawtest

Enjoy! Tomas Pospisek