Jump to content

TabletMagic for TabletPCs


521 posts in this topic

Recommended Posts

Not yet. Follow the instructions I gave in your other thread (in ../) to find the Serial Port ioname

 

Also, you really need to do two things: TO enable wifi, spend $20 to $30 on a supported Mini PCI(-E) Atheros or Broadcom wifi card - Your intel chipset will almost certainly never be supported and it is easier to just replace it.

 

Second, since your Mac works, Update it to 10.4.9! No point in lagging behind when 10.4.9 is so full of Stability, Security and productivity fixes!

Link to comment
Share on other sites

I was able to get TabletMagic to identify that my Finepoint tablet existed, but it doesn't work. Replacing the PNP number with FPI2004 did the trick for finding it. If you need a tester on Finepoint tablets, I can do so.

 

This is the ioreg log:

	| | +-o Apple16X50ACPI0  <class com_apple_driver_16X50ACPI, !registered, !m$
 | |   | {
 | |   |   "CFBundleIdentifier" = "com.apple.driver.Apple16X50ACPI"
 | |   |   "IOClass" = "com_apple_driver_16X50ACPI"
 | |   |   "IONameMatched" = "FPI2004"
 | |   |   "IOTTYBaseName" = "serial"
 | |   |   "IOKitDebug" = 0x0
 | |   |   "IOProbeScore" = 0x0
 | |   |   "IOMatchCategory" = "IODefaultMatchCategory"
 | |   |   "IONameMatch" = "FPI2004"
 | |   |   "Location" = "ACPI Device=COMA"
 | |   |   "IOProviderClass" = "IOACPIPlatformDevice"
 | |   | }
 | |   | 
 | |   +-o Apple16X50UARTSync0  <class com_apple_driver_16X50UARTSync, regis$
 | |	 | {
 | |	 |   "Product Name" = "Built-in Serial Port (0)"
 | |	 |   "UART Type" = "16550AF/C/CF FIFO=16 MaxBaud=115200"
 | |	 |   "IOTTYBaseName" = "serial"
 | |	 |   "CFBundleIdentifier" = "com.apple.driver.Apple16X50ACPI"
 | |	 |   "IOTTYSuffix" = "0"
 | |	 |   "Location" = "ACPI Device=COMA Base=0x6a8"
 | |	 | }
 | |	 | 
 | |	 +-o IOSerialBSDClient  <class IOSerialBSDClient, registered, matche$
 | |		 {
 | |		   "IOTTYSuffix" = "0"
 | |		   "CFBundleIdentifier" = "com.apple.iokit.IOSerialFamily"
 | |		   "IOClass" = "IOSerialBSDClient"
 | |		   "Product Name" = "Built-in Serial Port (0)"
 | |		   "IOTTYBaseName" = "serial"
 | |		   "IOSerialBSDClientType" = "IORS232SerialStream"
 | |		   "IOProbeScore" = 0x3e8
 | |		   "IOResourceMatch" = "IOBSD"
 | |		   "IOMatchCategory" = "IODefaultMatchCategory"
 | |		   "IOTTYDevice" = "serial0"
 | |		   "IOCalloutDevice" = "/dev/cu.serial0"
 | |		   "IODialinDevice" = "/dev/tty.serial0"
 | |		   "IOProviderClass" = "IOSerialStreamSync"
 | |		 }

 

This is what appears in the console log for TabletMagic:

