Linux-Hardware Digest #584, Volume #13           Sat, 16 Sep 00 11:13:06 EDT

Contents:
  Report: How I got my HP CD-Writer Plus 8210e (USB interface) running  (Thomas Jaeger)

----------------------------------------------------------------------------

From: Thomas Jaeger <[EMAIL PROTECTED]>
Crossposted-To: comp.os.linux.questions,comp.os.linux.setup
Subject: Report: How I got my HP CD-Writer Plus 8210e (USB interface) running 
Date: Sat, 16 Sep 2000 16:45:31 +0200

Hi Folks,

attached you will find my little report how I managed to get my HP
CD-Writer Plus 8210e (USB-Interface) running with Linux (Kernel
V2.4.0-test8). Have fun....

Any feedback is welcome.

BTW don't forget to read the CD-Writing howto. You will find more
details about the CD-writing principles.

Thomas
___________________________________________________________________________

Here we go...

Report: How to use the HP CD-Writer Plus 8210e (USB-Interface) with
Linux
Author: Thomas Jaeger  Email: [EMAIL PROTECTED]
Version: V1.0  

Table of contents
        1. Intro
        1.0 The risk is yours...
        1.1 Prerequisites
        1.2 First steps
        1.3 Preparing Linux
        1.4 Next steps
        1.5 It's time to hotplug
        1.6 Testing
        1.7 Mr Kirk: "Mr Zulu, power up the laser gun..."
        1.8 The End

1. Intro 
This is a short report with all the details how I managed to get my HP
CD-Writer Plus 8210e (USB-interface) running with Linux

1.0 The risk is yours...
I cannot promise that the information in this report will be of any help
to you. Neither can there be any guarantee that all this will work with
your
system. Following anything in this document means that you do this
completly
at your on risk.

1.1 Prerequisites
Linux kernel tree V2.4.0-test8
cdrecord V1.10a4
usbmgr V0.3.5
modutils-2.3.15 or better  (very important!)
PC with USB-Interface
HP CD-Writer Plus 8210e

1.2 First steps
Please check your PC BIOS-Setup whether your USB-Interface is enabled.
If you
are using MS Win... on the same PC and your USB-CD-Writer is running
fine, there
should be no need to check the BIOS-Setup.

1.3 Preparing Linux
You should be 100% familar how to configure a new Linux kernel, compile
and
install it. Don't do this if you are new to this. You might loose your
existing Linux kernel configuration, might not be able to boot again and
then
you are trapped.....

I am using a complete modular Linux kernel configuration. Therefore you
should
also be familar with the programs "insmod", "lsmod", "modprobe",
"depmod" from
the modutils-package. 

1.3.1 menuconfig
These are the options I selected during the kernel configuration
process:
Code maturity level options  ---> 
        [*] Prompt for development and/or incomplete code/drivers
Loadable module support  --->
        [*] Enable loadable module support
        [*]   Set version information on all module symbols
        [*]   Kernel module loader
Block devices  --->
        <M> Loopback device support
SCSI support  --->
        <M> SCSI support
        <M>   SCSI disk support
        <M>   SCSI CD-ROM support
        [*]     Enable vendor-specific extensions (for SCSI CDROM)
        (2) Maximum number of CDROM devices that can be loaded as modules
        <M>   SCSI generic support 
        [*]   Enable extra checks in new queueing code
        [*]   Verbose SCSI error reporting (kernel size +=12K)
        [*]   SCSI logging facility
        SCSI low-level drivers  --->
                deactivate any SCSI-Device you don't have!
File systems  --->
         <M> ISO 9660 CDROM file system support
        [*]   Microsoft Joliet CDROM extensions
        [*] /proc file system support
         <M> UDF file system support (read only)
USB support  --->
         <M> Support for USB
        [*]   USB verbose debug messages
        [*]   Preliminary USB device filesystem
        [*]   Enforce USB bandwidth allocation (EXPERIMENTAL)
         --- USB Controllers
        <M>   UHCI (Intel PIIX4, VIA, ...) support
        < >   OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support
                Select the correct USB Controller for your System!!!!!!
        <M>   USB Mass Storage support

That are all kernel options relevant for running my HP CD-Writer Plus
8210e
with Linux kernel V2.4.0-test8. Some of the options for verbose
debug/error messages are not really neccessary but they help finding
problems.
So if everything is running fine these options can be switched off.

Warning: You have to be familar with the process to compile and install
a new
kernel and new modules. If anything goes wrong or you did skip any
neccessary
step (e.g. setting up LILO) you might not be able to boot anymore.  I
mentioned it before: You are doing this completly at your own risk!!!

