Jump to content

Fujitsu T-421X TabletPC


135 posts in this topic

Recommended Posts

The CPU is going to be on the bottom and will mean you have to pretty much disassemble the whole computer. I have no idea if it is really socketed... If they're identical computers then I guess it would make sense from a cost standpoint to socket it so Fujitsu wouldn't need two motherboard designs...

Link to comment
Share on other sites

And today I'm angry. I made arrangments for the courier to call my mobile when he arrived, because the bell for my house doesn't work. What do I find? The sodding prick never called, just left a card telling me to rearrange collection. When is the only day I could be here again? Next Friday. Another week without my computer: Unacceptable. What's the only way they'll collect it before? Premium collection tomorrow morning. Price? £10-£15. Will Fujitsu cover it? No.

 

 

Ass holes all round.

Link to comment
Share on other sites

ATLANTIS has left for repair/replace. I'm still pretty irritated about the whole collection farce, but at least once it's repaired and back in my hands I can bill them for all collection/delivery charges and get this sorted.

 

Within the next fortnight I should have the new motherboard/system in my hands and be able to get down to business with your driver, and whatever new TabletMagic variant Scott comes up with. - On that note, Scott; will TabletMagic be capable of handling multiple-tablet configurations? Apart from the integrated tablet of the T421X, I have a dual monitor configuration and a secondary Wacom Ultrapad hooked up to a PCMCIA card. I want to use the secondary tablet with the second screen for art work, since it's larger.

 

Khas, anything else been found out about the PCI bus and the necessary modifications that will be needed to enable it under Darwin/OSX? I'll need to look into the USB bus too, it gives enumeration errors under boot. I'm not sure whether the button panel is USB or GPIO, I guess it's feasible that it could be my odd "Failed Device Enumeration" but I wouldn't like to pretend to be sure.

 

Also, if you still have your MPCI Wifi card lying around, the intel chip; can you upload an image so I can see the connector? In case I end up stuck with a centrino system, I want to know what I can replace it with; if the Airport Extreme is a standard-fitting MPCI connection, it'd be my choice of preference, as the cards are cheap and readily available, and have driver support under every OS I'd want to use.

 

(Boot camp provides Windows drivers, OS X supports it of course and Linux/PPC should have put code for it into the kernel.)

 

 

Ferret.

Link to comment
Share on other sites

I wish I had based my work mostly on Tabletmagic that way I could email you the code and you get immediately add support for the Fujitsu tablets. My hack is only meant for those to use in the mean time, and is only available here.

 

Could you maybe send me your source code anyways? I won't share it with anyone, and I'll delete it after I look at it. I won't even copy and paste any of it. I promise.

 

You see, I could really use your insights to get TabletMagic working. But of course I understand if you want to conceal your source code. If you're planning to sell your driver commercially, for example, or if you've created a patentable algorithm then perhaps it is best to keep it under wraps.

 

If sending me the source code isn't something you're willing to do, could you instead explain to me in descriptive terms how to communicate with the digitizer in TabletPC? The only things I can glean so far is that you have to send "0" in place of "SP" to stop the tablet, "1" in place of "ST" to start the tablet, and "*" in place of "~#" to get the tablet to identify itself.

 

And I can also see that the TabletPC's reply to "*" is "~F03$1~" (a binary string where the ~ characters represent 0xFF and 0x7F respectively). And apparently the tablet bounds are 24780 x 18630, but the tablet itself doesn't provide this information.

 

The only piece I lack at this point is the tablet protocol, which as near as I can tell is an early revision of what Wacom refers to as their "II-S Binary" protocol.

 

In my discussions with Wacom developers they've been quite clear that they can't discuss any of their outside work or where they derived their original technology, but I'm guessing the TabletPC uses a digitizer very similar to early Wacom models. The most likely protocol, therefore, is II-S Binary.

 

The log files that some of this forum's readers have provided to me seem to bear this out, as the packets are 9 bytes long and use the high bit as the start marker. Since my driver already supports II-S Binary all I really need to do is make sure I know when a TabletPC is present, rather than some other model.

 

Am I on the right track? Any guidance you can provide at this point would be very much appreciated.