TabletMagicDaemon v2.0b9
  (c) 2007 Thinkyhead Software <www.thinkyhead.com>

  [INIT] renice -20 338 : Succeeded

  [INIT] Machine Type: ADP2,1 (Hackintosh?)
  [PROC] Tablet Bounds: (0, 0) - (24568, 18428)
  [PROC] Screen Bounds: (0, 0) - (1023, 767)

  [PORT] serial0: OPENED
  [PORT] Setting speed to 19200
  [PROC] "~#ISD V4"
  [INFO] ISD V4.00 (TabletPC)
  [INIT] TabletPC Detected

  Tablet Settings (imposed):
  command set ..... Tablet PC
  output format ... BINARY
  terminator ...... CRLF
  packet size ..... 9
  baud rate ....... 19200
  data bits ....... 8
  parity .......... N
  stop bits ....... 1
  cts ............. OFF
  dsr ............. OFF
  transfer mode ... suppressed
  coord sys ....... ABS
  transfer rate ... 200
  resolution ...... 1270 lpi
  origin .......... UL
  oor data ........ OFF
  pnp ............. ON
  sensitivity ..... firm
  read height ..... 8mm+
  mdm ............. OFF
  tilt ............ ON
  mm command set .. MM1201
  orientation ..... landscape
  cursor data ..... 1234
  remote mode ..... OFF
  increment ....... 2
  interval ........ 2
  xrez ............ 1270
  yrez ............ 1270
  tablet width .... 24570
  tablet height ... 18430


  Tablet initialized.

  2007-04-13 11:08:10.883 System Preferences[335] Received [hello]
  2007-04-13 11:08:10.883 System Preferences[335] Received [port] serial0
  2007-04-13 11:08:11.092 System Preferences[335] Received [ready]
  2007-04-13 11:08:11.092 System Preferences[335] Received [model] ISD V4.0 (TabletPC)
  2007-04-13 11:08:11.094 System Preferences[335] Received [info] 0 7200C910,002,02,1270,1270 active
  2007-04-13 11:08:11.130 System Preferences[335] Received [geom] 0 0 24568 18428 : 0 0 1023 767 : 1 1 2 6 : 0 1.0000
  2007-04-13 11:08:11.140 System Preferences[335] Received [scale] 24570 18430

 

Everything seems to initialize correctly, but the screen still doesn't respond.

Link to comment
Share on other sites

TabletMagic identifies the TabletPC by the fact that it isn't a mac, not by deducing anything about it. It's a better idea to do it this way anyway. And it won't work, because it doesn't understand the finepoint protocol.

 

Good to know you're a free tester though. :)

Link to comment
Share on other sites

Would skimming through the fpit source code give us a better idea as to how it works?

 

If only OSX could take in X Window Server config files...This wouldn't be such a hassle.

Link to comment
Share on other sites

But it would also need the X windows driver. So then it would have to be using X windows.

 

Which would suck.

 

VAV the TC1100, the Fujitsu isn't autodetected on linux, either. DO the plst hack, and see what happens. If it's not a 16X50, tough luck for now.

Link to comment
Share on other sites

But it would also need the X windows driver. So then it would have to be using X windows.

Yeah, I don't think everyone would want X and Aqua running side by side just to get a tablet driver to work. Some would, like myself.

 

VAV the TC1100, the Fujitsu isn't autodetected on linux, either. DO the plst hack, and see what happens. If it's not a 16X50, tough luck for now.

 

I'll see what I can do.

Link to comment
Share on other sites

Well, you wouldn't be running it side by side, you'd replaceAqua with AIGLX or omething similar. And AIGLXis nota very reliable piece of software, so the number of peopl who could successfully get a working hackintosh would be very small.

 

Which would suck.

 

Sorry, my last reply was a bit irritable. But that 12 year old with the USB dongle he refuses to consider replacing was pissing me off. Again, my apologies.

Link to comment
Share on other sites

Sorry, my last reply was a bit irritable. But that 12 year old with the USB dongle he refuses to consider replacing was pissing me off. Again, my apologies.

 

That's fine. Doesn't bother me.

 

Looking in the fpit source code, /dev/ttyS3 is used (in which the current device being used is /dev/tty), along with IRQ 15. Not sure if this would associate with anything that OSX does or if these values can be changed manually within the system. If only I could actually design a kernel extension...

Link to comment
Share on other sites

No this has NOTHING to do with the problem. Nice try though.

 

