1

I installed Kubuntu 13.04 (64-bit) on my new Fujitsu LifeBook P1630, and added just a few packages:

First aptitude, then I did aptitude update && safe-upgrade, then xinput-calibrator (which seems to work, except that I have to run it again every time I restart the system), then gcc, make, build-essential, checkinstall, binutils, and linux-source.

Then I downloaded the file cybergene-fujitsu-usb-touchscreen-112fdb75b406.zip which is linked from the page https://bitbucket.org/cybergene/fujitsu-usb-touchscreen/overview (I'm assuming it's the elusive v0.3.9, which doesn't seem to be linked under that name from anywhere); I extracted its contents to a directory ~/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406 and attempted to run make. The console (er, Konsole) trace is below:

archelon@ingelrayok:~/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406$ make
make -C /lib/modules/3.8.0-30-generic/build M=/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406 modules
make[1]: Entering directory `/usr/src/linux-headers-3.8.0-30-generic'
  CC [M]  /home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.o
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c: In function ‘usb_u810_tablet_irq’:
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:133:4: error: implicit declaration of function ‘dbg’ [-Werror=implicit-function-declaration]
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:182:3: error: implicit declaration of function ‘err’ [-Werror=implicit-function-declaration]
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c: In function ‘usb_u810_tablet_probe’:
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:246:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:253:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:263:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:270:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:277:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:302:5: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:358:5: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:366:5: error: called object ‘err’ is not a function
cc1: some warnings being treated as errors
make[2]: *** [/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.o] Error 1
make[1]: *** [_module_/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.8.0-30-generic'
make: *** [fujitsu_usb_touchscreen.ko] Error 2
archelon@ingelrayok:~/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406$

I should also note that make completes without errors on my other computer, a Toshiba Satellite R10 running Kubuntu 12.04; this machine also has a (fully operational) tablet with stylus. (The Toshiba's tablet is a Wacom with active digitizer as opposed to the Fujitsu's USB resistive touchscreen). So, probably I'm just missing some package or other---I haven't compiled anything for years and never was particularly good at it. Perhaps you can sort me out.

UPDATE: I've replaced 13.04 with 12.04 LTS, retaining my /home partition, and now the package compiles: make completes without errors. However, make install does not. [To be precise, I ran checkinstall (or, rather, sudo checkinstall), which calls make install, because as far as I can tell the former is a simple upgrade of the latter (at least for my purposes), providing integration with the package management system.] Initially, it failed with the following error:

make: execvp: /etc/init.d/fujitsu_touchscreen: Permission denied
make: *** [install] Error 127

After some research, I tried using chmod +x on the affected file:

$ sudo chmod +x /etc/init.d/fujitsu_touchscreen

Running sudo checkinstall again, the permission error is seen to have been resolved; it gets much further along before failing again. The log which it offers to print to stdout shows a dpkg error, as follows:

dpkg: error processing /home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/cybergene-fujitsu-usb-touchscreen-112fdb75b406_amd64.deb (--install):
 unable to create `/sys/module/fujitsu/usb/touchscreen/parameters/touch_maxy.dpkg-new' (while processing `/sys/module/fujitsu/usb/touchscreen/parameters/touch_maxy'): No such file or directory

And, indeed, while there is /sys/module/fujitsu_usb_touchscreen/parameters/touch_maxy, there is no /sys/module/fujitsu/usb/touchscreen/parameters/touch_maxy; apparently a typographical error has been introduced somewhere. Thus I must find and fix it. But unfortunately I have very little idea where to look other than the install; section of the makefile, and it's not in there. (I understand there is sometimes an install file instead? But there isn't in this case.) ...Help?

