LinuxQuestions.org
Visit Jeremy's Blog.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 03-01-2009, 07:22 PM   #1
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 703

Rep: Reputation: 111Reputation: 111
(SOLVED) Slack 12.2 midi keyboard, at a loss


Hello to all,

I'm a bit at a loss, and it shames me deeply ;-) Somewhere I'm forgetting something and I just can't put my finger on it.

I have this keyboard (a proteus xboard 61) which I connect with USB. I installed jack and qjackctl, timidity++ and rosegarden on top of what Slack ships with. I don't think I compiled my kernel yet, so it's still the default 2.6.27.7-smp.

I start timidity by default, for which I created a /etc/rc.d/rc.timidity which starts timidity like this: /usr/bin/timidity -iA -B2,8 &
I can play a midifile with timidity and can even open a midifile with rosegarden and play it. (just as a test if the output is configured correctly).

When I plug in the keyboard it doesn't show up in lsusb; however, I see the thing in qjackctl and also in rosegarden.

That's about as far as I get: when I try to record with the thing the events do not seem to "arrive". I could be wrong in my timidity.cfg (doubt that: for one I get sound, for two it simply refers to freepats.cfg which just imports the default pats that come with timidity) or in the jack configuration (very possible), or rosegarden (also possible, but tried too many options to make it logical) or I can be missing something yet... afaik the keyboard sends signals which are picked up by jack which passes it on to timidity to turn stuff into sounds.

I had it working in the past, so I should be possible to redo what I did back then; but unfortunately I can't find what... Hopefully here are some wise people that can slap me on my wrist and tell me what I'm doing wrong yet...

Worth noticing is that I have had rosegarden receiving input from the keyboard, but then nothing was audible. I think that was the point that I started messing up and in a bright moment realized I needed a softsynth, for which I chose TiMidiTy.

Last edited by Ramurd; 03-11-2009 at 09:51 AM. Reason: solution included
 
Old 03-01-2009, 08:02 PM   #2
Drakeo
Senior Member
 
Registered: Jan 2008
Location: Urbana IL
Distribution: Slackware, Slacko,
Posts: 3,716
Blog Entries: 3

Rep: Reputation: 483Reputation: 483Reputation: 483Reputation: 483Reputation: 483
if you here sound that is good. open a terminal and type alsa mixer and make sure the input device is enabled. all the programs run off the alsa. Now I will tell you if you deep into music I am a slack where Nut but I built a planet ccrma from fc9. For one of the profeeors here on campus. so check this out. this is very simple use there kernel and it will suport everything this is the place where all your programs were written.

Last edited by Drakeo; 03-01-2009 at 08:04 PM.
 
Old 03-02-2009, 01:45 AM   #3
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 703

Original Poster
Rep: Reputation: 111Reputation: 111
Thanks for the reply, checking out alsa mixer is a good one, I did it rightaway and to my amazement alsamixer could not find any mixer elements. That was logical when I checked the asound.names by hand and noticed that the xboard is device hw:0 and the soundcard hw:1; Then checking the mixer elements on hw:1 the inputs seemed OK.

That there are no mixer elements for the xboard is something worth investigating, along with ccrma: I'll have to make some time to see if that's something I'll need.
 
Old 03-02-2009, 01:56 AM   #4
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 703

Original Poster
Rep: Reputation: 111Reputation: 111
sorry for the double ;-) But I checked ccrma and followed the link to www.audioslack.com... Now I'm deep enough into music to know a few things, but my Greek is way off, at least the letters look greek to me, but could be anything else instead as well.
 
Old 03-02-2009, 02:14 AM   #5
wigry
Member
 
Registered: Jul 2004
Distribution: slackware
Posts: 225

Rep: Reputation: 53
Its russian

Here's the google translated page:
http://translate.google.com/translat...istory_state0=

Last edited by wigry; 03-02-2009 at 02:16 AM.
 
Old 03-02-2009, 05:32 PM   #6
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 703

Original Poster
Rep: Reputation: 111Reputation: 111
ok, thanks and please ignore my ignorance... still seems to lead to nowhere; at least regarding this subject. I'll let that rest for now, until I create some time for literature :-D

Back to the original question, while thinking a bit I came to the conclusion that some (part) of a program does not "see" the keyboard, or probably better said: not correctly. The question arises which application should see the keyboard from (a) hardware or (b) another program. It seems to me that jack should see the keyboard on a hardware level, which it seems to do, then should timidity see the keyboard on a hardware level or a software level (from jack) and is there something wrong with the way I started either timidity or jack, which at the moment is started like this: /usr/bin/jackd -v -R -m -dalsa -r44100 -p1024 -n2 -D -Chw:0 -Phw:1,1 -Xraw -H -M
 