1.3.2 Installation
After compiling the kernel and the modules install
everything. You should check the modules directory for the following
modules:
cd /lib/modules/2.4.0-test8
cd kernel
ls fs/isofs
        isofs.o 
ls drivers/cdrom
        cdrom.o 
ls drivers/scsi
        scsi_mod.o  sd.o  sg.o  sr_mod.o
ls drivers/usb
        storage  usb-uhci.o  usbcore.o
ls drivers/usb/storage
        usb-storage.o

Reboot!

1.4 Next steps
Get the usbmgr-package. Untar it and read the README file. Do "make" in
the
source directory. Then do "make install".
Now we have to configure the usbmgr config file
cd /etc/usbmgr
Edit the file usbmgr.conf
a) remove the "#" in the section HOST CONTROLLER in front of one of the
"host"
choices. For my PC with Intel-chipset the correct line is:
host usb-uhci

b)
Add the following 3 lines at the end of the section STORAGE
### CD
# HP CD-Writer Plus 8210e
vendor 0x3f0 product 0x107 module scsi_mod, sr_mod, usb-storage

Now you have to run the "update_usbdb" program:
update_usbdb usbmgr.config

Now you can start "usbmgr". The program will go into the background so
there is
no output at all. You can check the "messages"-file with:
tail -n50 /var/log/messages

The output to look should look like:

Sep 15 12:55:28 usbmgr[326]: start 0.3.5
Sep 15 12:55:28 usbmgr[328]: open error "/etc/usbmgr/preload.conf"
Sep 15 12:55:28 kernel: usb.c: registered new driver usbdevfs
Sep 15 12:55:28 kernel: usb.c: registered new driver hub
Sep 15 12:55:28 kernel: usb-uhci.c: $Revision: 1.237 $ time 11:07:02 Sep
10 2000
Sep 15 12:55:28 kernel: usb-uhci.c: High bandwidth mode enabled
Sep 15 12:55:28 kernel: usb-uhci.c: USB UHCI at I/O 0xfce0, IRQ 10
Sep 15 12:55:28 kernel: usb-uhci.c: Detected 2 ports
Sep 15 12:55:28 kernel: usb.c: new USB bus registered, assigned bus
number 1
Sep 15 12:55:28 kernel: usb.c: USB new device connect, assigned device
number 1
Sep 15 12:55:28 kernel: usb.c: kmalloc IF c2e1f760, numif 1
Sep 15 12:55:28 kernel: usb.c: new device strings: Mfr=0, Product=2,
SerialNumber=1
Sep 15 12:55:28 kernel: usb.c: USB device number 1 default language ID
0x0
Sep 15 12:55:28 kernel: Product: USB UHCI Root Hub
Sep 15 12:55:28 kernel: SerialNumber: fce0
Sep 15 12:55:28 kernel: hub.c: USB hub found
Sep 15 12:55:28 kernel: hub.c: 2 ports detected
Sep 15 12:55:28 kernel: hub.c: ganged power switching
Sep 15 12:55:28 kernel: hub.c: standalone hub
Sep 15 12:55:28 kernel: hub.c: global over-current protection
Sep 15 12:55:28 kernel: hub.c: power on to power good time: 2ms
Sep 15 12:55:28 kernel: hub.c: hub controller current requirement: 0mA
Sep 15 12:55:28 kernel: hub.c: port 1 is removable
Sep 15 12:55:28 kernel: hub.c: port 2 is removable
Sep 15 12:55:28 kernel: hub.c: local power source is good
Sep 15 12:55:28 kernel: hub.c: no over-current condition exists
Sep 15 12:55:28 kernel: hub.c: enabling power on all ports
Sep 15 12:55:28 kernel: usb.c: hub driver claimed interface c2e1f760
Sep 15 12:55:28 kernel: usb.c: kusbd: /sbin/hotplug add 1
Sep 15 12:55:28 kernel: usb.c: kusbd policy returned 0x0
Sep 15 12:55:28 usbmgr[328]: "usb-uhci" was loaded
Sep 15 12:55:28 usbmgr[332]: mount /proc/bus/usb
Sep 15 12:55:28 usbmgr[328]: USB device is matched the configuration
Sep 15 12:55:28 usbmgr[328]: "none" isn't loaded

There are two other checks to do:
a) cat /proc/interrupts

           CPU0
  0:     991954          XT-PIC  timer
  1:      19880          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  8:          2          XT-PIC  rtc
  9:         14          XT-PIC  Cirrus Logic PD 6832, Cirrus Logic PD
