Thread Tools
This thread is privately moderated by Jack Crossfire, who may elect to delete unwanted replies.
Dec 10, 2016, 11:40 PM
Registered User
Jack Crossfire's Avatar
Thread OP
Discussion

Linux 3.2.9


So the mane computer, the one which does 4k video, had always dropped connections with the Zoom 5345. The easiest way to reproduce the failure was trying to access 192.168.100.1, which always failed. After months of sporadic experiments, finally tried different kernel versions. It was the only computer still using 2.6, which it had used since 2010. On anything above 3.2.9, the network was perfect. The Zoom 5345 had a problem with Linux 2.6.


Tried Linux 4.8.9, but the NVidia driver for this kernel wasn't compatible with the obsolete graphics card. The graphics card is now 10 years old, but still plays 4k video in a 2.5k window. Downgraded the NVidia driver to the lowest version which could work with Linux 4.8.9 & the highest version which could work with the obsolete graphics card: NVidia 304, which required commenting out the MTRR functions to work with the new kernel. The driver compiled, but wasn't compatible with the X server. Downgraded the kernel to the lowest version which would work with the Zoom, the highest version which would work with the X server, & the lowest version which would work with the NVidia driver: Linux 3.2.9. The NVidia driver had to be downgraded to 295.


It worked, but finding components which overlap enough to keep Linux going on the current system is a lot harder than it used to be. Linux 3.2.9 came out in 2012. Eventually, routers won't support it either. Very cheap cable modems can't handle subtle changes in packet formatting.


For Linux 4.8.9, there is hardly any difference in configuration options, showing the declining interest in kernel development over the years. 5 years in kernel development is a lot less important than it was 20 years ago, but the input drivers were refactored yet again.

Once again, in drivers/input/input.c, in function

Code:
static void input_handle_event(struct input_dev *dev,
			       unsigned int type, unsigned int code, int value)
{
add some more definitions

Code:
#define DOWNSAMPLE_N 100
#define DOWNSAMPLE_D 400
static int x_accum = 0, y_accum = 0;
then in

Code:
	if (disposition & INPUT_PASS_TO_HANDLERS) {
add

Code:
if(code == 0)
{
x_accum += value * DOWNSAMPLE_N;
value = x_accum / DOWNSAMPLE_D;
x_accum -= value * DOWNSAMPLE_D;
}
else
if(code == 1)
{
y_accum += value * DOWNSAMPLE_N;
value = y_accum / DOWNSAMPLE_D;
y_accum -= value * DOWNSAMPLE_D;
}
Last edited by Jack Crossfire; Dec 11, 2016 at 02:22 AM.
Sign up now
to remove ads between posts


Quick Reply
Message:
Thread Tools