Old 03-03-2009, 12:43 PM   #7
wjaguar
LQ Newbie
 
Registered: Oct 2007
Distribution: Slackware
Posts: 22

Rep: Reputation: 24
Quote:
Originally Posted by Ramurd View Post
still seems to lead to nowhere; at least regarding this subject.
Domain squatters got the site back in 2005. WebArchive still has its previous contents (as of February 11, 2005), but it is useless these days anyway, for all the stuff there is for Slackware 10 and 2.4 kernels.
 
Old 03-03-2009, 09:11 PM   #8
beiller
LQ Newbie
 
Registered: Nov 2008
Posts: 22

Rep: Reputation: 15
do you have Qt jack control? Go into connect and check the midi tab. Maybe you can connect it there to rosegarden or whatever is running? I want to get a MIDI controller soon let me know how it goes.
 
Old 03-03-2009, 10:29 PM   #9
Drakeo
Senior Member
 
Registered: Jan 2008
Location: Urbana IL
Distribution: Slackware, Slacko,
Posts: 3,716
Blog Entries: 3

Rep: Reputation: 483Reputation: 483Reputation: 483Reputation: 483Reputation: 483
open a terminal as root type lsmod and post it and type dmesg and post it make sure the device is plugged in. If it is a usb type lsusb post it.
 
Old 03-04-2009, 12:21 PM   #10
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 703

Original Poster
Rep: Reputation: 111Reputation: 111
dmesg:
Code:
 dmesg | tail
eth2: no IPv6 routers present
hda-intel: Invalid position buffer, using LPIB read method instead.
usb 6-2: new full speed USB device using ohci_hcd and address 2
usb 6-2: configuration #1 chosen from 1 choice
usb 6-2: New USB device found, idVendor=041e, idProduct=3f06
usb 6-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 6-2: Product: E-MU Xboard61
usb 6-2: Manufacturer: E-MU Systems, Inc.
usb 6-2: SerialNumber: E-MU-1E-3F00-07D60505-909F1-98
usbcore: registered new interface driver snd-usb-audio
lsusb:
Code:
lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 046d:c311 Logitech, Inc. 
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 002: ID 041e:3f06 Creative Technology, Ltd 
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 046d:c404 Logitech, Inc. TrackMan Wheel
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
lsmod:
Code:
lsmod
Module                  Size  Used by
snd_seq_midi           10144  0 
snd_usb_audio          82272  3 
snd_usb_lib            19200  1 snd_usb_audio
snd_rawmidi            24608  4 snd_seq_midi,snd_usb_lib
snd_seq_dummy           6788  1 
snd_seq_oss            33536  0 
snd_seq_midi_event     11136  2 snd_seq_midi,snd_seq_oss
snd_seq                52592  11 snd_seq_midi,snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device         11148  5 snd_seq_midi,snd_rawmidi,snd_seq_dummy,snd_seq_oss,snd_seq
snd_pcm_oss            40608  0 
snd_mixer_oss          18304  1 snd_pcm_oss
ipv6                  253476  16 
pcmcia                 38316  0 
pcmcia_core            39060  1 pcmcia
lp                     13572  0 
fuse                   54684  3 
nvidia               6904596  36 
snd_hda_intel         368268  8 
thermal                19612  0 
i2c_piix4              11920  0 
processor              37416  1 thermal
thermal_sys            15912  2 thermal,processor
ppdev                  11396  0 
snd_pcm                76676  6 snd_usb_audio,snd_pcm_oss,snd_hda_intel
psmouse                40720  0 
parport_pc             28708  1 
r8169                  31364  0 
parport                38252  3 lp,ppdev,parport_pc
mii                     9216  1 r8169
sg                     30516  0 
snd_timer              24584  4 snd_seq,snd_pcm
agpgart                37064  1 nvidia
serio_raw               9348  0 
snd_page_alloc         12168  2 snd_hda_intel,snd_pcm
hwmon                   6684  1 thermal_sys
snd_hwdep              11012  2 snd_usb_audio,snd_hda_intel
snd                    57380  28 snd_usb_audio,snd_rawmidi,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_hda_intel,snd_pcm,snd_timer,snd_hwdep
evdev                  13344  4 
button                 10128  0 
wmi                    10408  0 
soundcore              11232  1 snd
more info on the device:
Code:
root@slacker:/proc# cd asound
root@slacker:/proc/asound# ls
SB@  Xboard61@  card0/  card1/  cards  devices  hwdep  modules  oss/  pcm  seq/  timers  version
root@slacker:/proc/asound# ls -l Xboard61
lrwxrwxrwx 1 root root 5 2009-03-04 19:09 Xboard61 -> card1/
root@slacker:/proc/asound# ls -l card1/
total 0
-r--r--r-- 1 root root 0 2009-03-04 19:09 id
-r--r--r-- 1 root root 0 2009-03-04 19:09 midi0
-rw-r--r-- 1 root root 0 2009-03-04 19:09 oss_mixer
-r--r--r-- 1 root root 0 2009-03-04 19:09 usbbus
-r--r--r-- 1 root root 0 2009-03-04 19:09 usbid
root@slacker:/proc/asound# cat card1/usbid
041e:3f06
Good point trying to connect the keyboard to the rosegarden in qjackctl; Unfortunately it does not seem to be allowed. For further debugging purposes I'll post my /etc/asound.names and /etc/asound.conf

