Next Previous Contents

3. Πως να εγκαταστήσετε την υποστήριξη ήχου για SB AWE

3.1 Πράγματα που θα χρειαστείτε

Αυτές είναι οι απαιτήσεις για υποστήριξη SB AWE κάτω από Linux:

Αν έχετε μια κάρτα PnP, θα χρειαστείτε επίσης:

Δείτε στο τμήμα Πηγές για πληροφορίες σχετικά με το από που μπορείτε να το αποκτήσετε.

Αν έχετε ένα σύστημα Debian GNU/Linux , σημαίνει πως θα χρειαστείτε και τα πακέτα kernel-source-<version>, awe-drv και ίσως το πακέτο isapnptools. Θα θελήσετε και μερικά από τα άλλα awe-* πακέτα παρόλο που δεν είναι αναγκαία. Συστήνω το kernel-package για εύκολο compile και εγκατάσταση του πυρήνα.

3.2 Αρχίζοντας

Ας υποθέσουμε πως έχετε καταστήσει κανονικά την κάρτα στην υποδοχή της στην μητρική και πως πιθανά ήδη την δοκιμάσατε σε περιβάλλον DOS ή Windows.

Το επόμενο βήμα είναι να αρχικοποιήσετε την κάρτα κατά την εκκίνηση αν και μόνο αν είναι μια κάρτα PnP. Ακολουθήστε την τεκμηρίωση στο πακέτο του source για να κάνετε compile και να εγκαταστήσετε τα isapnptools (ή απλά χρησιμοποιήστε το Debian binary πακέτο), και κάντε:

# pnpdump > /etc/isapnp.conf

σαν root. Αυτό θα δημιουργήσει ένα κατ' ελπίδα καλό αρχείο ρυθμίσεων για τις PnP κάρτες σας, αλλά με όλα τα devices σε σχόλια. Παρακαλώ διορθώστε το αρχείο αυτό προσεκτικά, και συγκρίνετε τις τιμές για τα κανάλια DMA, IO και interrupts με τις ρυθμίσεις τις κάρτας σας κάτω από περιβάλλον DOS ή Windows αν αυτό είναι δυνατόν (με τα Win95, κοιτάξτε τα resources που χρησιμοποιούνται από την κάρτα, κάτω από το resources στον device manager). Αν έχετε προβλήματα διαβάστε προσεκτικά την τεκμηρίωση που έρχεται μαζί με τα isapnptools.

ΠΡΟΣΟΧΗ: τα isapnptools συχνά αποτυγχάνουν να εντοπίσουν και τις τρεις θύρες I/O της συσκευής SB AWE Wave Table . Συγκρίνετε προσεκτικά την εγγραφή σχετικά με WaveTable στο isapnp.conf σας με το παράδειγμα στο τέλος αυτού του HOWTO. Αν είναι αναγκαίο τροποποιήστε τις I/O base διευθύνσεις.

ΠΡΟΣΟΧΗ: Σύμφωνα με το isapnp-faq, μερικές φορές τα isapnp αποτυγχάνουν να προγραμματίσουν τον αριθμό της λογικής συσκευής (logical device). Αν αντιμετωπίσετε μηνύματα λάθους όπως το ακόλουθο:

Error occurred executing request 'LD 2' on or around line...

τότε προσπαθήστε να προσθέσετε (VERIFYLD N) στην αρχή του isapnp.conf. Θα πρέπει να χρησιμοποιήσετε τουλάχιστον την έκδοση1.10 για να δουλέψει αυτό. Αν δεν μπορείτε να χρησιμοποιήσετε έκδοση 1.10 ή νεώτερη, μπορείτε επίσης να κάνετε POKE τους αριθμούς του logical device απευθείας. Αναφερθείτε στο isapnp-faq για περισσότερες πληροφορίες σχετικά με αυτή την προσέγγιση. Αν δεν σας δουλέψει, επικοινωνήστε μαζί μου (θεωρώ πως και οι άνθρωποι των isapnp θα ενδιαφέρονται επίσης).

ΠΡΟΣΟΧΗ: Βεβαιωθείτε πως η τελευταία γραμμή είναι (WAITFORKEY), η οποία μπορεί να παραλείπεται σε μερικές παλιότερες εκδόσεις του pnpdump.

