Cela fait longtemps que j'essaie de faire fonctionner un écran tactile Serial 3M sur Ubuntu 10.04.
Le poste le plus proche de ce dont j'avais besoin était celui-ci : http://ubuntuforums.org/showthread.php?t=1508944&highlight=3m+écran tactile
Malheureusement, j'arrive à toucher l'écran et la souris saute dans le coin supérieur droit et c'est tout. Le logiciel de calibration ne fonctionne pas vraiment (directement de 3M). Soit il ne démarre pas, soit il y a un problème avec lui.
Il semble maintenant que le problème soit lié au fait que le logiciel de calibration ne reconnaît pas l'écran tactile connecté. En apportant quelques modifications au script d'installation, j'ai pu obtenir que le logiciel de calibration s'installe correctement.
#!/bin/bash
#
# Copyright 2007-2009 3M. All rights reserved.
#
# This script installs the MT7 touch screen driver
# During installation, all directories must be writeable.
#
# These symbols point to where the MT7 software binaries and data reside.
# The script attempts to detect where the installation kit is. If this
# fails, you need to set BinDir.
# The data directory must be on writeable media. The script normally uses
# the directory where the installation kit resides as the data directory.
# If you need the data directory to be elsewhere, set DataDir.
BinDir=""
DataDir=""
# If desired, define a file to contain driver startup options and set
# the TwDrv_Cfg symbol to the full path of the file. Normally this is
# not needed.
TwDrv_Cfg=""
# This symbol points to where the Java VM binaries reside.
JavaBinDir=""
# These symobls point to system and applictaion directories other than
# those specific to the MT7 software
UdevDir="/etc/udev"
HotplugDir="/etc/hotplug"
XorgDir="/usr/lib/xorg/modules/input"
XFree86Dir="/usr/X11R6/lib/modules/input"
LibDir="/usr/lib"
SEDir1="/usr/selinux/booleans"
SEDir2="/selinux/booleans"
LSBDir="/lib/lsb"
# The InitDir symbol points to where this script places an 'init' script.
# If left blank, this script first looks for /etc/init.d and then /etc/rc.d.
# If this is not appropriate or this script otherwise fails, set this value.
InitDir=""
# This symbol enables permission for some MT7 shared objects on
# SELinux systems. On most systems SEGivePermission is texrel_shlib_t.
# Change this variable if another security type is appropriate.
SEGivePermission="texrel_shlib_t"
# This symbol affects when the X input driver converts raw touch screen
# coordinates into screen coordiates. Normally, the X input driver reports
# the raw coordinates to the X server which then calls an conversion
# routine. Some versions of the X server expect the initial report to
# contain converted coordinates. If your touch behavior is off and
# calibration does not address the problem, set ConvertAtRead to true.
ConvertAtRead="false"
# This symbol defines the name of the xorg.conf file to generate if one is
# not found. Starting with X server version 1.5, this file is not
# automatically generated. This file is needed for MT 7 for Linux to work.
# If you want the file to reside elsewhere, set this symbol.
XorgConf="/etc/X11/xorg.conf"
# These symbols define where the 50MT7-xinit script needs to go and what
# suffix it requires. The script places this file automatically in
# /etc/X11/xinit/xinitrc.d and /etc/X11/Xsession.d without a suffix. If
# your distribution requires another location or requires a suffix on the
# file, set these symbols.
XinitDir=""
XinitSuffix=""
# Determine the installation directory
if [ -z $BinDir ]
then
if [ $(echo $0 | grep ^/) ]
then
BinDir=$0
else
BinDir=$(echo $PWD"/"$0 | sed s#[.]/##)
fi
BinDir=$(echo $BinDir | sed s%/[^/]*$%%)
fi
# Determine if the system is compatible
$BinDir/TwCompat
if [ $? != 0 ]
then
echo "ERROR: MT7 for Linux not installed - shared memory support not detected"
exit
fi
# Determine the data directory
[ -z $DataDir ] && DataDir=$BinDir
# Create the data and fifo directories
if [ $DataDir != $BinDir ]
then
[ -e $DataDir ] || mkdir $DataDir
chmod a+w $DataDir
ln -s $DataDir $BinDir/data
else
[ -e $BinDir/data ] || mkdir $BinDir/data
fi
chmod a+w $BinDir/data
[ -e $BinDir/data/fifo ] || mkdir $BinDir/data/fifo
chmod a+w $BinDir/data/fifo
# Determine the init script directories
if [ -z $InitDir ] && [ -d /etc/init.d ]
then
if [ $(ls -l /etc/init.d/ | sed -e /functions/d -e /^total\ [0-9]*$/d | wc -l) != 0 ]
then
InitDir="/etc/init.d"
fi
fi
if [ -z $InitDir ]
then
if [ -e /etc/rc.d/rc.local ]
then
InitDir=/etc/rc.d
else
InitDir=$BinDir
fi
fi
# Install the init script
[ -e $InitDir/TWDrvStartup ] && rm -f $InitDir/TWDrvStartup
sed -e s#%BINDIR%#$BinDir#g \
-e s#%INITDIR%#$InitDir#g \
-e s#%LSBDIR%#$LSBDir#g \
-e s#%TWDRV_CFG%#$TwDrv_Cfg#g $BinDir/TWDrvStartup.ORIG \
>$InitDir/TWDrvStartup
chmod a+x $InitDir/TWDrvStartup
if perl $BinDir/TwIsThere.perl chkconfig
then
chkconfig --add TWDrvStartup >/dev/null
elif perl $BinDir/TwIsThere.perl update-rc.d
then
update-rc.d TWDrvStartup defaults >/dev/null
elif [ -e $InitDir/rc.local ]
then
sed -e '$ a\
%INITDIR%/TWDrvStartup start
' $InitDir/rc.local >$InitDir/rc.local.TEMP
rm -f $InitDir/rc.local
sed -e s#%INITDIR%#$InitDir# $InitDir/rc.local.TEMP >$InitDir/rc.local
rm -f $InitDir/rc.local.TEMP
chmod +x $InitDir/rc.local
else
echo "Cannot install the init script"
fi
# Test for USB support
if [ -z $(uname -r | grep ^2\.4\.) ]
then
# Copy the udev rules script
Hotplug=0
if [ -d $UdevDir/rules.d ]
then
if [ -e $UdevDir/rules.d/99-TwDriver.rules ]
then
rm -f $UdevDir/rules.d/99-TwDriver.rules
fi
sed s#%BINDIR%#$BinDir#g $BinDir/99-TwDriver.rules.ORIG \
>$UdevDir/rules.d/99-TwDriver.rules
Hotplug=1
fi
if [ -d $HotplugDir/usb ] && [ -e $HotplugDir/usb.agent ]d
then
[ -e $HotplugDir/usb/TwHotplug ] && rm -f $HotplugDir/usb/TwHotplug
sed s#%BINDIR%#$BinDir#g $BinDir/TwHotplug.ORIG > $HotplugDir/usb/TwHotplug
chmod a+x $HotplugDir/usb/TwHotplug
[ -e $HotplugDir/usb.usermap ] || echo "# Created by MT7" >$HotplugDir/usb.usermap
sed <$HotplugDir/usb.usermap >$HotplugDir/usb.usermap.TEMP '$ a\
# TwHotplug is for the MT7 for Linux software\
TwHotplug 0x0001 0x0596 0x0000 0x0000 0x0000 0x00 0x00 0x00 0x06 0x00 0x00 0x00000000
'
rm -f $HotplugDir/usb.usermap
mv $HotplugDir/usb.usermap.TEMP $HotplugDir/usb.usermap
Hotplug=1
fi
if [ $Hotplug == 0 ]
then
echo "Hotplugging of USB touch screen controllers is not supported"
fi
else
echo "USB touch screen controllers are not supported under kernel 2.4"
fi
# Test for the version of C++ standard libraries
if [ -e $LibDir/libstdc++.so.6 ]
then
CppExt="6"
elif [ -e $LibDir/libstdc++.so.5 ]
then
CppExt="5"
else
echo "Cannot find needed libstdc++.so in $LibDir"
CppExt=""
fi
# Link the libraries into /usr/lib
perl $BinDir/TwLibInstall.perl install $LibDir $BinDir/lib*.so
if [ x$CppExt != x ]
then
perl $BinDir/TwLibInstall.perl install $LibDir $BinDir/so$CppExt/lib*.so
fi
# Link RnR sensitive files
if [ x$CppExt != x ]
then
$BinDir/TwLibTest $LibDir/libTwSystemRnR12.so
if [ x$? != x0 ]
then
rm -f $LibDir/libTwSystem.so
ln -s $LibDir/libTwSystemRnR12.so $LibDir/libTwSystem.so
ln -s $BinDir/TwMonitorRnR.bin$CppExt $BinDir/TwMonitor
else
$BinDir/TwLibTest $LibDir/libTwSystemRnR.so
if [ x$? != x0 ]
then
rm -f $LibDir/libTwSystem.so
ln -s $LibDir/libTwSystemRnR.so $LibDir/libTwSystem.so
ln -s $BinDir/TwMonitorRnR.bin$CppExt $BinDir/TwMonitor
else
ln -s $BinDir/TwMonitor.bin$CppExt $BinDir/TwMonitor
fi
fi
fi
# Copy the X input driver
XCopyDefault=0
if [ -d $XorgDir ]
then
XDir=$XorgDir
if [ -z "$(X -version 2>&1 | grep X\.Org[^1]*1\.[4-9]\.)" ]
then
XSrc=$BinDir/twxinput_drv.so
elif [ -z "$(X -version 2>&1 | grep X\.Org[^1]*1\.[5-9]\.)" ]
then
XSrc=$BinDir/twxinput_drv.so.1.4
else
XSrc=$BinDir/twxinput_drv.so.1.5.1
XCopyDefault=1
fi
elif [ -d $XFree86Dir ]
then
XDir=$XFree86Dir
XSrc=$BinDir/twxinput_drv.so
else
XDir=""
echo "Cannot install the X input module"
fi
if [ -d $XDir ]
then
[ -e $XDir/twxinput_drv.o ] && rm -f $XDir/twxinput_drv.o
[ -e $XDir/twxinput_drv.so ] && rm -f $XDir/twxinput_drv.so
ln -s $XSrc $XDir/twxinput_drv.so
fi
# Install the xinit scripts
if [ -d /etc/X11/xinit/xinitrc.d ]
then
sed s#%BINDIR%#$BinDir#g $BinDir/50MT7-xinit.ORIG \
>/etc/X11/xinit/xinitrc.d/50MT7-xinit$XinitSuffix
chmod a+x /etc/X11/xinit/xinitrc.d/50MT7-xinit$XinitSuffix
fi
if [ -d /etc/X11/Xsession.d ]
then
sed s#%BINDIR%#$BinDir#g $BinDir/50MT7-xinit.ORIG \
>/etc/X11/Xsession.d/50MT7-xinit$XinitSuffix
chmod a+x /etc/X11/Xsession.d/50MT7-xinit$XinitSuffix
fi
if [ x$XinitDir != x ]
then
sed s#%BINDIR%#$BinDir#g $BinDir/50MT7-xinit.ORIG \
>$XinitDir/50MT7-xinit$XinitSuffix
chmod a+x $XinitDir/50MT7-xinit$XinitSuffix
fi
# Set up the SELinux security types
if [ -d $SEDir1 ]
then
SEDir=$SEDir1
elif [ -d $SEDir2 ]
then
SEDir=$SEDir2
else
SEDir=""
fi
if [ x$SEDir != x ]
then
chcon -t $SEGivePermission $LibDir/libTwSystem.so
chcon -t $SEGivePermission $LibDir/libTwConfig.so
chcon -t $SEGivePermission $LibDir/libTwIO_Utilities.so
chcon -t $SEGivePermission $LibDir/libTwAppIO_JNI.so
chcon -t $SEGivePermission $LibDir/libTwCommon_JNI.so
chcon -t $SEGivePermission $LibDir/libTwConfig_JNI.so
chcon -t $SEGivePermission $LibDir/libTwUI_JNI.so
chcon -t $SEGivePermission $LibDir/libTwUICP.so
[ -e $XDir/twxinput_drv.so ] && chcon -t $SEGivePermission $XDir/twxinput_drv.so
fi
# Set up the configuration
[ -d /dev/shm ] && rm -f /dev/shm/*TwConfig*
sed s#%BINDIR%#$BinDir#g $BinDir/TwFramework.cfg.ORIG >$BinDir/TwFramework.cfg
$BinDir/TwCfgUtil /u $BinDir/TwFramework.cfg
$BinDir/TwCfgUtil /u $BinDir/TwFactory.cfg
# Produce the Remove script
sed -e s#%BINDIR%#$BinDir#g \
-e s#%UDEVDIR%#$UdevDir#g \
-e s#%XDIR%#$XDir#g \
-e s#%LIBDIR%#$LibDir#g \
-e s#%SEDIR%#$SEDir#g \
-e s#%HOTPLUGDIR%#$HotplugDir#g \
-e s#%INITDIR%#$InitDir#g \
-e s#%XINITDIR%#$XinitDir#g \
-e s#%XINITSUFFIX%#$XinitSuffix#g \
$BinDir/Remove.ORIG >$BinDir/Remove
# Produce the X input script
sed -e s#%CONVERT%#$ConvertAtRead#g \
$BinDir/TWXinputInstall.perl.ORIG >$BinDir/TWXinputInstall.perl
# Produce the CP start script
sed -e s#%JAVABINDIR%#$JavaBinDir#g \
-e s#%BINDIR%#$BinDir# \
$BinDir/StartCP.ORIG >$BinDir/StartCP
# Set any necessary permissions
chmod a+x $BinDir/TwCalib
chmod a+x $BinDir/TWXinputInstall.perl
chmod u+x $BinDir/Remove
chmod a+x $BinDir/StartCP
# Copy the default xorg.conf
if [ $XCopyDefault == 1 ]
then
$BinDir/TWXinputInstall.perl -find
if [ $? == 1 ]
then
cp -a xorg.conf.ORIG $XorgConf
fi
fi
Habituellement, cela produit cette erreur, bien que je ne pense pas que les erreurs soient critiques (avertissements ?):
update-rc.d: warning: /etc/init.d/TWDrvStartup missing LSB keyword 'required-start'
update-rc.d: warning: /etc/init.d/TWDrvStartup missing LSB keyword 'required-stop'
update-rc.d: warning: TWDrvStartup start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (2 5)
update-rc.d: warning: TWDrvStartup stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (0 1 3 4 6)
ln: creating symbolic link `/home/kioskadmin/Desktop/twscreen/TwMonitor': File exists
root@kiosk1:/home/kioskadmin/Desktop/twscreen#
J'ai également demandé cette question sur Super User il y a assez longtemps, mais à part le lien vers les forums Ubuntu, rien. Si je me souviens bien, personne sur le forum Ubuntu n'a été d'une grande aide, si ce n'est de me renvoyer vers le même article. Il semble que les "écrans tactiles" soient un sujet spécialisé que peu de gens connaissent.
Mes questions :
1 Des conseils pour que cela fonctionne correctement ? Mon principal problème semble être le nouveau processus de démarrage de la version 10.04.
2 Y a-t-il un autre logiciel d'étalonnage ou un autre pilote d'écran tactile qui pourrait fonctionner ou qui vaut la peine d'être essayé ? (série, pas USB).
Il semble que le pilote ne s'initie pas correctement. Le logiciel de calibration et le panneau de contrôle ne détectent pas le contrôleur pour une raison quelconque. Mon hypothèse pour le moment est que le init script n'est pas correct, très probablement en raison de changements dans le processus de démarrage d'Ubuntu.
Edit :
Il semble que je puisse maintenant exécuter correctement le script du panneau de contrôle, j'avais des problèmes avec Java, mais j'ai juste dû l'exécuter différemment. Maintenant, j'ai le problème que le panneau de contrôle et le logiciel de calibration ne peuvent pas détecter l'écran tactile. Tout fonctionne, mais ne le trouve pas, bien qu'il soit connecté et qu'il réponde si j'active l'écran manuellement.
L'erreur est la suivante : "l'écran tactile 1 n'est pas présent".
0 votes
Je me demande combien de temps cela restera sans réponse
0 votes
...toujours pas de réponse
0 votes
Comment ajouter une prime....
0 votes
J'aimerais pouvoir prolonger la prime car le problème n'a jamais été résolu... j'ai dû passer à xp où 3m a décidé d'avoir un pilote qui fonctionne :(. pas d'idée mais je n'ai pas réussi à le résoudre