The issue here is not detecting the serial port - that has already been done. Without an OS X finepoint driver, even X11 would be useless.

 

The missing link here is the PROTOCOL. If there is source code for the X11 finepoint driver, maybe sending a copy to Scott would be good? If not, it's a case of figuring it out the old fashioned way.

Link to comment
Share on other sites

Anything related to the protocol, from what I've briefly examined, are two variable declarations, which is defining the packet size and buffer size.

 

#define FPIT_LINK_SPEED		B19200	/* 19200 Baud						   */
#define FPIT_PORT		"/dev/ttyS3"

#define FPIT_MAX_X		4100
#define FPIT_MIN_X		0
#define FPIT_MAX_Y		4100
#define FPIT_MIN_Y		0

#define PHASING_BIT	0x80
#define PROXIMITY_BIT	0x20 /* DMC: This was 0x40 but the chart says its bit 5 which is 0x20 */
/*#define TABID_BIT	0x20  */
#define XSIGN_BIT	0x10
#define YSIGN_BIT	0x08
#define BUTTON_BITS	0x07
#define COORD_BITS	0x7f

/* DMC: Added these */
#define SW1	0x01
#define SW2	0x02
#define SW3	0x04


/*
***************************************************************************
*
* Protocol constants.
*
***************************************************************************
*/
#define FPIT_PACKET_SIZE		5
#define BUFFER_SIZE			   (FPIT_PACKET_SIZE*20)

 

I'm probably looking at the wrong things, so I uploaded the fpit source for you guys to examine.

xf86_input_fpit_X11R7.1_1.1.0.tar.gz

Link to comment
Share on other sites

I looked through some of the header files in a default XCode project for kernel extensions, and I found "IOHIPointing.h" in the midst of things.

 

virtual void dispatchAbsolutePointerEvent(Point *	newLoc,
										Bounds *	bounds,
										UInt32	buttonState,
										bool	proximity,
										int		pressure,
										int		pressureMin,
										int		pressureMax,
										int		stylusAngle,
										AbsoluteTime	ts);

 

This is only a snippet of code from it. I'll look into the fpit source code some more and compare a few things. Perhaps making a kext will be easier than I thought. If you can get the extension to communicate with the serial port the 16X50 extension creates, it'd be easy as hell to port over the commands from fpit.

Link to comment
Share on other sites

The last thing you want to do is create another kernel extension. Homebrew kexts are for the most part unreliable at best.

 

Get the tabletmagic source code - That's where you want to add a finepoint driver.

The reliability of an extension, of course, depends on the programmer, but I see your point.

 

I'll check the tabletmagic source. Probably a better idea to see how it functions and works with Wacom tablets. Should be some similarities.

Link to comment
Share on other sites

What exactly do I need to download from the CVS for TabletMagic if I want to compile this myself? Also, do you happen to know where I could find that TabletPC only version that was posted a few pages ago? That link is dead.

Link to comment
Share on other sites

Double Post time.

 

I searched the old Tablet PC driver thread that supplied the Khashoggi driver, and found the 7th beta of TabletMagic that included a logging feature. Downloading and running that, my configuration came out differently. Instead of 19200bps, it was 9600bps. Either way, it identified my tablet.

 

[INFO] SD-Fallback (SD Series) Version 1.20
[INIT] SD-Series Detected

Tablet Settings (imposed):
command set ..... WACOM II-S
packet size ..... 7
baud rate ....... 9600
parity .......... N
data bits ....... 8
stop bits ....... 1
cts ............. OFF
dsr ............. OFF
transfer mode ... point
output format ... ASCII
coord sys ....... ABS
transfer rate ... MAX
resolution ...... 1270 lpi
origin .......... UL
oor data ........ OFF
terminator ...... CRLF
pnp ............. OFF
sensitivity ..... firm
read height ..... 8mm+
mdm ............. OFF
tilt ............ OFF
mm command set .. MM1201
orientation ..... landscape
cursor data ..... 1234
remote mode ..... OFF
increment ....... 0
interval ........ 0
xrez ............ 1270
yrez ............ 1270
tablet width .... 15240
tablet height ... 15240