Ένα δείγμα isapnp.conf για μόνο μια κάρτα PnP (την κάρτα ήχου) βρίσκεται στο τέλος αυτού του κειμένου (δες τμήμα Πρότυπο - Δείγμα <tt>isapnp.conf</tt>).

Αν έχετε ένα σύστημα Debian, δεν χρειάζονται επιπλέον ρυθμίσεις. Τα isapnp θα αρχίσουν κατά την εκκίνηση στο /etc/init.d/boot με αυτό το κομματάκι κώδικα, που μάλλον θα θέλατε να συμπεριλάβετε στα scripts εκκίνησής σας:


# Configure the isa plug and play boards before loading
# modules. Need to do this before loading modules to get
# a chance of configuring and starting PnP boards before
# the drivers mess all this up.
#
if [ -x /etc/init.d/isapnp ]
then
  /etc/init.d/isapnp start
fi

όπου το /etc/init.d/isapnp είναι


#! /bin/sh
# /etc/init.d/isapnp: configure Plug and Play boards
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0

Αν έχετε κάποια άλλη διανομή Linux, είσαστε μόνοι σας. Δεν ξέρω τι να κάνω (κανείς πρόθυμος να υποβάλλει πιο συγκεκριμένες πληροφορίες?). Μόνο βεβαιωθείτε πως τα isapnp αρχίζουν πριν τα modules φορτωθούν(δες παρακάτω).

3.3 Compile του πυρήνα

Πριν αρχίσετε να κάνετε ξανά compile τον πυρήνα θα πρέπει να εφαρμόσετε το AWE Driver Extension patch στον driver ήχου. Ακόμα και αν το δέντρο κώδικα του πυρήνα σας περιέχει το awedrv extension (για να το δείτε αυτό τσεκάρετε το /drivers/sound/lowlevel/ ), μπορεί να θελήσετε να αναβαθμίσετε το λογισμικό του awedrv . Ακολουθήστε τις οδηγίες εγκατάστασης directory του κώδικα του awedrv. Εν συντομία, θα πρέπει να τρέξετε ένα script εγκατάστασης που εφαρμόζει τα patches στον κώδικα του πυρήνα.

Να είσαστε προσεκτικός για το αν πράγματι έχετε αναβαθμίσει τον πυρήνα αφού τρέξατε το script εγκατάστασης. Το script ελέγχει απλά αν κάποιο αρχείο υπάρχει και αν ναι, δεν εφαρμόζει το απαιτούμενο patch. Σας συμβουλεύω να απομακρύνετε το αρχείο drivers/sound/lowlevel/awe_wav.c πριν τρέξετε το script αφού αναβαθμίσετε τον κώδικα του πυρήνα.

Μετά θα πρέπει να ρυθμίσετε τον πυρήνα για υποστήριξη ήχου. Ελπίζω να γνωρίζετε τα βασικά για το compile του πυρήνα, δείτε το Sound HOWTO και το Kernel HOWTO για λεπτομέρειες. Προχωρήστε στο directory του κώδικα του πυρήνα σας (/usr/src/linux για παράδειγμα), και κάντε:

# make config

ή make menuconfig ή make xconfig. Μετά έχετε να ρυθμίσετε τον πυρήνα σας με τον γνωστό τρόπο. Εκμεταλλευτείτε αυτήν την ευκαιρία για να κάνετε ένα μικρό και ισχυρό πυρήνα, ειδικά σχεδιασμένο για το σύστημά σας. Βεβαιωθείτε πως απαντήσατε στο Enable loadable module support με Y, αν θέλετε να εγκαταστήσετε τον driver ήχου σαν loadable module (αναγκαστικό αν έχετε κάρτα PnP), αλλά είμαι σίγουρος πως έτσι και αλλιώς θα θελήσετε να το κάνετε αυτό.

Σε κάποιο σημείο, θα ερωτηθείτε για το αν θέλετε υποστήριξη καρτών ήχου. Απαντήστε με Y ή με M αν δεν έχετε κάρτα PnP. Πρέπει να απαντήσετε με M, για module, αν έχετε κάρτα PnP. Θα πρέπει να κάνετε compile την υποστήριξη ήχου σαν module αν έχετε κάρτα PnP γιατί η κάρτα PnP πρέπει να αρχικοποιηθεί πριν το module φορτωθεί.