Code:
root@slacker:/proc/asound# cat /etc/asound.names
ctl {
	alsactl1 {
		name hw:0
		comment 'Physical Device - E-MU Systems, Inc. E-MU Xboard61 at usb-0000:00:13.1-2, full speed'
	}
	alsactl2 {
		name hw:1
		comment 'Physical Device - HDA ATI SB at 0xfe024000 irq 16'
	}
}
pcm {
	alsactl1 {
		name default:1
		comment 'Abstract Device - Default Device (Duplex)'
	}
	alsactl2 {
		name plug:default:1
		comment 'Abstract Device With Conversions - Default Device (Duplex)'
	}
	alsactl3 {
		name front:1
		comment 'Abstract Device - Front Speakers (Duplex)'
	}
	alsactl4 {
		name plug:front:1
		comment 'Abstract Device With Conversions - Front Speakers (Duplex)'
	}
	alsactl5 {
		name 'hw:1,0'
		comment 'Physical Device - ALC885 Analog (Duplex)'
	}
	alsactl6 {
		name 'plughw:1,0'
		comment 'Physical Device With Conversions - ALC885 Analog (Duplex)'
	}
	alsactl7 {
		name 'hw:1,1'
		comment 'Physical Device - ALC885 Digital (Duplex)'
	}
	alsactl8 {
		name 'plughw:1,1'
		comment 'Physical Device With Conversions - ALC885 Digital (Duplex)'
	}
	alsactl9 {
		name 'hw:1,2'
		comment 'Physical Device - ALC885 Analog (Capture)'
	}
	alsactl10 {
		name 'plughw:1,2'
		comment 'Physical Device With Conversions - ALC885 Analog (Capture)'
	}
	alsactl11 {
		name surround40:1
		comment 'Abstract Device - Front and Rear Speakers (Duplex)'
	}
	alsactl12 {
		name plug:surround40:1
		comment 'Abstract Device With Conversions - Front and Rear Speakers (Duplex)'
	}
	alsactl13 {
		name surround51:1
		comment 'Abstract Device - Front, Rear, Center and Woofer (Duplex)'
	}
	alsactl14 {
		name plug:surround51:1
		comment 'Abstract Device With Conversions - Front, Rear, Center and Woofer (Duplex)'
	}
	alsactl15 {
		name surround71:1
		comment 'Abstract Device - Front, Rear, Side, Center and Woofer (Duplex)'
	}
	alsactl16 {
		name plug:surround71:1
		comment 'Abstract Device With Conversions - Front, Rear, Side, Center and Woofer (Duplex)'
	}
	alsactl17 {
		name spdif:1
		comment 'Abstract Device - S/PDIF (IEC958) Optical or Coaxial Wire (Duplex)'
	}
	alsactl18 {
		name plug:spdif:1
		comment 'Abstract Device With Conversions - S/PDIF (IEC958) Optical or Coaxial Wire (Duplex)'
	}
}
rawmidi {
	alsactl1 {
		name default
		comment 'Abstract Device - Default Device (Duplex)'
	}
	alsactl2 {
		name 'hw:0,0,0'
		comment 'Physical Device - E-MU Xboard61 MIDI 1 (Duplex)'
	}
	alsactl3 {
		name virtual
		comment 'Virtual Device - Sequencer (Duplex)'
	}
	alsactl4 {
		name 'virtual:MERGE=0'
		comment 'Virtual Device - Sequencer (No Merge) (Duplex)'
	}
}
timer {
	alsactl1 {
		name 'hw:CLASS=1,SCLASS=0,CARD=-1,DEV=0,SUBDEV=0'
		comment 'Physical Device - system timer'
	}
}
seq {
	alsactl1 {
		name default
		comment 'Default Device - Sequencer (Duplex)'
	}
	alsactl2 {
		name hw
		comment 'Physical Device - Sequencer (Duplex)'
	}
}
Code:
root@slacker:/proc/asound# cat /etc/asound.conf 
pcm.headset {
	type bluetooth
}