Link to comment
Share on other sites

Okay, well never mind the request for help. The linux-wacom project has been a great source of information, as usual. I've been working with Carpao - molto grazie! - to test a new version of TabletMagic and I will soon be releasing TabletMagic 2.0b8 with full TabletPC support.

 

I'll leave the mapping options enabled in the Preference Pane just for fun.

 

Going forward, I encourage you to use the Testing pane to troubleshoot any problems you may have. And I'll be providing a logging version of the daemon as well, which produces a very detailed log of all serial activity. The main problem I anticipate is that not all systems based on the TabletPC will have the same resolution.

 

For the curious, the essentials of the TabletPC protocols are very straightforward. It runs at 19200 Baud. It's not based on Wacom II-S as I originally thought. Instead, pen events are transmitted as a 9-byte binary packet with position, pressure, and button data. It supports 255 levels of pressure. The last two bytes of the packet are currently unused, but they could theoretically carry tilt or rotation information on future models.

 

The TabletPC digitizer supports a pen with up to two buttons and an eraser. In examining the linux-wacom code I found an apparent paradox or error. The same bit that represents the eraser also represents the second button. On Wacom UD tablets you can only infer that the eraser is engaged because the "button 2 bit" is set when the pen first enters proximity, before it touches the tablet. So you can actually "fool" a Wacom tablet into thinking you're using the eraser by holding down one of the buttons as you bring the pen close. It's unclear if this is the case with the TabletPC, but the linux-wacom TabletPC parser doesn't check for proximity.

 

The long-and-short of this is that the second button will probably be interpreted as an eraser until I can confirm whether the proximity behavior is the same as a Wacom UD. Those of you with 2-button styluses will be able to use the Testing pane of TabletMagic to see what's going on there.

 

The TabletPC answers the "*" command with a reply very similar to a Wacom, with a short binary packet that starts with the familiar "~#" characters. I haven't figured out how to interpret the remaining characters yet. Without more testing I can't confirm that these characters are always going to be in the reply. So the logging version ought to come in handy to figure that one out.

 

To detect that TabletMagic is running on the TabletPC versus a stock Mac I'm taking a rather roundabout route. If anyone has a suggestion to get a more solid confirmation of the hardware platform I'd love to know about it.

 

My approach is first to get the Machine Type string from Gestalt. If the machine type starts with "ADP" then it's either an Apple Development Platform machine - which theoretically no one has - or it's an unsupported machine. On these machines TabletMagic starts out at 19200 and asks the TabletPC to identify itself using the "*" command. If the tablet answers this command with a string starting "~#" then it's assumed to be a TabletPC and the daemon goes forward. If not, it fails and doesn't attempt TabletPC again.

 

Anyhow, I'm sure you want to get a hold of this thing to test it. I'll have it posted tomorrow, after one more round of tests. I just wanted to be the first to let you know of our success. Thank you again to all who sent me log files and did testing. You are the heart and soul of the open source movement.

 

-

Link to comment
Share on other sites

Almost there.... this is going to be a pretty serious upgrade, and I want to iron out all the annoying little glitches that have been bothering me for a long time.

 

So maybe just one more day... hold on to your hats.

 

The new features list includes:

 

• Added support for some TabletPC digitizers

• Added a "Launch at Startup" option, at long last

• Removed the requirement to authenticate on the first start

• Tested and certified for XD Tablets

• Removed the "SD Fallback" behavior

• Fixed a bug where the pref pane could mess up tablet mapping

• Added support for the System Preferences search box

Link to comment
Share on other sites

Khashoggi, I've mentioned it before, it's because of the OS X fallback monitor driver.

 

OS X has a "Display" driver type that is used on undetected displays. Rotation is a matter of creating a monitor driver, probably by modifying a duplicated ACD driver, which already has rotation support. That custom driver could also be given autorotate, and an error code that gets sent to Tabletmagic to tell it to rotate aswell.

 

Finally, we need a driver for the USB HID controller that is the button panel, as well as a control program to manage it. Should be similar for every tabletpc panel, and a good controller program could be used with multiple tablet panel drivers. :) Here's a clue, first we need to get the device enumerated, it fails on startup.

 