(Since this is an entirely distinct issue, I've asked a separate question: `make install` fails apparently due to typo, but not in makefile: How to find and fix?)

UPDATE 2013-10-18 After reinstalling Kubuntu 12.04 again, this time recreating the /home partition (which, again, had been generated during an install of 13.04), I can no longer reproduce the strange error immediately above. I am still curious to know how the underscores got changed to slashes, but it looks as though nobody has any idea. It is perhaps also of interest to note that while I have still not successfully run checkinstall against this package, I have done make install; it requires the executabilization of /etc/init.d/fujitsu_touchscreen and the installation of hal, and the GUI freezes shortly after installation completes, and there is no particular new functionality afterwards that I have noticed, and the system can no longer resume from being suspended. I have subsequently lost interest in fujitsu-usb-touchscreen since it appears the Magick Rotation package can provide everything I was looking for. It does not, however, work 'out-of-the-box'; I have filed a bug report which also documents the inelegant workaround I discovered.

Archelon
  • 83
  • 1
  • 9

1 Answers1

1

fujitsu_usb_touchscreen.c says it's v0.3.9, despite the enclosed README file reporting "Fujitsu usb touchscreen kernel module and utilities v0.3.5". I hate saying this, but "it works for me":

wget https://bitbucket.org/cybergene/fujitsu-usb-touchscreen/get/112fdb75b406.zip
unzip 112fdb75b406.zip
cd cybergene-fujitsu-usb-touchscreen-112fdb75b406
make

Three possibilities:

  1. Possibly the zip file is corrupt? Try downloading again and repeating the extract/make steps?

  2. Make sure you have the current linux-headers package installed (this is needed for the inludes: linux/kernel.h, linux/slab.h, linux/module.h, linux/init.h, linux/usb/input.h). e.g.: find /usr/src/ -iname slab.h

  3. The package author does say, "Drop me an email if you have trouble installing the package." Have you tried that yet?

--beg:edit

I've been testing this in VirtualBox guests. The one I had it working under was installed from kubuntu-13.04-desktop-i386.iso some time ago and probably has some extra headers kicking around that made it happy.

I just installed a clean guest from kubuntu-13.04-desktop-amd64.iso and was able to repro your error. Not sure what's going on there, but if in fujitsu_usb_touchscreen.c I add the following lines immediately after the includes then it compiles without error:

#define dbg(args...) printk(args)
#define err(args...) printk(args)

Also, the usb_u810_tablet_probe() function defines an int err which is confusing to humans vs. the err() function/macro.

Hope this helps!

Phoeey
  • 521
  • 3
  • 6
  • Does it really say that? – Braiam Sep 15 '13 at 00:44
  • @Braiam: Yes, seriously. In the README file which is quoted on the overview page you linked. – Phoeey Sep 15 '13 at 00:49
  • 1. Tried it again with wget, just in case. Same result. 2. Each of those *.h names gives multiple results in that path. 3. Yes, almost 24 hours ago now. – Archelon Sep 15 '13 at 03:24
  • Is that on 13.04 that it works for you? Or is that extremely unlikely to be relevant? – Archelon Sep 15 '13 at 11:58
  • Still no response from zmiq2... I suppose I'll try downgrading my installation from the Recumbent Rodent to the Pusillanimous Porcupine, since I've seen the package compile on the latter. I'm trying to balance the productivity gain I would get from having this working against the loss incurred by working on it. If only I could think of some other prerequisite package(s) I could plausibly be missing! – Archelon Sep 16 '13 at 02:31
  • Perhaps I am too impatient, but I am going to replace 13.04 with 12.04 LTS and try again to compile the fujitsu-usb-touchscreen package. – Archelon Sep 16 '13 at 21:34
  • Sorry, been stuck at work the last coupla days. Please see my edited answer. – Phoeey Sep 18 '13 at 16:10
  • Your efforts are greatly appreciated. Since I am now (temporarily) running 12.04, and since I need to concentrate on my GR and QFT classes for a bit (despite not having the stylus to take notes and do homework), there may be some latency in my own engagement with this. Now, I understand that you are defining both `debug(args...)` and `err(args...)` as `printk(args)`, but in my vast ignorance of C, I must ask the following: are `arg` and `arg...` to be taken literally? If so, what are they, anyway? And if not, to what do they refer? – Archelon Sep 18 '13 at 21:51
  • These are macro definitions, so they get expanded out to "printk(whatever parameters were in the original code)" at compile time. I probably shouldn't be using printk() for both dbg() and err(). I should go through the currently set of headers and find out where their proper definitions are missing from. In C you can define (args...) as your function parameters to tell the compiler that you accept a variable number of parameters, just like the printf(), sprintf() and fprintf() functions do. You can mix it up and have required parameters such as: void foo(int bar, bool baz, args...) {...} – Phoeey Sep 19 '13 at 08:46
  • I apologise for abandoning this thread; after much travail, I lost interest in `fujitsu-usb-touchscreen`, since I couldn't get it to do anything---at least, not anything good---and I eventually discovered a way to get Magick Rotation to work instead. – Archelon Oct 18 '13 at 23:37