6832 (#2)
 10:         42          XT-PIC  usb-uhci
 12:     243881          XT-PIC  PS/2 Mouse
 13:          0          XT-PIC  fpu
 14:      16314          XT-PIC  ide0
NMI:          0
ERR:          0                         

Result: usb-uhci has to show up connected to an interrupt: Here it is:
int10

b) lsmod

usb-uhci               21708   0  (unused)
usbcore                49856   1  [usb-uhci]
nfsd                   69928   4  (autoclean)
lockd                  49340   1  (autoclean) [nfsd]
sunrpc                 58244   1  (autoclean) [nfsd lockd]
unix                   14372  37  (autoclean) 

Result: The modules "usb-uhci" and "usbcore" should be there...
 
1.5. It's time to hotplug...

Power up your HP CD-Writer Plus 8210e and plug the USB-cable into your
PC USB
interface. This should trigger the usbmgr to load the nessesary modules
for
the CD-Writer.
For a first check:

tail -n50 /var/log/messages

The new output generated by the hotplug event should look like:

Sep 15 13:13:07 kernel: hub.c: port 1 connection change
Sep 15 13:13:07 kernel: hub.c: portstatus 101, change 1, 12 Mb/s
Sep 15 13:13:08 kernel: hub.c: portstatus 103, change 0, 12 Mb/s
Sep 15 13:13:08 kernel: usb.c: USB new device connect, assigned device
number 2
Sep 15 13:13:08 kernel: usb.c: kmalloc IF c2e1f660, numif 1
Sep 15 13:13:08 kernel: usb.c: new device strings: Mfr=1, Product=2,
SerialNumber=0
Sep 15 13:13:08 kernel: usb.c: USB device number 2 default language ID
0x409
Sep 15 13:13:08 kernel: Manufacturer: Shuttle Technology Inc.
Sep 15 13:13:08 kernel: Product: HP USB CD-Writer Plus
Sep 15 13:13:08 kernel: usb.c: unhandled interfaces on device
Sep 15 13:13:08 kernel: usb.c: USB device 2 (prod/vend 0x3f0/0x107) is
not claimed byany active driver.
Sep 15 13:13:08 kernel:   Length              = 18
Sep 15 13:13:08 kernel:   DescriptorType      = 01
Sep 15 13:13:08 kernel:   USB version         = 1.00
Sep 15 13:13:08 kernel:   Vendor:Product      = 03f0:0107
Sep 15 13:13:08 kernel:   MaxPacketSize0      = 64
Sep 15 13:13:08 kernel:   NumConfigurations   = 1
Sep 15 13:13:08 kernel:   Device version      = 2.00
Sep 15 13:13:08 kernel:   Device Class:SubClass:Protocol = 00:00:00
Sep 15 13:13:08 kernel:     Per-interface classes
Sep 15 13:13:08 kernel: Configuration:
Sep 15 13:13:08 kernel:   bLength             =    9
Sep 15 13:13:08 kernel:   bDescriptorType     =   02
Sep 15 13:13:08 kernel:   wTotalLength        = 0027
Sep 15 13:13:08 kernel:   bNumInterfaces      =   01
Sep 15 13:13:08 kernel:   bConfigurationValue =   01
Sep 15 13:13:08 kernel:   iConfiguration      =   03
Sep 15 13:13:08 kernel:   bmAttributes        =   40
Sep 15 13:13:08 kernel:   MaxPower            =    0mA
Sep 15 13:13:08 kernel:
Sep 15 13:13:08 kernel:   Interface: 0
Sep 15 13:13:08 kernel:   Alternate Setting:  0
Sep 15 13:13:08 kernel:     bLength             =    9
Sep 15 13:13:08 kernel:     bDescriptorType     =   04
Sep 15 13:13:08 kernel:     bInterfaceNumber    =   00
Sep 15 13:13:08 kernel:     bAlternateSetting   =   00
Sep 15 13:13:08 kernel:     bNumEndpoints       =   03
Sep 15 13:13:08 kernel:     bInterface Class:SubClass:Protocol =  
ff:00:00
Sep 15 13:13:08 kernel:     iInterface          =   04
Sep 15 13:13:08 kernel:     Endpoint:
Sep 15 13:13:08 kernel:       bLength             =    7
Sep 15 13:13:08 kernel:       bDescriptorType     =   05
Sep 15 13:13:08 kernel:       bEndpointAddress    =   01 (out)
Sep 15 13:13:08 kernel:       bmAttributes        =   02 (Bulk)
Sep 15 13:13:08 kernel:       wMaxPacketSize      = 0040
Sep 15 13:13:08 kernel:       bInterval           =   00
Sep 15 13:13:08 kernel:     Endpoint:
Sep 15 13:13:08 kernel:       bLength             =    7
Sep 15 13:13:08 kernel:       bDescriptorType     =   05
Sep 15 13:13:08 kernel:       bEndpointAddress    =   82 (in)
Sep 15 13:13:08 kernel:       bmAttributes        =   02 (Bulk)
Sep 15 13:13:08 kernel:       wMaxPacketSize      = 0040
Sep 15 13:13:08 kernel:       bInterval           =   00
Sep 15 13:13:08 kernel:     Endpoint:
Sep 15 13:13:08 kernel:       bLength             =    7
Sep 15 13:13:08 kernel:       bDescriptorType     =   05
Sep 15 13:13:08 kernel:       bEndpointAddress    =   83 (in)
Sep 15 13:13:08 kernel:       bmAttributes        =   03 (Interrupt)
Sep 15 13:13:08 kernel:       wMaxPacketSize      = 0002
Sep 15 13:13:08 kernel:       bInterval           =   20
Sep 15 13:13:08 kernel: usb.c: kusbd: /sbin/hotplug add 2
Sep 15 13:13:08 kernel: usb.c: kusbd policy returned 0x0
Sep 15 13:13:08 usbmgr[328]: USB device is matched the configuration
Sep 15 13:13:08 kernel: usb.c: registered new driver usb-storage
Sep 15 13:13:08 kernel: scsi0 : SCSI emulation for USB Mass Storage
devices
Sep 15 13:13:08 kernel: scsi : 1 host.
Sep 15 13:15:55 kernel:   Vendor: HP        Model: CD-Writer+ 8200  
Rev: 1.0f
Sep 15 13:15:55 kernel:   Type:   CD-ROM            ANSI SCSI revision: 
02 
Sep 15 13:15:55 kernel: Detected scsi CD-ROM sr0 at scsi0, channel 0, id
0, lun 0 
Sep 15 13:15:55 kernel: sr0: scsi3-mmc drive: 8x/24x writer cd/rw
xa/form2 cdda tray  
Sep 15 13:15:55 kernel: Uniform CD-ROM driver Revision: 3.11 
Sep 15 13:13:08 kernel: WARNING: USB Mass Storage data integrity not
assured
Sep 15 13:13:08 kernel: USB Mass Storage device found at 2
Sep 15 13:13:08 kernel: usb.c: usb-storage driver claimed interface
c2e1f660
Sep 15 13:13:08 kernel: USB Mass Storage support registered.
Sep 15 13:13:08 usbmgr[328]: "scsi_mod" was loaded
Sep 15 13:13:08 usbmgr[328]: "sr_mod" was loaded
Sep 15 13:13:08 usbmgr[328]: "usb-storage" was loaded

