If not, then please click on the following link: http://users.bigpond.net.au/blmiller/linux/ess1868.html
Please update any links to this page you may have had.
Recently I have received a few requests asking how my efforts to get the tertiary IDE port running have been going. To tell you the truth I haven't even started. But I do know that it is possible. Take a look at Apendix D to see how it's all done.
Also, I just want to say that I am no expert on sound cards; have no ties with ESS Technologies; and make no claims that what I have done to get my ESS 1868 sound card running on my Linux system will work for you. This is just a helpfull hint for those who are experiencing a challenge getting more that that anoying BEEP out of the internal speaker.
Do a pnpdump > /etc/isapnp.conf and edit it to suit your needs. I have included my /etc/isapnp.conf below in Apendix A. This has set the sound portion of the card up to spare interupts, IO addresses and DMA channels for my PC. Things may have to vary depending on what you already have in your PC. With the isapnp utility comes a small script that is suitable to be run when your system starts. I run a Slackware distribution, and this script is called /etc/rc.d/rc.pnp, which is called from /etc/rc.d/rc.M. These file names and locations will vary depending upon which distribution you are using.
And install the new kernel (zImage) where is is surposed to go, and run lilo so it boots from the new kernel. If this doesn't make a lot of sense to you, then you will have to read the Kernel-HOWTO.make dep make clean make zImage (or make bzImage for 2.2 kernels) make modules make modules_install
This then sets the volume to 40% whenever the module is loaded.alias char-major-14 sound post-install sound /usr/local/bin/volume 40
If you don't run kerneld, then just putting the following in your rc.local will do:
# load sound module /sbin/insmod sound # Set volume /usr/local/bin/volume 40
/sbin/modprobe sound if [ -f /proc/sound ] ; then /sbin/insmod uart401 /sbin/insmod sb io=0x220 irq=5 dma=1 dma16=-1 esstype=1868 /sbin/insmod mpu401 io=0x330 /sbin/insmod opl3 io=0x388 /sbin/insmod v_midi # set the volume if [ -f /usr/local/bin/volume ] ; then /usr/local/bin/volume 70 fi fi
# $Id: pnpdump.c,v 1.8 1997/01/14 21:05:35 fox Exp $ # This is free software, see the sources for details. # This software has NO WARRANTY, use at your OWN RISK # # For details of this file format, see isapnp.conf(5) # # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER -DNEEDNANOSLEEP # # Trying port address 0203 # Board 1 has serial identifier 27 ff ff ff ff 68 18 73 16 # (DEBUG) (READPORT 0x0203) (ISOLATE) (IDENTIFY *) # Card 1: (serial identifier 27 ff ff ff ff 68 18 73 16) # ESS1868 Serial No -1 [checksum 27] # Version 1.0, Vendor version 1.0 # ANSI string -->ESS ES1868 Plug and Play AudioDrive<-- # # Logical device id ESS0000 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy # (CONFIGURE ESS1868/-1 (LD 0 # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0800 # Maximum IO base address 0x0ff8 # IO base alignment 8 bytes # Number of IO addresses required: 8 # (IO 0 (BASE 0x0800)) # (ACT Y) # )) # # Logical device id ESS1868 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE ESS1868/-1 (LD 1 # Multiple choice time, choose one only ! # Start dependent functions: priority preferred # First DMA channel 1. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode (DMA 0 (CHANNEL 1)) # Next DMA channel 0 or 3. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode (DMA 1 (CHANNEL 0)) # IRQ 5. # High true, edge sensitive interrupt (by default) (INT 0 (IRQ 5 (MODE +E))) # Fixed IO base address 0x0220 # Number of IO addresses required: 16 (IO 0 (BASE 0x0220)) # Fixed IO base address 0x0388 # Number of IO addresses required: 4 (IO 1 (BASE 0x0388)) # Fixed IO base address 0x0330 # Number of IO addresses required: 2 (IO 2 (BASE 0x0330)) # Start dependent functions: priority acceptable # First DMA channel 1. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode # (DMA 0 (CHANNEL 1)) # Next DMA channel 0 or 3. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode # (DMA 1 (CHANNEL 0)) # IRQ 5, 7, 9 or 10. # High true, edge sensitive interrupt (by default) # (INT 0 (IRQ 5 (MODE +E))) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0220 # Maximum IO base address 0x0240 # IO base alignment 32 bytes # Number of IO addresses required: 16 # (IO 0 (BASE 0x0220)) # Fixed IO base address 0x0388 # Number of IO addresses required: 4 # (IO 1 (BASE 0x0388)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0300 # Maximum IO base address 0x0330 # IO base alignment 48 bytes # Number of IO addresses required: 2 # (IO 2 (BASE 0x0300)) # Start dependent functions: priority acceptable # First DMA channel 0, 1 or 3. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode # (DMA 0 (CHANNEL 0)) # Next DMA channel 0, 1 or 3. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode # (DMA 1 (CHANNEL 0)) # IRQ 5, 7, 9, 10, 11 or 12. # High true, edge sensitive interrupt (by default) # (INT 0 (IRQ 5 (MODE +E))) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0220 # Maximum IO base address 0x0280 # IO base alignment 32 bytes # Number of IO addresses required: 16 # (IO 0 (BASE 0x0220)) # Fixed IO base address 0x0388 # Number of IO addresses required: 4 # (IO 1 (BASE 0x0388)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0300 # Maximum IO base address 0x0330 # IO base alignment 48 bytes # Number of IO addresses required: 2 # (IO 2 (BASE 0x0300)) # Start dependent functions: priority acceptable # First DMA channel 0, 1 or 3. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode # (DMA 0 (CHANNEL 0)) # Next DMA channel 0, 1 or 3. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode # (DMA 1 (CHANNEL 0)) # IRQ 5, 7, 9, 10, 11 or 12. # High true, edge sensitive interrupt (by default) # (INT 0 (IRQ 5 (MODE +E))) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0220 # Maximum IO base address 0x0280 # IO base alignment 32 bytes # Number of IO addresses required: 16 # (IO 0 (BASE 0x0220)) # Fixed IO base address 0x0388 # Number of IO addresses required: 4 # (IO 1 (BASE 0x0388)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0800 # Maximum IO base address 0x0ffe # IO base alignment 2 bytes # Number of IO addresses required: 2 # (IO 2 (BASE 0x0800)) # Start dependent functions: priority functional # First DMA channel 0, 1 or 3. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode # (DMA 0 (CHANNEL 0)) # Next DMA channel 0, 1 or 3. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode # (DMA 1 (CHANNEL 0)) # IRQ 5, 7, 9, 10, 11 or 12. # High true, edge sensitive interrupt (by default) # (INT 0 (IRQ 5 (MODE +E))) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0220 # Maximum IO base address 0x0280 # IO base alignment 32 bytes # Number of IO addresses required: 16 # (IO 0 (BASE 0x0220)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0800 # Maximum IO base address 0x0ffc # IO base alignment 4 bytes # Number of IO addresses required: 4 # (IO 1 (BASE 0x0800)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0800 # Maximum IO base address 0x0ffe # IO base alignment 2 bytes # Number of IO addresses required: 2 # (IO 2 (BASE 0x0800)) # End dependent functions (ACT Y) )) # # Logical device id ESS0001 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy # (CONFIGURE ESS1868/-1 (LD 2 # Multiple choice time, choose one only ! # Start dependent functions: priority preferred # Fixed IO base address 0x0201 # Number of IO addresses required: 1 # (IO 0 (BASE 0x0201)) # Start dependent functions: priority acceptable # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0200 # Maximum IO base address 0x020f # IO base alignment 1 bytes # Number of IO addresses required: 1 # (IO 0 (BASE 0x0200)) # End dependent functions # Compatible device id PNPb02f # (ACT Y) # )) # # Logical device id ESS0002 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy # (CONFIGURE ESS1868/-1 (LD 3 # Multiple choice time, choose one only ! # Start dependent functions: priority preferred # IRQ 12. # High true, edge sensitive interrupt (by default) # (INT 0 (IRQ 12 (MODE +E))) # Fixed IO base address 0x0168 # Number of IO addresses required: 8 # (IO 0 (BASE 0x0168)) # Fixed IO base address 0x036e # Number of IO addresses required: 2 # (IO 1 (BASE 0x036e)) # Start dependent functions: priority acceptable # IRQ 10 or 11. # High true, edge sensitive interrupt (by default) # (INT 0 (IRQ 10 (MODE +E))) # Fixed IO base address 0x0168 # Number of IO addresses required: 8 # (IO 0 (BASE 0x0168)) # Fixed IO base address 0x036e # Number of IO addresses required: 2 # (IO 1 (BASE 0x036e)) # Start dependent functions: priority acceptable # IRQ 10, 11 or 12. # High true, edge sensitive interrupt (by default) # (INT 0 (IRQ 10 (MODE +E))) # Fixed IO base address 0x01e8 # Number of IO addresses required: 8 # (IO 0 (BASE 0x01e8)) # Fixed IO base address 0x03ee # Number of IO addresses required: 2 # (IO 1 (BASE 0x03ee)) # Start dependent functions: priority functional # IRQ 10, 11 or 12. # High true, edge sensitive interrupt (by default) # (INT 0 (IRQ 10 (MODE +E))) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0100 # Maximum IO base address 0x01f8 # IO base alignment 8 bytes # Number of IO addresses required: 8 # (IO 0 (BASE 0x0100)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0300 # Maximum IO base address 0x03fe # IO base alignment 2 bytes # Number of IO addresses required: 2 # (IO 1 (BASE 0x0300)) # End dependent functions # Compatible device id PNP0600 # (ACT Y) # )) # End tag... Checksum 0x00 (OK) (WAITFORKEY)
<M> Sound card support Old configuration script (For: SM Wave, PSS & AudioTrix Pro) --> [ ] ProAudioSpectrum 16 support [*] Sound Blaster (SB, SBPro, SB16, clones) support [ ] Generic OPL2/OPL3 FM synthesizer support [ ] Gravis Ultrasound support [ ] MPU-401 support (NOT for SB16) [ ] 6850 UART Midi support [ ] PSS (ECHO-ADI2111) support [ ] 16 bit sampling option of GUS (_NOT_ GUS MAX) [ ] GUS MAX support [ ] Microsoft Sound System support [ ] Ensoniq SoundScape support [ ] MediaTrix AudioTrix Pro support [ ] Support for MAD16 and/or Mozart based cards [ ] Support for Crystal CS4232 based (PnP) cards [ ] Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers [*] /dev/dsp and /dev/audio support [*] MIDI interface support [ ] FM synthesizer (YM3812/OPL-3) support (220) I/O base for SB Check from manual of the card (5) Sound Blaster IRQ Check from manual of the card (1) Sound Blaster DMA 0, 1 or 3 (0) Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 ox x (0) MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of tx x (-1) SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (65536) Audio DMA buffer size 4096, 16384, 32768 or 65536 [ ] Additional low level drivers
<M> Sound card support x x < > Ensoniq AudioPCI (ES1370) x x < > Creative Ensoniq AudioPCI 97 (ES1371) x x < > S3 SonicVibes x x < > Support for Turtle Beach MultiSound Classic, Tahiti, Monterey x x < > Support for Turtle Beach MultiSound Pinnacle, Fiji x x <M> OSS sound modules x x < > ProAudioSpectrum 16 support x x <M> 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support x x <M> Generic OPL2/OPL3 FM synthesizer support x x < > Gravis Ultrasound support x x <M> MPU-401 support (NOT for SB16) x x < > PSS (AD1848, ADSP-2115, ESC614) support x x < > Microsoft Sound System support x x < > Ensoniq SoundScape support x x < > MediaTrix AudioTrix Pro support x x < > Support for OPTi MAD16 and/or Mozart based cards x x < > Full support for Turtle Beach WaveFront (Tropez Plus, Tropez, Maui) synth/soundcards x x < > Support for Crystal CS4232 based (PnP) cards x x < > Support for Yamaha OPL3-SA2, SA3, and SAx based PnP cards x x < > Limited support for Turtle Beach Wave Front (Maui, Tropez) synthesizers x x < > Support for Aztech Sound Galaxy (non-PnP) cards x x < > Support for AD1816(A) based cards (EXPERIMENTAL) x x < > Yamaha OPL3-SA1 audio controller x x <M> SoftOSS software wave table engine x x <M> FM synthesizer (YM3812/OPL-3) support x x <M> Loopback MIDI device support x x < > 6850 UART support x x Additional low level sound drivers ---> x x
Sound Driver:3.5.4-960630 (Wed Apr 29 17:44:40 EST 1998 root, Linux toyota 2.0.33 #2 Tue Jan 13 20:43:01 EST 1998 i586) Kernel: Linux toyota 2.0.33 #2 Tue Jan 13 20:43:01 EST 1998 i586 Config options: 0 Installed drivers: Type 2: Sound Blaster Type 7: SB MPU-401 Card config: Sound Blaster at 0x220 irq 5 drq 1,0 (SB MPU-401 irq 1 drq 0) Audio devices: 0: ESS ES1688 AudioDrive (rev 11) Synth devices: Midi devices: Timers: 0: System clock Mixers: 0: Sound Blaster
OSS/Free:3.8s2++-971130 Load type: Driver loaded as a module Kernel: Linux toyota 2.2.2 #9 Tue Mar 2 21:28:38 EST 1999 i586 Config options: 0 Installed drivers: Card config: Audio devices: 0: ESS ES1868 AudioDrive (rev 11) (3.1) Synth devices: 0: Yamaha OPL3 Midi devices: 0: Loopback MIDI Port 1 1: Loopback MIDI Port 2 Timers: 0: System clock Mixers: 0: Sound Blaster
The CONFIG_BLK_DEV_IDE_PCMCIA option that Jeff Epler talks about above is the Support removable IDE interfaces (PCMCIA) option in the Floppy, IDE, and other block devices ---> section of a make menuconfig kernel configuration.README.ide ========== This is a copy of a posting Jeff Epler made to the pnp-list, describing how he succeeded in getting his IDE port on a soundcard to work. I think it's fairly clear... The basic concept is to make an empty module with the sole purpose of talking to the IDE driver to register a new set of addresses. There is no driver code in the module, it is like a simple setserial for the IDE driver. --------------------------------------------------------------------------- Date: Mon, 6 Jan 1997 09:12:29 -0600 From: jepler@inetnebr.com (Jeff Epler) To: pnp-list@redhat.com Subject: SB16 PnP success with IDE interface X-Mailing-List:archive/latest/596 Hi. I've just succeeded in using the IDE interface on a SB16 PnP card, without resorting to initrd, rebooting after running isapnp, or other silly things. I'm using kernel 2.0.27, isapnp-1.8, and modutils 2.0. I enabled CONFIG_BLK_DEV_IDE_PCMCIA (and compiled ide in-kernel, which is the only choice in 2.0), which is half the magic. On the SB card I have a single cdrom drive, configured as the master. CONFIG_BLK_DEV_IDE_PCMCIA is misnamed, it allows for you to register and unregister ide interfaces after boot-time. While it may have been useful only to the PCMCIA crowd at some time in the past, it's useful to us now, while we're waiting for complete pnp support in the kernel. In my case, the proper time to register the third ide interface (ide2) is right after I run isapnp. As nearly as I can figure, the way to call the routines ide_register and ide_unregister are by a module. I enclose below the source for 'ide2mod.c'. Edit the definition of port, port1, and irq according to the resources you can allocate to your sb16's ide interface. Then, compile it gcc -DMODULE -c ide2mod.c -o ide2mod.o and put it somewhere that's available when you run isapnp. Then, (re-running isapnp to enable the ide interface if necessary), test it by running as root insmod ide2mod.o you should see output like this: hde: NEC CD-ROM DRIVE:251, ATAPI CDROM drive ide2 at 0x1e8-0x1ef,0x3ee on irq 11 ide_register(1e8, 3ee, 11)->2 Initialization of ide2mod failed Don't be alarmed at the last line -- this merely means that the module is not staying resident in kernel space. The three earlier lines are the important ones. It shows that my cdrom drive has been recognized as /dev/hde and that the address for ide2 is correct. You can also unregister the interface with insmod ide2mod.o do_register=0 which may be useful if you're fiddling around. In /etc/rc, it's run like this: /sbin/isapnp /etc/isapnp.conf /sbin/insmod /boot/ide2mod.o I hope this is of some use to someone out there. If you have any questions or suggestions, please mail them to jepler@inetnebr.com, or just reply on the list. Jeff ----------------------------------- ide2mod.c ----------------------------- #define MODULE #include #include #include int port=0x1e8; int port1=0x3ee; /* usually port + 0x206 for some reason */ int irq=11; int index=2; int do_register=1; int res; init_module() { if (do_register) { printk("ide_register(%x, %x, %d)->%d\n", port, port1, irq, res=ide_register(port, port1, irq)); } else { printk("ide_unregister(%d)->%d\n", res=index, ide_unregister(index)); } return res; } cleanup_module() { } ---------------------------- end -- ide2mod.c ----------------------------- ----------------------------------- part of /etc/isapnp ------------------- # # Logical device id CTL2011 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL002b/1079828 (LD 1 # Compatible device id PNP0600 # ANSI string -->IDE<-- (INT 0 (IRQ 11 (MODE +E))) (IO 0 (BASE 0x01e8)) (IO 1 (BASE 0x03ee)) (ACT Y) )) ---------------------------- end -- part of /etc/isapnp -------------------