ctl.headset {
	type bluetooth
}

pcm.jackplug {
	type plug
	slave { pcm "jack" }
}

pcm.jack {
	type jack
	playback_ports {
		0 alsa_pcm:playback_1
		1 alsa_pcm:playback_2
	}
	capture_ports {
		0 alsa_pcm:capture_1
		1 alsa_pcm:capture_2
	}
}
While at it, why not post the patchbay.xml I have atm:
Code:
root@slacker:/home/midi# cat patchbay.xml 
<!DOCTYPE patchbay>
<patchbay version="0.3.4" name="patchbay" >
 <output-sockets>
  <socket exclusive="off" client="Midi Through" type="midi" name="Output Socket 1" >
   <plug>Midi Through Port-0</plug>
  </socket>
  <socket exclusive="off" client="system" type="audio" name="Output Socket 5" >
   <plug>capture_1</plug>
   <plug>capture_2</plug>
  </socket>
  <socket exclusive="off" client="system" type="jack-midi" name="Output Socket 6" >
   <plug>midi_capture_1</plug>
  </socket>
  <socket exclusive="off" client="rosegarden" type="midi" name="Output Socket 7" >
   <plug>sync out</plug>
   <plug>external controller</plug>
   <plug>out 1 - General MIDI Device</plug>
   <plug>out 2 - MIDI software device 2</plug>
   <plug>out 3 - MIDI software device 3</plug>
   <plug>out 4 - MIDI software device 4</plug>
   <plug>out 5 - MIDI external device</plug>
   <plug>out 6 - MIDI output system device</plug>
  </socket>
  <socket exclusive="off" client="system" type="jack-midi" name="Output Socket 2" >
   <plug>midi_capture_1</plug>
  </socket>
  <socket exclusive="off" client="system" type="jack-midi" name="Output Socket 3" >
   <plug>midi_capture_1</plug>
  </socket>
  <socket exclusive="off" client="E-MU Xboard61" type="midi" name="Output Socket 4" >
   <plug>E-MU Xboard61 MIDI 1</plug>
  </socket>
 </output-sockets>
 <input-sockets>
  <socket exclusive="off" client="system" type="jack-midi" name="Input Socket 7" >
   <plug>midi_playback_1</plug>
  </socket>
  <socket exclusive="off" client="rosegarden" type="midi" name="Input Socket 8" >
   <plug>record in</plug>
   <plug>external controller</plug>
  </socket>
  <socket exclusive="off" client="system" type="audio" name="Input Socket 1" >
   <plug>playback_1</plug>
   <plug>playback_2</plug>
  </socket>
  <socket exclusive="off" client="TiMidity" type="midi" name="Input Socket 2" >
   <plug>TiMidity port 0</plug>
   <plug>TiMidity port 1</plug>
   <plug>TiMidity port 2</plug>
   <plug>TiMidity port 3</plug>
  </socket>
  <socket exclusive="off" client="system" type="jack-midi" name="Input Socket 3" >
   <plug>midi_playback_1</plug>
  </socket>
  <socket exclusive="off" client="system" type="jack-midi" name="Input Socket 4" >
   <plug>midi_playback_1</plug>
  </socket>
  <socket exclusive="off" client="system" type="jack-midi" name="Input Socket 5" >
   <plug>midi_playback_1</plug>
  </socket>
  <socket exclusive="off" client="E-MU Xboard61" type="midi" name="Input Socket 6" >
   <plug>E-MU Xboard61 MIDI 1</plug>
  </socket>
 </input-sockets>
 <slots/>
 <cables>
  <cable output="Output Socket 1" input="Input Socket 2" />
  <cable output="Output Socket 2" input="Input Socket 3" />
 </cables>
</patchbay>
Hope this helps :-)
 
Old 03-04-2009, 12:30 PM   #11
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 703

Original Poster
Rep: Reputation: 111Reputation: 111
Apologies for the double post, but it suddenly occurred to me that I had it running in the past with KDE 3.5; Due my disliking the aRTS daemon I made the early switch to KDE 4.2. Since this is very sound related, it may just be the thing and reason I'm having trouble. I realized this, since the keyboard is showing up in qjackctl in the Alsa tab, instead of the Midi tab.
 