The last 12 lines are the important ones. After the line: "scsi: 1
host:" there
has to be the information about the HP CD-Writer (see above).
The line "Detected scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0"
tells you
that the CD-Writer has been found via the scsi/usb interface and the
device
can be accessed via /dev/sr0.

With my PC (maybe too old or too slow), I noticed that the
identification
process does not work perfectly every time. So if  there is no Vendor
info it
might be necessary to unplug the CD-Writer and replug it again. Normally
after
the 2nd or 3rd try it works just fine.

1.6 Testing

A first real test is to put a normal CD-ROM into the drive and to mount
it:
mount -r -t iso9660 /dev/sr0 /mnt
ls -l /mnt

Result: The ls command should show the contents of the CD-ROM

Next test should be with cdrecord:
(The cdrtools-1.10a04 package has to be installed first)

cdrecord -scanbus

The result is:

Cdrecord 1.10a04 (i586-pc-linux-gnu) Copyright (C) 1995-2000 Jörg
Schilling
Linux sg driver version: 3.1.16
Using libscg version 'schily-0.4'
scsibus0:
        0,0,0     0) 'HP      ' 'CD-Writer+ 8200 ' '1.0f' Removable
CD-ROM
        0,1,0     1) *
        0,2,0     2) *
        0,3,0     3) *
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) * 


More detailed information can be obtained with:

cdrecord -prcap -inq dev=0,0,0

The result is:

Cdrecord 1.10a04 (i586-pc-linux-gnu) Copyright (C) 1995-2000 Jörg
Schilling
scsidev: '0,0,0'
scsibus: 0 target: 0 lun: 0
Linux sg driver version: 3.1.16
Using libscg version 'schily-0.4'
Device type    : Removable CD-ROM
Version        : 2
Response Format: 1
Vendor_info    : 'HP      '
Identifikation : 'CD-Writer+ 8200 '
Revision       : '1.0f'
Device seems to be: Generic mmc CD-RW.