Any luck with PCI?

 

Woohoo! Called Fujitsu, the guy on the phone did a full cavity check on my file, and found the words "Motherboard and Memory ordered."

 

My Tablet WILL be coming home! :) I don't need to think of a new name!

Link to comment
Share on other sites

OS X has a "Display" driver type that is used on undetected displays. Rotation is a matter of creating a monitor driver, probably by modifying a duplicated ACD driver, which already has rotation support. That custom driver could also be given autorotate, and an error code that gets sent to Tabletmagic to tell it to rotate aswell.

 

TabletMagicDaemon registers for a notification when the display resolution changes. When the resolution changes it remaps its screen geometry proportionally to the new display size. However it doesn't re-query the tablet because - up to now - there was no need. So it sounds like a good addition would be, when running on TabletPC and the resolution changes in such a way that it's obviously been rotated, then also swap the tablet width and height. And do the same thing during daemon startup if the display is in portrait orientation....

 

Ok, I'm off to sleep. Starting a new job at a cafe in the morning and I want to be bright-eyed and bushy-tailed!

 

Although I'm still ironing out bugs, and I don't have the official release version ready, I'm attaching the latest build for you to try out. I look forward to your comments and suggestions.

TabletMagic2b8rc1.dmg.zip

Edited by Scott Lahteine
Link to comment
Share on other sites

Hey all,

 

Sorry for the continuing delay, but of course I want to be thoroughgoing and deal with all known issues before release. It turns out that adding the "Launch at Startup" option opened a small can of worms. "What kind of worms," you ask? Well...

 

The problem is that binaries launched at startup - or under launchd - run in a different "bootstrap server session" than binaries launched in a user context. This would be no problem but for the fact that TabletMagic uses CFMessagePorts to communicate between the daemon and preference pane. While the preference pane can send messages to the daemon and receive replies, the daemon cannot initiate messages to the preference pane.

 

So I'm replacing the CFMessagePort code with UNIX Domain Sockets, which are a little more complex but allow much greater flexibility - such as having multiple clients connect to the daemon (e.g., a preference pane, a dashboard widget, and a monitoring application).

 

Anyhow, that will take another day or so, plus I can have a look at the M400....

Link to comment
Share on other sites

I've posted a new build of TabletMagic which you can try out.

 

This version will work on those systems that identify the hardware as "ACPI" or "ADP" - plus it works around most of the communication problems until I can finish the Sockets code that will be replacing the CFMessagePort code. It also sets a slightly higher pressure threshold, and should have a slightly better pressure curve.

 

NOTE: The installer will kill the currently running tablet driver when you click the Install button, so be sure to have a trackpad or mouse handy.

Edited by Scott Lahteine
Link to comment
Share on other sites

And finally, here's the most promising build to-date: Release Candidate 3. I'm anxious to hear whether it works on all TabletPCs or just the M400's.

 

This version works around the aforementioned CFMessagePort problem without using Sockets and without using Mach Ports. I went a long way towards integrating Sockets as the daemon->prefpane communication channel. But in the end, both Sockets and Mach Ports were overly complex for my needs.

 

Instead of either of these I used a timer-based solution to simulate two-way communication with RPCs. The daemon now places all its outgoing messages into a FIFO queue and the preference pane just polls the daemon 5 times a second, each time fetching the next message from the queue and processing it. This allows the daemon to get information to the preference pane in a reasonable amount of time, without ever needing to establish an outgoing connection.

 

Whew! Coding Mac OS X can be a lot of fun sometimes. Between Carbon and Cocoa and BSD and all the other layers you could really get lost in there.

 

Other bugs were addressed as well. This version is likely to end up as the final release... once the Italian localization is cleaned up a bit.

 

If a packet hits a pocket on a socket on a port, and the bus is interrupted as a very last resort, and the address of the memory makes your floppy disk abort, then the socket packet pocket has an error to report. If your cursor finds a menu item followed by a dash, and the double-clicking icon puts your window in the trash, and your data is corrupted 'cause the index doesn't hash, then your situation's hopeless and your system's gonna crash! If the label on the cable on the table at your house, says the network is connected to the button on your mouse, but your packets want to tunnel on another protocol, that's repeatedly rejected by the printer down the hall, and your screen is all distorted by the side effects of gauss, so your icons in the window are as wavy as a souse, then you may as well reboot and go out with a bang, 'cause as sure as I'm a poet, the sucker's gonna hang! When the copy of your floppy's getting sloppy on the disk, and the microcode instructions cause unnecessary risk, then you have to flash your memory and you'll want to RAM your ROM. Quickly turn off the computer and go and tell your mom.

