Linux - Hardware This forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux? |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
|
02-23-2009, 10:35 AM
|
#1
|
LQ Newbie
Registered: Feb 2009
Posts: 25
Rep:
|
Synaptics not working on Dell XPS M1530, Slackware 12.2 custom kernel
[SOLVED] Check #12 by me
I custom-built my kernel (v. 2.6.28.7) on a Slackware 12.2 system (NOTE: I unfortunately cannot check the stock kernels as I have broken them), including psmouse as a module and including synaptics and evdev, and installed the synaptics drivers from source. I am on a Dell XPS m1530. My touchpad works fine in kde; it clicks and moves. I cannot get scrolling by moving my finger along the side of the touchpad to work. My understanding is that for this I need to have the synaptics driver working and enabled (NOTE: I had synaptics working under Ubuntu). I am loading the synaptics module in xorg.
Relevant part of xorg:
Code:
Identifier "Mouse1"
Driver "synaptics"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "VertEdgeScroll" "true"
EndSection
It seems my touchpad is not being identified as a synaptics one:
Code:
edscare@redscare-laptop:~$ cat /proc/bus/input/devices
I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=mouse0 event0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=120013
B: KEY=8000 0 0 0 0 0 500f 2102002 380307c f810d001 feffffdf ffefffff ffffffff ffffffff
B: MSC=10
B: LED=7
I: Bus=0011 Vendor=0002 Product=0001 Version=0000
N: Name="PS/2 Generic Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input2
U: Uniq=
H: Handlers=mouse1 event2
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
Kernel config information (I used config-2.6.28.7 for my kernel compilation):
Code:
redscare@redscare-laptop:~$ grep SYNAPTIC /boot/config-2.6.28.7
CONFIG_MOUSE_PS2_SYNAPTICS=y
redscare@redscare-laptop:~$ grep MOUSE /boot/config-2.6.28.7
CONFIG_MAC_EMUMOUSEBTN=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1280
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=800
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_USB_IDMOUSE is not set
Relevant portions of Xorg.0.log:
Code:
redscare@redscare-laptop:/var/log$ cat Xorg.0.log (I only show relevant stuff)
...
(II) LoadModule: "synaptics"
(II) Loading /usr/lib/xorg/modules/input//synaptics_drv.so
(II) Module synaptics: vendor="X.Org Foundation"
compiled for 1.4.2, module version = 1.0.99
Module class: X.Org XInput Driver
ABI class: X.Org XInput driver, version 2.0
...
(II) LoadModule: "mouse"
(II) Loading /usr/lib/xorg/modules/input//mouse_drv.so
(II) Module mouse: vendor="X.Org Foundation"
compiled for 1.4.0.90, module version = 1.3.0
Module class: X.Org XInput Driver
ABI class: X.Org XInput driver, version 2.0
...
(II) Synaptics touchpad driver version 1.0.99
Mouse1 no synaptics event device found
(**) Option "Device" "/dev/psaux"
(**) Option "VertEdgeScroll" "true"
Query no Synaptics: 6003C8
(--) Mouse1: no supported touchpad found
...Mouse1 no synaptics event device found
Query no Synaptics: 6003C8
(--) Mouse1: no supported touchpad found
Query no Synaptics: 6003C8
Query no Synaptics: 6003C8
Query no Synaptics: 6003C8---------------------> for each mouse movement, this line added
Thank you for your help.
Last edited by RedScare; 02-24-2009 at 04:13 PM.
|
|
|
02-23-2009, 05:15 PM
|
#2
|
LQ Addict
Registered: Nov 2008
Location: Paris, France
Distribution: Slint64-15.0
Posts: 11,256
Rep:
|
Let's try make that simpler.
First reinstall stock kernels, that's easy.
If you have slackpkg installed (that should be the case if you made a full install), type following commands:
slackpkg update
slackpkg reinstall kernel
Then accept all proposed updates (will take some time but won't hurt)
Before that, if it's the first time you use slackpkg, 'uncomment' one (and only one) URL in /etc/slackpkg/mirrors.
--
Or if you have the DVD at hand you could do this:
cd /mnt/dvd
upgradepkg --install-new --reinstall slackare/d/kernel*tgz slackware/a/kernel*tgz slackware/k/kernel*tgz
--
Then try your touchpad.
PS1 Yes, it can hurt if you install a new kernel module and one is already installed for the same driver.
PS2 Please don't make two threads for the same issue.
Rule of thumb: if ain't broken, don't fix it
EDIT -- command 'upgradepkg' was mispelled 'ugrade'
Last edited by Didier Spaier; 02-23-2009 at 06:22 PM.
Reason: Typo in command name -- should have been upgradepkg, not upgrade
|
|
|
02-23-2009, 05:22 PM
|
#3
|
LQ Newbie
Registered: Feb 2009
Posts: 25
Original Poster
Rep:
|
Thank you. If I do reinstall the kernel by that method, will I lose my custom compiled kernel along with the source (v. 2.6.28.7)? Also, including the synaptics driver in the kernel is equivalent to installing it from source? Are they the same driver?
Last edited by RedScare; 02-23-2009 at 05:30 PM.
|
|
|
02-23-2009, 06:14 PM
|
#4
|
LQ Addict
Registered: Nov 2008
Location: Paris, France
Distribution: Slint64-15.0
Posts: 11,256
Rep:
|
1) You won't loose anything, unless you gave your kernel or kernel-source the same name as the stock kernels, which is highly improbable (kernel version number is always included in kernel and kernel source names in Slackware packages).
2) Building and installing the kernel drivers from source will be equivalent to using the ones included in the kernel _if_and_only_if_ you use the _very_same_version_, and use the same compilation options.
To make sure of that you can make a diff of the respective source files (synaptics.c and synaptics.h) and a diff of the respective Makefiles -- but then, what can you do with that information ?
So, let me repeat myself: go with the stock kernel and the included module, and check if that works first -- unless you really prefer to replace something which works with something which doesn't.
As we say in French: why make things simple when they could be complicated
Cheers,
|
|
|
02-23-2009, 07:11 PM
|
#5
|
LQ Newbie
Registered: Feb 2009
Posts: 25
Original Poster
Rep:
|
I will soon try to replace the stock kernels, but I have another question. Installing the Synaptics drivers from source places files into /usr/lib/xorg/modules. Kernel compilation doesn't affect this directory to the best of my knowledge. So wouldn't it be necessary to install the Synaptics from source?
Thanks again.
Last edited by RedScare; 02-23-2009 at 07:14 PM.
|
|
|
02-23-2009, 09:47 PM
|
#6
|
LQ Newbie
Registered: Feb 2009
Posts: 25
Original Poster
Rep:
|
Well I tried the old kernel, and that didn't help or really change anything. My new /proc/bus/input/devices (I don't really think the changes are relevant; I purposely did not include the webcam in my custom kernel):
Code:
redscare@redscare-laptop:~$ cat /proc/bus/input/devices
I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=mouse0 event0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=120013
B: KEY=8000 0 0 0 0 0 500f 2102002 380307c f810d001 feffffdf ffefffff ffffffff ffffffff
B: MSC=10
B: LED=7
I: Bus=0019 Vendor=0000 Product=0005 Version=0000
N: Name="Lid Switch"
P: Phys=PNP0C0D/button/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input2
U: Uniq=
H: Handlers=event2
B: EV=21
B: SW=1
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button (CM)"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input3
U: Uniq=
H: Handlers=kbd event3
B: EV=3
B: KEY=100000 0 0 0
I: Bus=0019 Vendor=0000 Product=0003 Version=0000
N: Name="Sleep Button (CM)"
P: Phys=PNP0C0E/button/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input4
U: Uniq=
H: Handlers=kbd event4
B: EV=3
B: KEY=4000 0 0 0 0
I: Bus=0019 Vendor=0000 Product=0006 Version=0000
N: Name="Video Bus"
P: Phys=/video/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0A03:00/device:2e/device:2f/input/input5
U: Uniq=
H: Handlers=kbd event5
B: EV=3
B: KEY=3f000b 0 0 0 0 0 0 0
I: Bus=0003 Vendor=05a9 Product=2640 Version=0100
N: Name="Laptop Integrated Webcam"
P: Phys=usb-0000:00:1a.7-1
S: Sysfs=/devices/pci0000:00/0000:00:1a.7/usb1/1-1/1-1:1.0/input/input6
U: Uniq=
H: Handlers=event6
B: EV=3
B: KEY=1 0 0 0 0 0 0 0 0
I: Bus=0011 Vendor=0002 Product=0001 Version=0000
N: Name="PS/2 Generic Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input7
U: Uniq=
H: Handlers=mouse1 event7
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
redscare@redscare-laptop:~$ less /var/log/Xorg.0.log
redscare@redscare-laptop:~$ cat /proc/bus/input/devices
I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=mouse0 event0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=120013
B: KEY=8000 0 0 0 0 0 500f 2102002 380307c f810d001 feffffdf ffefffff ffffffff ffffffff
B: MSC=10
B: LED=7
I: Bus=0019 Vendor=0000 Product=0005 Version=0000
N: Name="Lid Switch"
P: Phys=PNP0C0D/button/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input2
U: Uniq=
H: Handlers=event2
B: EV=21
B: SW=1
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button (CM)"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input3
U: Uniq=
H: Handlers=kbd event3
B: EV=3
B: KEY=100000 0 0 0
I: Bus=0019 Vendor=0000 Product=0003 Version=0000
N: Name="Sleep Button (CM)"
P: Phys=PNP0C0E/button/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input4
U: Uniq=
H: Handlers=kbd event4
B: EV=3
B: KEY=4000 0 0 0 0
I: Bus=0019 Vendor=0000 Product=0006 Version=0000
N: Name="Video Bus"
P: Phys=/video/input0
S: Sysfs=/devices/LNXSYSTM:00/device:00/PNP0A03:00/device:2e/device:2f/input/input5
U: Uniq=
H: Handlers=kbd event5
B: EV=3
B: KEY=3f000b 0 0 0 0 0 0 0
I: Bus=0003 Vendor=05a9 Product=2640 Version=0100
N: Name="Laptop Integrated Webcam"
P: Phys=usb-0000:00:1a.7-1
S: Sysfs=/devices/pci0000:00/0000:00:1a.7/usb1/1-1/1-1:1.0/input/input6
U: Uniq=
H: Handlers=event6
B: EV=3
B: KEY=1 0 0 0 0 0 0 0 0
I: Bus=0011 Vendor=0002 Product=0001 Version=0000
N: Name="PS/2 Generic Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input7
U: Uniq=
H: Handlers=mouse1 event7
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
|
|
|
02-23-2009, 09:57 PM
|
#7
|
Senior Member
Registered: Jan 2008
Location: Urbana IL
Distribution: Slackware, Slacko,
Posts: 3,716
|
I started using the synaptic touch pad mouse with slackware 10. I did not need any special driver. But there was some that you could do. I found I made the pad work with every thing by editing the xorg. I am not sure what is going on here.
But after reading what Linus had to say about the cursor and the kernel told me they were already built into the kernel.
so I did this also.
Quote:
Option "ZAxisMapping" "4 5 6 7" #touch pad
|
now the little pad scrolled every direction. and the pad still did it taps like it was supposed to because it works thermal and taps per milliseconds. good luck
|
|
|
02-24-2009, 02:51 AM
|
#8
|
LQ Addict
Registered: Nov 2008
Location: Paris, France
Distribution: Slint64-15.0
Posts: 11,256
Rep:
|
RedScare, keep in mind that you really need two drivers for your touchpad:
- the kernel driver;
- the X (or Xorg, in our case) driver.
I think that Drakeo is right: your problem has nothing to do with the kernel driver, but is a matter of configuring the Xorg driver at run time (no need to re compile it).
the 'man synaptics' command will tell you (a lot!) more.
In this manual '34' should read " (double quote) character. That's the way Xorg manual is written.
Side note: I read long manual pages in konqueror, it's easier: type #synaptics or man:synaptics in the address bar.
To know how-to use your touchpad in console mode, read /usr/doc/gpm-1.20.1/README.synaptics.
Last edited by Didier Spaier; 02-24-2009 at 03:05 PM.
|
|
|
02-24-2009, 02:57 PM
|
#9
|
LQ Newbie
Registered: Feb 2009
Posts: 25
Original Poster
Rep:
|
That is what I did, I am sorry for not being clear--I installed the synaptics Xorg driver manually (xf86). It is unlikely that the synaptics driver itself is malfunctioning as indicated by Xorg.0.log errors and my output from /proc/bus/input/devices, but with detection of the mousepad as a synaptics-capable one.
Thank you, and please help me.
|
|
|
02-24-2009, 03:54 PM
|
#10
|
LQ Addict
Registered: Nov 2008
Location: Paris, France
Distribution: Slint64-15.0
Posts: 11,256
Rep:
|
-- Sorry, duplicate post --
Last edited by Didier Spaier; 02-24-2009 at 04:00 PM.
|
|
|
02-24-2009, 03:54 PM
|
#11
|
LQ Addict
Registered: Nov 2008
Location: Paris, France
Distribution: Slint64-15.0
Posts: 11,256
Rep:
|
I do not think that a "bad" synaptics Xorg driver is in concern. Anyhow a synaptics Xorg driver is of course included in Slackware.
But may be some udev rules cause the issue, or the psmouse kernel-module claim the device before the synaptics kernel driver (though it could be surprising as synptics is built-in and psmouse is a module). I say that because on my laptop the touchpad (which works like a mouse) uses the psmouse module.
First check with 'lsmod' which module is loaded for your touchpad. Guess it is psmouse.
If it is the case I would try this:
1) blacklist the psmouse module: add a line with 'blacklist psmouse' (without the quotes, of course) at the end of /etc/modprobe.d/blacklist
2) reboot and see what happens
Or you can reconfigure your kernel with CONFIG_MOUSE_PS2_SYNAPTICS=m (e.g., as a module, not built-in), still blacklist psmouse, try to 'modprobe synaptics' and see what you get.
And/or you could try not to include any MOUSE_PS2_xx driver, but MOUSE_PS2_SYNAPTICS.
Not sure I shed some light, I'm running out of ideas
PS did you read the docs I pointed to ?
Last edited by Didier Spaier; 02-24-2009 at 03:57 PM.
|
|
|
02-24-2009, 04:11 PM
|
#12
|
LQ Newbie
Registered: Feb 2009
Posts: 25
Original Poster
Rep:
|
I read the docs you referred me to, yes. I've finally solved this myself though, by adding the boot parameter i8042.reset to my boot parameters (i8042.nomux=1). Now my /proc/bus/input/devices is (shows that my alps touchpad is being detected):
Code:
bash-3.1# cat /proc/bus/input/devices
I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=mouse0 event0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=120013
B: KEY=8000 0 0 0 0 0 500f 2102002 380307c f810d001 feffffdf ffefffff ffffffff ffffffff
B: MSC=10
B: LED=7
I: Bus=0011 Vendor=0002 Product=0008 Version=0000
N: Name="PS/2 Mouse"
P: Phys=isa0060/serio1/input1
S: Sysfs=/devices/platform/i8042/serio1/input/input2
U: Uniq=
H: Handlers=mouse1 event2
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3bash-3.1# cat /proc/bus/input/devices
I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=mouse0 event0
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=120013
B: KEY=8000 0 0 0 0 0 500f 2102002 380307c f810d001 feffffdf ffefffff ffffffff ffffffff
B: MSC=10
B: LED=7
I: Bus=0011 Vendor=0002 Product=0008 Version=0000
N: Name="PS/2 Mouse"
P: Phys=isa0060/serio1/input1
S: Sysfs=/devices/platform/i8042/serio1/input/input2
U: Uniq=
H: Handlers=mouse1 event2
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3
I: Bus=0011 Vendor=0002 Product=0008 Version=7321
N: Name="AlpsPS/2 ALPS GlidePoint"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input3
U: Uniq=
H: Handlers=mouse2 event3
B: EV=f
B: KEY=420 0 70000 0 0 0 0 0 0 0 0
B: REL=3
B: ABS=1000003
I really should have figured it out right away, stupid me. Thanks very much for your help. If anyone else has this problem I'd be happy to help further. Here's my fine-tuned for the XPS M1530 xorg.conf (my initial one works but not exceptionally well):
Code:
Section InputDevice
Identifier "Mouse1"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "LeftEdge" "120"
Option "RightEdge" "830"
Option "TopEdge" "120"
Option "BottomEdge" "650"
Option "FingerLow" "14"
Option "FingerHigh" "15"
Option "MaxTapTime" "180"
Option "MaxTapMove" "110"
Option "ClickTime" "0"
Option "EmulateMidButtonTime" "75"
Option "VertScrollDelta" "10"
Option "HorizScrollDelta" "0"
Option "MinSpeed" "0.45"
Option "MaxSpeed" "0.75"
Option "AccelFactor" "0.020"
Option "EdgeMotionMinSpeed" "200"
Option "EdgeMotionMaxSpeed" "200"
Option "UpDownScrolling" "1"
Option "CircularScrolling" "0"
Option "SHMConfig" "true"
EndSection
Thanks again to everyone for your time.
Didier, the psmouse module can be loaded with a synaptics mouse.
|
|
|
02-24-2009, 04:17 PM
|
#13
|
LQ Addict
Registered: Nov 2008
Location: Paris, France
Distribution: Slint64-15.0
Posts: 11,256
Rep:
|
Quote:
Originally Posted by RedScare
Didier, the psmouse module can be loaded with a synaptics mouse.
|
Good to know, thanks for the information.
I'm happy you end up with a fine tuned touch pad.
|
|
|
02-24-2009, 05:51 PM
|
#14
|
LQ Newbie
Registered: Feb 2009
Posts: 25
Original Poster
Rep:
|
Thank you very much for all your help.
|
|
|
All times are GMT -5. The time now is 11:24 AM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|