Drive capabilities, per page 2A:

  Does read CD-R media
  Does write CD-R media
  Does read CD-RW media
  Does write CD-RW media
  Does not read DVD-ROM media
  Does not read DVD-R media
  Does not write DVD-R media
  Does not read DVD-RAM media
  Does not write DVD-RAM media
  Does support test writing

  Does read Mode 2 Form 1 blocks
  Does read Mode 2 Form 2 blocks
  Does read digital audio blocks
  Does restart non-streamed digital audio reads accurately
  Does not support BURN-Proof (Sanyo)
  Does read multi-session CDs
  Does read fixed-packet CD media using Method 2
  Does not read CD bar code
  Does not read R-W subcode information
  Does read raw P-W subcode data from lead in
  Does return CD media catalog number
  Does return CD ISRC information
  Does not support C2 error pointers
  Does not deliver composite A/V data

  Does play audio CDs
  Number of volume control levels: 256
  Does support individual volume control setting for each channel
  Does support independent mute setting for each channel
  Does not support digital output on port 1
  Does not support digital output on port 2
 
  Loading mechanism type: tray
  Does support ejection of CD via START/STOP command
  Does not lock media on power up via prevent jumper
  Does allow media to be locked in the drive via PREVENT/ALLOW command
  Is not currently in a media-locked state
  Does not support changing side of disk
  Does not have load-empty-slot-in-changer feature
  Does not support Individual Disk Present feature
 
  Maximum read  speed in kB/s: 4234
  Current read  speed in kB/s: 4234
  Maximum write speed in kB/s: 706
  Current write speed in kB/s: 706
  Buffer size in KB: 2048



1.7 Mr Kirk: "Mr Zulu, power up the laser gun..."

Now it's time to use the laser gun. I use the current cdrtools-1.10a04
package. Take 
a look in the README file first.
For a first test you could do: (Insert a new CD-R first)
mkisofs -L -l -J -r file1 file2 dir1 dir2 | cdrecord -v -pad -eject
-dummy -nofix fs=4m speed=4 dev=0,0,0  -

This command will create an iso9660 image with the files/directories
"file1", "file2", "dir1" and
 "dir2" with joliet and rockridge extensions and will pipe the output
directly to the
"cdrecord" program. Cdrecord will be verbose (-v), will fill up the last
sector (-pad
), will eject the written CD, will do a test write (i.e. the laser is
off), will not fi
nalize the CD (-nofix), will use 4MByte of RAM as buffer, will use speed
= 4x and will
 use the scsi-device 0,0,0. Please note the important dash "-" at the
end. It tells 
cdrecord to accept data via the pipe.
Check whether the dummy write runs without any problems, especially that
the fifo
buffer does not run out of data.
Keep in mind: The max capacity of an CD-ROM is about 650MB. Check first
the amount of
 data you want to write on the CD-R. 

A real write command would be:
mkisofs -L -l -J -r file1 file2 dir1 dir2 | cdrecord -v -pad -eject
fs=4m speed=4 dev=0,0,0  -

The options you have to remove are:  -dummy -nofix

You can also use a new CD-RW:
mkisofs -L -l -J -r file1 file2 dir1 dir2 | cdrecord -v -pad -eject
blank=fast fs=4m speed=4 dev=0,0,0  -

This will also create an iso9660 image. To my knowledge there is at the
moment no UDF-write support
for CD-RWs with linux. The option blank=fast will erase all data on the
CD-RW first!!!!!

All other details how to use mkisofs and cdrecord can be found in the
man pages.

Never play around with the USB hotplug (better: hot unplug feature) of
the CD-Writer.
 You will loose data, damage the CD and even lock up your linux system.
Remove 
any CD before unplugging. 

1.8. The End

At the moment I can only use the commands mkisofs and cdrecord directly. 
So far had had no problems at all burning CDs with the HP CD-Writer Plus
connected to
 Linux. Performance and stability is good.
I started to play with kisocd but I noticed that there is a bug. Kisocd
generates not all the
neccessary options for mkisofs and the image creation stops with an
error message.
I hope this will be fixed soon, because the kisocd user interface is
nice and burning
 CDs is as easy as drag&drop.

------------------------------


** FOR YOUR REFERENCE **

The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:

    Internet: [EMAIL PROTECTED]

You can send mail to the entire list (and comp.os.linux.hardware) via:

    Internet: [EMAIL PROTECTED]

Linux may be obtained via one of these FTP sites:
    ftp.funet.fi                                pub/Linux
    tsx-11.mit.edu                              pub/linux
    sunsite.unc.edu                             pub/Linux

End of Linux-Hardware Digest
******************************

Reply via email to