[SENT] "SC15240,15240\r"
[SENT] "ST\r"
[PROC] Tablet Bounds: (0, 1906) - (15239, 13332)
[PROC] Screen Bounds: (0, 0) - (1023, 767)

Tablet initialized.

[NICE] PRI=-20 PID=430 : Succeeded

70 E0 >R
(p)
70 E0 70 C4 70 FC E0 4F E0 4F C4 4F F0 C4 70 E0 70 E0 89 70 C4 70 E0 88 70 FC E0 70 C4 88 70 C4 89 78 E0 70 E2 E0 C4 C4 E0 C4 E0 78 F0 E0 FC E2 C4 E0 E0 E0 E0 E0 E0 C4 E0 E0 E0 E0 F8 E0 E0 E0 E0 F0 C4 E0 E0 E2 E0 E0 FC E0 E0 C4 E0 E0 E0 F1 E0 E0 E0 E2 E0 E0 E0 E0 C4 E0 E0 E0 E0 C4 E0 E0 FF 88 E2 C4 F0 F8 4B E0 47 E2 F0 47 E0 47 E0 E2 47 C4 CC E2 47 FC 43 C4 47 FC 43 35 E2 E2 43 FC 43 E2 43 75 E2 47 E2 C8 E2 43 E2 E0 E0 E0 C4 C4 88 C4 E0 88 C4 E0 FC FC FC FC E0 FC E0 E0 E0 E0 E0 E0 E0 E0 E0 C4 C4 E0 E0 E0 88 E2 F0 FC 43 F0 47 C4 89 E0 4B C4 4F C4 4F E2 47 C4 4B C4 83 C4 87 E2 8B C4 83 C4 F0 E0 87 F0 54 E2 83 54 E2 87 E2 8B E2 87 C4 E0 C8 E0 E0 E0 FC FC E0 E0 E0 F8 E0 E0 C0 C0 C0 C0 E0 C0 E0 C0 E0 C0 88 88 88 E0 88 88 88 E0 C0 C0 FC 19 E0 C0 FC E0 E0 C0 C0 E0 C4 F0 C4 88 E0 F1 C0 F0 C0 C0 C0 88 E0 0A E0 0A E0 C0 E0 88 C0 C0 C0 C4 E0 C0 88 C0 88 88 E0 C4 E0 E0 E0 E0 E0 C4 F0 E0 F0 E0 E0 E0 E0 E0 FE E0 E0 C4 E0 FE FE E0 E0 E0 C4 E0 FE FE E0 E0 E0 F0 E0 E0 E0 E0 FE FE E0 FE E0 E0 E0 E0 E2 E0 E0 E0 E0 C4 E0 85 E0 85 E0 85 E0 45 E0 85 E0 C5 C4 45 E2 19 E2 79 E2 59 E2 79 E2 79 E2 19 E2 19 E2 19 E2 39 E2 39 E2 19 E2 79 E2 45 E2 05 E2 45 E2 E0 45 E0 AA FE E0 C4 E0 E0 E0 E0 E0 F8 E0 E0 C4 C4 E0 E0 E0 F8 E0 E0 C4 F8 F8 E0 F8 F8 F8 E0 E0 C4 C4 C4 E0 E0 E0 C4 F8 E0 E0 C0 F8 F8 4F E0 80 E0 C0 C4 00 E2 40 E2 E0 00 E2 F1 F1 F1 C1 E2 C1 E2 F0 C0 E2 F0 F0 F0 F0 E2 F0 F0 40 E2 00 E2 C0 E0 00 E0 AA E0 E0 E0 C4 C4 E0 F1 E0 E0 E0 E0 E0 E0 E0 E0 C4 E0 C4 E2 C4 C4 C0 88 C0 E0 E0 88 E0

 