Old 03-04-2009, 01:28 PM   #12
DavidHindman
Member
 
Registered: Dec 2008
Distribution: Slack 13 + JWM
Posts: 101

Rep: Reputation: 23
In console mode there is a utility called aseqdump which might help with a diagnosis. aseqdump --port nn:n will print midi inputs on the console as they are received from the keyboard. aseqdump -l will list all the available midi ports.
 
Old 03-04-2009, 05:32 PM   #13
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 703

Original Poster
Rep: Reputation: 111Reputation: 111
nice one, I handn't seen that one yet:
Code:
 aseqdump -l
 Port    Client name                      Port name
  0:0    System                           Timer
  0:1    System                           Announce
 14:0    Midi Through                     Midi Through Port-0
 20:0    E-MU Xboard61                    E-MU Xboard61 MIDI 1
A brief test with aseqdump -p 20:0, and pushing some random notes on the keyboard shows this:
Code:
 aseqdump -p 20:0
Waiting for data. Press Ctrl+C to end.
Source  Event                  Ch  Data
 20:0   Note on                 2, note 75, velocity 108
 20:0   Note on                 2, note 80, velocity 67
 20:0   Note on                 2, note 72, velocity 84
 20:0   Channel aftertouch      2, value 60
 20:0   Note on                 2, note 74, velocity 34
 20:0   Note off                2, note 75
 20:0   Note off                2, note 74
 20:0   Channel aftertouch      2, value 76
 20:0   Note off                2, note 80
 20:0   Channel aftertouch      2, value 78
 20:0   Channel aftertouch      2, value 83
 20:0   Channel aftertouch      2, value 78
 20:0   Channel aftertouch      2, value 51
 20:0   Channel aftertouch      2, value 28
 20:0   Channel aftertouch      2, value 11
 20:0   Channel aftertouch      2, value 0
 20:0   Note on                 2, note 79, velocity 20
 20:0   Note off                2, note 72
 20:0   Note off                2, note 79
The events arrive at Alsa, that's what I make from it. It also makes me believe that the chain looks something like this:
keyboard input -> alsa -> jack -> timidity -> back to alsa for outputs

The point here I see is that in jack I somehow only can do stuff with the midi through port, but not with the midi board... I fear that part is putting me at a loss. I could try dumping from the midi-through port, but I think I get nothing... (tested: indeed, no result)

And really thanks all for the constructive help, I going to believe I can get this thing working. If I do, I'll try to write out something nice to help ppl get their midi setup working. Promise :-D

Last edited by Ramurd; 03-04-2009 at 05:36 PM.
 
Old 03-05-2009, 06:59 AM   #14
Drakeo
Senior Member
 
Registered: Jan 2008
Location: Urbana IL
Distribution: Slackware, Slacko,
Posts: 3,716
Blog Entries: 3

Rep: Reputation: 483Reputation: 483Reputation: 483Reputation: 483Reputation: 483
what I see is two sound cards and the sound server not knowing which card to use as a capture device. and when you had arts setup it was set for both devices. This could well be this simple as to have your sound server set up devices for certain inputs. in a terminal type alsaconf. as root. make sure the cards are recognized and configured. then with your sound server configure it for that device input and which device output. I wonder if this is a hal issue will it work as root.

Last edited by Drakeo; 03-05-2009 at 07:04 AM.
 
Old 03-05-2009, 06:04 PM   #15
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 703

Original Poster
Rep: Reputation: 111Reputation: 111
Yes, that was my thought at 1st too when I saw 2 sound cards showing up, at least it seems that way... however, physically there's only one and I do get sound otherwise; except from the keyboard. From what I could gather is that the midi events are not getting passed on to timidity... I'll try to see why there's 2 sound cards and how / if I can make 1 that also works ;-)

With hal I setup sound for audio (or it was that way already); the user is member of the audio group; which should not cause any trouble. I'll try to debug a bit further, thanks for the input!
 
  


Reply

Tags
midi, slackware



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
midi keyboard, how to make sound?midi keyboard, how to produce sounds? Blyiss Linux - Software 10 03-24-2007 08:53 PM
midi keyboard robgig1088 Linux - Software 2 09-05-2006 09:03 PM
Slack 10.1, 2.6: Sudden Network Loss?? Kenkudaki Linux - Networking 2 09-06-2005 11:11 AM
USB MIDI Keyboard jeffChuck Linux - Hardware 0 02-04-2005 05:50 PM
usb midi keyboard jloaf Linux - Hardware 1 10-30-2003 04:08 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 10:06 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration