2006-11-14

 

FireWire-ljudkort (ofärdig)

Notera: Detta är inte ett färdigt dokument. Det kommer att uppdateras när tid och ork finnes. Det kan också vara värt att påpeka att det inte är 100% säkert att systemet är livskraftigt efter att ha provat instruktionerna nedan och misslyckats. Eller ens lyckats.

Att köra FireWire-ljudkort under Linux är i nuläget relativt experimentellt. Det finns, mig veterligen, inga enkla rättframma sätt att få FireWire-ljudkort att fungera bara sådär, genom att helt enkelt plugga in det och hålla tummarna.

FireWire-ljudkort är som namnet antyder ett ljudkort som man pluggar in i sin FireWire-, a.k.a. IEEE 1394-port. Det är sålunda ett samarbete mellan Linux ljud-community och snubbarna som utvecklar FireWire-grejer. Det är här det uppstår vissa problem. Man måste vara både ljud-nörd och riktig Linuxprogrammeringsnörd med FireWire som intresse för att komma någon vart. Det säger sig självt, antalet sådana människor är begränsat.

Hur som helst, det initiativ som finns till buds idag är "FreeBoB", vilket är en fri implementation för de enheter som kör BridgeCo:s Enhanced BreakOut Box (BeBoB) firmware. Inte alla med BeBoB stöds idag, av den enkla anledningen att de som idag utvecklar FreeBoB helt enkelt inte har råd eller möjlighet att testa alla enheter själva.

De ljudkort som i skrivande stund stöds är:



Märk att detta bara är ljudkorten, alla enheter som stöds, inkl någon Mackie-mixer, en Stanton-pryl och diverse FireWire-extension boards står listade på http://freebob.sourceforge.net/index.php/List_of_Supported_Devices


INSTALLATION

Vad som krävs är utvecklingsversioner av alla bibliotek och allt som ingår i FreeBoB eftersom det fortfarande är så nytt att det inte finns färdiga paket att bara installera.

På systemet måste subversion, automake, autoconf, libXML, ALSA och andra paket finnas installerade. Du kommer även att behöva alla utvecklingspaket (xxx-dev eller xxx-devel) för att kompilera från källkod.

På ett APT-baserat system kan du (som root) köra:

# apt-get install subversion automake autoconf libtool libxml2-dev libcap-dev libasound2-dev


LIBRARIES

FreeBoB kräver ett antal libraries för att fungera, och nedan visas hur man kan installera dessa.


libraw1394:

FreeBoB kräver senaste versionen av libraw1394, vilken kan laddas hem med kommandona:

$ cd /usr/src/
$ svn co svn://svn.linux1394.org/libraw1394/trunk libraw1394-svn

För att systemet ska funka måste man ersätta jackd och andra filer, skriv därför:

$ which jackd
/usr/bin/jackd

och ersätt DITT_PREFIX i raderna nedan med den första katalogen (/usr) i sökvägen till jackd ovan:

$ cd libraw1394-svn
$ autoreconf -f -i -s
$ ./configure --prefix=DITT_PREFIX

Kör sedan:

$ make
$ sudo make install

för att installera.


libiec61883:

Samma procedur gäller för libiec61883, även det ett krav för att få FreeBoB att fungera. Skriv som nedan och byt ut DITT_PREFIX igen:

$ cd /usr/src/
$ svn checkout svn://svn.linux1394.org/libiec61883/trunk/ libiec61883
$ cd libiec61883
$ autoreconf -f -i -s
$ ./configure --prefix=DITT_PREFIX
$ make
$ sudo make install


libavc1394:

och slutligen samma visa för libavc1394:

$ cd /usr/src/
$ svn co https://svn.sourceforge.net/svnroot/libavc1394/trunk libavc1394
$ cd libavc1394
$ ./bootstrap
$ ./configure --prefix=DITT_PREFIX
$ make
$ sudo make install


FREEBOB-STÖD I KÄRNAN

För att fortsätta ska du se till så att kernel-modulerna för IEEE1394 är laddade. Kör:

$ sudo modprobe ohci1394
$ sudo modprobe raw1394

och kolla så att enhetsfilen /dev/raw1394 skapades av udev genom att skriva:

$ ls -al /dev/raw1394

Om den inte finns, kan du skapa den manuellt:

$ sudo mknod -m666 /dev/raw1394 c 171 0

Exakt vad detta kommandot gör kommer vi inte att gå in på, bara att det fungerar.


LIBFREEBOB

Nu har vi lagt grunden för att installera libfreebob. Det är dags att ta hem källkoden. Skriv (och byt ut DITT_PREFIX mot det som du fick ovan):

$ cd /usr/src/
$ svn co https://svn.sourceforge.net/svnroot/freebob/branches/libfreebob-1.0 libfreebob
$ cd libfreebob
$ autoreconf -v -i -s
$ ./configure --prefix=DITT_PREFIX
$ make
$ sudo make install


TESTA KONFIGURATION

Det går att testa konfigurationen genom att köra en av de testfiler som finns i libfreebob. Plugga i ditt FireWire-ljudkort och kör:

$ cd libfreebob
$ tests/test-freebob discover

Om allt gick bra, kommer du att få en rapport-listning från ditt ljudkort. Notera port och nod (de första raderna).


KOMPILERA JACK

För att få jack att inkludera FreeBoB-stöd måste även detta installeras från källkod:

$ cd /usr/src/
$ svn co http://subversion.jackaudio.org/jack/trunk/jack jack

När JACK konfigureras måste vi definiera en default temporär-katalog. Denna får vi genom att köra:

$ jackd --version

och kolla vad vi får. Jag får jackd version 0.101.1 tmpdir /dev/shm protocol 15 vilket innebär att jag har temporärkatalogen /dev/shm och ska lägga in den istället för TMP_KAT nedan. Samma utbyte för DITT_PREFIX som i sektionerna ovan:

$ cd jack
$ ./autogen.sh --prefix=DITT_PREFIX --with-default-tmpdir=TMP_KAT

I slutet av listningen borde det finnas en rad liknande:

Build with FreeBob support............................ : true

Om det står "false" istället, är det något problem. Kolla då ytterligare i konfigurations-listningen efter någonting liknande:

checking for LIBFREEBOB... no

Då är det dags att börja från toppen från detta dokument.

Om allt funkar fram till hit, med FreeBoB-stöd och allt, kör:

$ make
$ sudo make install

Testa installationen med att köra:

$ jackd -d freebob

Om det inte fungerar, kolla om du använder rätt port som noterat. För den andra porten, kör:

$ jackd -d freebob -d1

För bra resultat bör du köra jack som:

$ jackd -R -d freebob -p 128

eller något liknande. Se Jack-avsnitten för mer information om Jack.



Delar snodda och översatta ifrån källsidan för FreeBoB.

Comments:
Hej, tackar för den utförliga guiden. Tyvärr får jag lite fel ändå, undrar om du kan hjälpa mig

"

jackd 0.102.30
Copyright 2001-2005 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

JACK compiled with System V SHM support.
loading driver ..
Freebob using Firewire port 0, node -1
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
Warning (bebob_light/bebob_light_avdevice.cpp)[995] discoverStep10Plug: discoverStep10Plug: unknown stream format for channel (1)
ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
FreeBoB ERR: Error opening ALSA sequencer.
FreeBoB ERR: -----------------------------------------------------------
FreeBoB ERR: Error creating midi device!
FreeBoB ERR: FreeBob will run without MIDI support.
FreeBoB ERR: Consult the above error messages to solve the problem.
FreeBoB ERR: -----------------------------------------------------------


libiec61883 warning: Established connection on channel 0.
You may need to manually set the channel on the receiving node.
libiec61883 warning: Established connection on channel 1.
You may need to manually set the channel on the transmitting node.


"
 
Sorry att det dröjde, jag missade kommentaren.

Det verkar som att du inte har laddad sequencer-modulen. Du kan lösa detta genom att skriva "modprobe snd_seq" i terminal.

Du måste vara superanvändare för att få det att fungera, så antingen logga in som root, kör "su" eller peta in "sudo" framför kommandot: "sudo modprobe snd_seq"
 
Hej
stort tack för en mycket gedigen rutin. Men jag är ganska nybörjare och inte helt hemma i katalogsystemet i linux. När du skriver "ditt prefix" menar du då exempelvis home/joszef"...??? Det räcker inte med bara user eller usr
 
Skicka en kommentar



<< Home

This page is powered by Blogger. Isn't yours?