Οι ακόλουθες ερωτήσεις θα πρέπει να απαντηθούν με Y , όλες οι άλλες με N :


Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?]
Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?]
/dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?]
MIDI interface support (CONFIG_MIDI) [Y/n/?]
FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?]
lowlevel sound driver support [Y/n/?]
AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?]

Μόνο η τελευταία είναι πραγματικά για την σύνθεση Wave Table. Οι υπόλοιπες είναι επιλογές για SB 16 από τον driver ήχου του OSS/Free.

Επιπλέον, πρέπει να ρυθμίσετε θύρα I/O της κάρτας. Κοιτάξτε στο αρχείο isapnp.conf για συμβουλές, αν βέβαια έχετε. Για μένα , οι παρακάτω default τιμές, αρκούν.

Σημειώστε πως οι προκαθορισμένες τιμές του ρύθμισης του πυρήνα μπορεί να είναι λάθος (ειδικά για οι τιμές SBC_IRQ και SB_MPU_BASE φαίνεται να είναι λάθος για τις περισσότερες κάρτες


I/O base for SB Check from manual of the card (SBC_BASE) [220]
Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5]
Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1]
Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7
(use 1 for 8 bit cards) (SB_DMA2) [5]
MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card
(SB_MPU_BASE) [330]
SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1]

Τώρα κάντε ξανά compile τον πυρήνα. Οι χρήστες Debian θα πρέπει να χρησιμοποιήσουν το πακέτο kernel-package. Αυτό το πακέτο κάνει το compile όσο εύκολο όσο και την εγκατάσταση ενός πακέτου για debian. Κοιτάξτε στην τεκμηρίωση στο /usr/doc/kernel-package/. Ακολουθεί μια συμβουλή:

# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image

και μετά dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb.

Αν έχετε κάποια άλλη διανομή Linux, ακολουθείστε τον κλασσικό τρόπο για το compile ενός νέου πυρήνα. Μην ξεχάσετε να κάνετε make modules και make modules_install. Κοιτάξτε στο Sound HOWTO ίσως και στο Kernel HOWTO για περισσότερες πληροφορίες.

3.4 Επανεκκίνηση

Αφού εγκαταστήσετε τον νέο πυρήνα, θα πρέπει να κάνετε επανεκκίνηση (βεβαιωθείτε πως έχετε πρόχειρη μια δισκέτα επανεκκίνησης που δουλεύει). Και προσευχηθείτε.

Αν έχετε μια κάρτα PnP βεβαιωθείτε πως ξεκινάτε τα isapnp είτε στα script εκκίνησης (όπως περιγράφτηκε παραπάνω), είτε χειροκίνητα:

# /sbin/isapnp /etc/isapnp.conf
Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e:  CTL0048 Serial No 58128
[checksum 74]

Τώρα μπορείτε να εγκαταστήσετε τον driver ήχου, αν τον έχετε κάνει compiled σαν module:

# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)

Αν νομίζετε πως ο εντοπισμός της μνήμης δεν ήταν σωστός (έχω μια αναφορά κάποιου που είχε μια AWE64 με 4096k, και ``εντοπισμένα'' ήταν 28672k), δοκιμάστε είτε να αναβαθμίσετε το λογισμικό awedrv ή να καθορίσετε το ποσό της μνήμης στο αρχείο /usr/src/linux/drivers/sound/lowlevel/awe_config.h, για παράδειγμα:

#define AWE_DEFAULT_MEM_SIZE  4096   /* kbytes */

Λυπάμαι, αλλά πρέπει να κάνετε ξανά compile τον πυρήνα (ίσως μόνο τα modules αρκεί, αλλά δεν είμαι σίγουρος).

Αν δουλέψει, ίσως να θέλετε να φορτώνετε το module ήχου αυτόματα. Μπορείτε να χρησιμοποιήσετε τον kerneld (το γιατί αυτό είναι άσχημη ιδέα εξηγήθηκε στο τμήμα1.4) ή να εισάγετε μια μόνο γραμμή στο που περιέχει τη λέξη sound σto /etc/modules σας (σε Debian) ή προσθέστε /sbin/modprobe -a sound στο script εκκίνησής σας.


Next Previous Contents