The hex values on the bottom are sent from the tablet itself, so the connection is fine. Like you said before, the protocol for a Finepoint tablet needs to be deciphered. If only Windows had software that could log like this...

 

I know that the fpit drivers declares that stop bits equals 0, while TabletMagic has only 1 & 2.

Link to comment
Share on other sites

ummm...basic question, but after i get the driver and tabletmagic installed, what's supposed to happen? should i just be able to move my pointer around by using the pen? cuz...nothing's happening and i have both installed...and it says that it sees an ISD V4.0 (TabletPC) tablet...

Link to comment
Share on other sites

blah...i uninstalled khaggi's daemon and kept the plist edited to WACF008...

 

also have the latest build of tabletmagic installed

 

here's what IOreg -kx gives:

 

| +-o DTR <class IOACPIPlatformDevice, registered, matched, active, busy 0$

| | | {

| | | "Power Management protected data" = "{ theNumberOfPowerStates = 3, $

| | | "IODeviceMemory" = (({"address"=0x200,"length"=0x8}))

| | | "IOInterruptControllers" = ("io-apic-0")

| | | "acpi-dstate-mask" = 0x9

| | | "Power Management private data" = "{ this object = 02fa9580, intere$

| | | "IOInterruptSpecifiers" = (<0500000000000000>)

| | | "_STA" = 0xf

| | | "name" = <"WACF008">

| | | "acpi-dstate" = 0x0

| | | }

| | |

| | +-o Apple16X50ACPI0 <class com_apple_driver_16X50ACPI, !registered, !m$

| | | {

| | | "CFBundleIdentifier" = "com.apple.driver.Apple16X50ACPI"

| | | "IOClass" = "com_apple_driver_16X50ACPI"

| | | "IONameMatched" = "WACF008"

| | | "IOTTYBaseName" = "serial"

| | | "IOKitDebug" = 0x0

| | | "IOProbeScore" = 0x0

| | | "IOMatchCategory" = "IODefaultMatchCategory"

| | | "IONameMatch" = "WACF008"

| | | "Location" = "ACPI Device=DTR"

| | | "IOProviderClass" = "IOACPIPlatformDevice"

| | | }

| | |

| | +-o Apple16X50UARTSync0 <class com_apple_driver_16X50UARTSync, regis$

| | | {

| | | "Product Name" = "Built-in Serial Port (0)"

| | | "UART Type" = "16550AF/C/CF FIFO=16 MaxBaud=115200"

| | | "Power Management protected data" = "{ theNumberOfPowerStates =$

| | | "Power Management private data" = "{ this object = 0303da00, in$

| | | "IOTTYBaseName" = "serial"

| | | "CFBundleIdentifier" = "com.apple.driver.Apple16X50ACPI"

| | | "IOTTYSuffix" = "0"

| | | "Location" = "ACPI Device=DTR Base=0x200"

| | | }

| | |

| | +-o IOSerialBSDClient <class IOSerialBSDClient, registered, matche$

| | {

| | "IOTTYSuffix" = "0"

| | "CFBundleIdentifier" = "com.apple.iokit.IOSerialFamily"

| | "IOClass" = "IOSerialBSDClient"

| | "Product Name" = "Built-in Serial Port (0)"

| | "IOTTYBaseName" = "serial"

| | "IOSerialBSDClientType" = "IORS232SerialStream"

| | "IOProbeScore" = 0x3e8

| | "IOResourceMatch" = "IOBSD"

| | "IOMatchCategory" = "IODefaultMatchCategory"

| | "IOTTYDevice" = "serial0"

| | "IOCalloutDevice" = "/dev/cu.serial0"

| | "IODialinDevice" = "/dev/tty.serial0"

| | "IOProviderClass" = "IOSerialStreamSync"

| | }

 

 