- Bill Bercu (as Dr. Seuss)

Link to comment
Share on other sites

I still get the sodding GSOD when I try to activate the tablet!

 

Any suggestions?

 

Interesting note: I seem to have discovered that with the new motherboard, CI and QE are enabled. o.O

 

Will install xcode and see what I can do to PCI.

Edited by Ferret-Simpson
Link to comment
Share on other sites

Have got Khashoggi's driver working! :tomato:

 

I have an issue that prevents it from starting automatically. However, I think it's just a typo on Khashoggi's part that'll take seconds to fix.

 

Xcode is downloading. Should have that done overnight, be able to have a look at the PCI driver tomorrow. I've started a ./Drivers thread for it.

 

Next job: Monitor rotation. Any suggestions? From what I've seen of the ACD monitor driver, rotation is controlled by a panel specific to the ACD driver. It's in System/Library somewhere.

 

Audio partially working from Taruga 1.15

Xcode appears to have a "USB Prober" program which should let me start on a driver for the Button panel, and at least determine whether I'm right about it being the mystery device that wouldn't enumerate.

Link to comment
Share on other sites

Khashoggi: Case Sensitivity is enabled on some of our HDD's you know! :thumbsup_anim:

 

I installed the driver, modified the support files a bit to support case sensitive partitions and it's running perfectly, thanks.

 

I've started a TabletPC sotware thread in MacOS X/Applications on the forums. Nothing but journal programs so far, but it'll get better with age, I'm sure.

 

Haven't looked at the PCI driver in a day or so, I'll see if I can spare a few minutes tonight to see anything obvious.

 

 

EDIT: This thread got 4 pages down the list! Where IS everyone?

Edited by Ferret-Simpson
Link to comment
Share on other sites

This is what I call QUICK-AND-DIRTY software! It works, and has NO features! I don't have the time to go much beyond the 80/20 rule...

 

Now, wireless needs to get solved! Using my Fujitsu through my bluetooth phone just doesn't seem as snappy as wifi! :D

 

Glad you got your tablet working, these Fuji's are nice machines. I have the dual battery pack (takes the place of the DVD drive) and get around 6-7 hours of use per charge!

Link to comment
Share on other sites

From the way that our problem presents itself a plist edit is unlikely to cure it.

 

I think we may have to modify the driver itself.

 

If you get xcode 2.4.1 from Apple.com, the Driver source code from opensource.apple.com or whatever it is, then you should be able to see the problem. I started a thread for it in drivers, and I'm looking into it, but I can't think straight at the moment so nothing is presenting itself.

Link to comment
Share on other sites

Ok, Rexpresso and Khashoggi: You've disappeared, get back here.

 

Anyway: Fixed from default install:

ACPI,

Partial Audio,

OpenGL,

QE,

CI,

Penabled,

Network,

10.4.9 Userland,

 

Current projects:

Sitting on ass till better people than me (Semthex and Netkas) release a 8.9.1 kernel that works on the T421X.

Sitting on ass praying for Apple to release the source code for 8.9.1 so I can modify their PCI driver.

Working on older 8.8.1 code to see if I can get PCI working.

Researching HDA modem support.

Researching Fingerprint scanners for mac and their accompanying software.

Researching PCI SCSI SDHC.

Exeter PHY1110 Extended Report.

 

Still to start:

My own patching of AppleHDA to support more than just sound out.

Driver for Fujitsu PCI Button Panel.

Monitor Driver for Fujtsu Display to support Rotation.

Modification to PS2 Keyboard code to support all keys on notebook.

802.11N research.

Autorotate Sensor.

 

Phew, now that I write it down, it's a fair old list.

Link to comment
Share on other sites

 Share

×
×
  • Create New...