When I run the command to run the daemon manually (i.e. sudo /Library/PreferencePanes/TabletMagic.prefPane/Contents/Resources/TabletMagicDaemon -d), I get this:

 

[iNIT] Machine Type: ADP2,1 (Hackintosh?)

[PROC] Tablet Bounds: (0, 0) - (15239, 15239)

[PROC] Screen Bounds: (0, 0) - (1023, 767)

 

[PORT] serial0: OPENED

[PORT] Setting speed to 19200

[sENT] "0"

[sENT] "*"

[RCVD]

[PORT] Setting speed to 9600

[sENT] "0"

[sENT] "*"

[RCVD]

[PORT] Setting speed to 9600

[sENT] "SP\r"

[sENT] "~#\r"

[sENT] "~#\r"

[sENT] "~#\r"

[PORT] Setting speed to 19200

[sENT] "SP\r"

[sENT] "~#\r"

[sENT] "~#\r"

[sENT] "~#\r"

 

[PORT] Bluetooth-PDA-Sync: OPENED

[PORT] Setting speed to 19200

[sENT] "0"

[sENT] "*"

[RCVD]

[PORT] Setting speed to 9600

[sENT] "0"

[sENT] "*"

[RCVD]

[PORT] Setting speed to 9600

[sENT] "SP\r"

[sENT] "~#\r"

[sENT] "~#\r"

[sENT] "~#\r"

[PORT] Setting speed to 19200

[sENT] "SP\r"

[sENT] "~#\r"

[sENT] "~#\r"

[sENT] "~#\r"

Error opening serial port /dev/cu.Bluetooth-Modem - Resource busy(16).

 

[PORT] Bluetooth-Modem: OPEN ERROR

 

Could not initialize tablet.

 

[ERR ] Fatal Error: No Wacom Tablet Found!

 

Anyone know what this all means in layman's terms?

Link to comment
Share on other sites

ioreg gave you information about the port you're using. The daemon is trying to send a command to your tablet through the serial port. It's not receiving a signal back, so it can't find your tablet.

 

What exactly are you using?

Link to comment
Share on other sites

ioreg gave you information about the port you're using. The daemon is trying to send a command to your tablet through the serial port. It's not receiving a signal back, so it can't find your tablet.

 

What exactly are you using?

 

I'm using a Lenovo X60 Tablet...

Link to comment
Share on other sites

I was able to get TabletMagic to identify that my Finepoint tablet existed, but it doesn't work. Replacing the PNP number with FPI2004 did the trick for finding it. If you need a tester on Finepoint tablets, I can do so.

 

Hi, good going! It's true - as FS posted - that TabletMagic doesn't try to talk to TabletPC digitizers (by default) so if you selected the serial port of your Finepoint digitizer when you started the driver the only thing that's happened so far is that the serial port has been opened and communication has been established.

 

It looks like Finepoints may communicate at 9600 baud, so I'll have to add some override options for TabletPCs, which currently assume 19200. I'll try to find out more about the Finepoint protocol, and when I have something to test I'll post it here.

 

I'm using a Lenovo X60 Tablet...

 

In the Preference Pane try turning on "Don't Query" in the Extras tab, then kill and restart the daemon.

Link to comment
Share on other sites

It looks like Finepoints may communicate at 9600 baud, so I'll have to add some override options for TabletPCs, which currently assume 19200. I'll try to find out more about the Finepoint protocol, and when I have something to test I'll post it here.

 

 

Indeed it does, I was able to get some information previously posted from the tablet at 9600 baud.

 

If anything, you could look at the fpit source. It looked like some variables that were declared could be deemed important.

 

Perhaps you could have the ability to manually select the protocol to use? Since I was able to get some information from the old version of Tablet Magic (before the TabletPC support) where the options were different, that could help. Could be risky, but even so, it gives the user the capability to select the precise parameters that their tablet follows in order for it to work.

Link to comment
Share on other sites

 Share

×
×
  • Create New...