Symbol's New WT4070/WT4090

Recently I’ve been doing quite a bit of work with Symbol’s new wearable terminal, the WT4070 and the WT4090, the long awaited upgrade to Symbol’s original DOS wearable terminal the WSS1060. For those unfamiliar with these terminals, these are wearable terminals typically used by warehouse and distribution center workers such as UPS, FedEx, etc. The WT4070 is the currently shipping version that support 802.11 b/g, and the WT4090 will support 802.11 a/b/g. It is actually the same unit with software changes to handle some regulatory hurdles with the radio.

For the last few months, I’ve been working on migrating the SVTP terminal emulator I wrote at Symbol, from the old DOS terminal to Windows CE (SVTPCE) for one of our larger customers. Symbol does ship the WT4090 with a license for another terminal emulator, but our customer preferred having a version that was drop in compatible with their existing terminals, which used the original SVTP, and could be customized to meet their exact requirements.

ARD_SVTPCESince I’ve been working with this new terminal, I thought I’d give a short review of the new WT4090 terminal and some tricks for working with this terminal.

Overall the WT4090 is a great terminal, and is a long awaited addition to the Symbol product line. It’s lightweight at only 12.6 oz. and has a very nice display and keyboard layout. The WT4090 will be available in two keyboard layouts, a “2-tap” keyboard that functions like the legacy WSS-1060 did, and a “3-tap” keyboard that operates more like a cell phone keyboard.

However, the biggest feature is that you now have a full Windows CE 5.0 operating system strapped to your wrist or belt which opens up a huge number of possible applications. Initially I see this product as a technology refresh for the current WSS1060 users who will mostly use it for warehouse and distribution centers, but down the road this could easily be used for many other types of field force applications where it would be helpful to not need to carry the terminal around. And with the belt option and voice capabilities the options expand even more.

The WT4090 also comes with two scanner options, the RS-309 Scanner and the RS-409. The RS-309 scanner is very large and bulky for a wearable scanner and I wouldn’t recommend it, but the RS-409 is a very nice device that compares favorably to the older RS-1 and SRS-1. Also, the scanner can be connected on either side of the terminal to allow for either left or right-handed users.

Display (not Touchscreen)WT400 w/ RS-309
The display is a nice 320 x 240 landscape pixel addressable QVGA. It is sufficiently bright for working indoors, but would be difficult to use in an outdoor environment. Overall a pretty nice display.

One of the first things that I noticed was, like the MC1000, the WT4090 does not have a touch screen!!! When asked, Symbol told me that this was a design decision to help improve the terminal’s ruggedness in the wearable environment. Since the terminal is meant to be worn on the wrist or belt, they felt that having a touch screen would reduce the ruggedness of the device and receive stray mouse events.

However, I find that the lack of a touchscreen on a Windows operating system is difficult to work with. After a while I was able to navigate fairly well with the keyboard, but there are some functions that I was never able to access. Also, its hard to get past the habit of trying to push the buttons on the screen when looking at a windows environment. In a production environment this is probably ok since the end users will not need to navigate the Windows CE Shell, but as a developer or administrator it can be quite painful.

There are two ways to get around this “problem”. First, Symbol has provided USB keyboard and mouse drivers for their terminal which you can use to connect directly to the WT4090 (through the cradle). However, it requires an odd cable, a Mini USB A to USB A Female connector, which is apparently commercially available but not at any of the normal electronics stores (Radio Shack, CompUSA, Best Buy, …).

The second option, is to run the Microsoft ActiveSync Remote Display program to connect to the device over a regular ActiveSync connection. This is the choice I took, since it didn’t require finding special cables, and as a developer I needed to use the USB connection to debug the application. See my article on ActiveSync Remote Display for CE 5.0.

One more consideration when developing applications for the WT4090 is the memory configuration. The device has 128MB of RAM, and another 64 MB of flash available in the /platform and /application directories that Symbol uses for installing applications.

The WT4090 does not provide any slots for an external memory card. In general this is not a problem since the terminal is targeted for a warehouse environment which is continuously connected, but will prevent this terminal from being used in other field force applications.

New Bluetooth Stack
This terminal uses the StoneStreet OneBlueTooth Stack which Symbol is now also using on the MC9094. While in theory switching between the various BlueTooth implementations shouldn’t be a problem, it is when they implement different programming APIs. So for us this means migrating our BlueTooth implementation from using the Microsoft Socket interface to the API provided by Symbol on devzone.

Also note that Symbol is not providing the BTExplorer GUI on this terminal so all BlueTooth access must be done using the software APIs.

Software Development
Development for this terminal is essentially the same as any of the other Symbol handheld terminals. Since it is a Windows CE 5.0 device it is best to do your development in Visual Studio 2005 to be able to deploy your applications.

Symbol provides the folowing set of SMDKs for wearable development (available in devzone):

27 thoughts on “Symbol's New WT4070/WT4090

  1. Do you have the list of keystrokes to navigate on the WT4070? For example, how do you key in a semicolon (to enter the time, for example)? Or how do you activate the back button on the browser?

    Also, I’m worried about how to sync the time on the wearable with the time on our UNIX server. Is a utility in CE to handle this? Are there commercially available tools? Recommendations?

    Thanks –cat

  2. Cat,
    The keystrokes are all in the wearable user guide. It has all of the settings layed out:
    For both versions, the semicolor for both terminals is Blue-Orange-8.
    Also for IEME, the back button is Alt-Left Arrow (Blue-Alt-Blue-Left) and forward is Alt-Right Arrow (Blue-Alt-Blue-Right), same as on the desktop.
    As for synchronizing with the time server, I’m not aware of an NTP client for CE. We have typically handled that either with our communication manager, or through an application request to the server.

  3. Very cool. I found the section you referenced.

    Here’s your next challenge:

    In my application I need to lock down the windows desktop (hide the task bar and disable the short cut keys that would allow the user to do anything outside my program). I also need my program to start up whenever they cold or warm boot.

    I suspect some of that, like the startup, is handled in the registry. But is the other reg or code? and if code, will you point me in the right direction?


  4. Ok, the easy one first, starting a program on warm or cold boot. First, take a look at my post on Symbol startups ( Alternately, there is some similar ways using straight Microsoft calls that are very similar. We also sell a utility that handles application startup, including installing and updating programs.

    Application on the other hand is much more challenging. The “simple” solution is to use something like Symbol’s Appcenter ( which keeps “unauthorized” programs from running. It’s actually written by Odyssey Software, and is now part of the Athena product ( I haven’t tried it on a WT4090, but it says it runs on CE5.0 so there is a decent chance, and it’s free.

    If that doesn’t work, you’ll have to provide the lockdown the application in your own code. The basics are relatively easy and provide a 90% solution (much better on CE than WM). The first thing to do is resizing the forms, this can be done with either SHFullScreen ( or SystemParametersInfo (

    The other thing you’ll have to handle are all of the action keys that launch in to the various CE screens like the calendar and such. There is a call UnregisterFunc1 that can handle much of those, but sometimes even that isn’t enough since some end up hard-coded.

    On WM05 you may need to handle the extra windows like TaskBar, InputPanel and SipButton (on WM only). Here’s an article that handles some of that too (

    That should get you started. Good luck!!

  5. Hello,

    I am actually using a WT4090 device. My problem is that I need to display the cursor. Neither System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; nor the Symbol.Win32.WaitCursor = true; (found in the latest 1.5 smdk) seems to work. I need the cursor (hourglass and arrow icon) to allow the user know when the application is processing something and when the application is ready.

    Any workaround to this ?

    Thank you in advance.

  6. Hi. I have another major problem with this device. I need to get the wifi signal strengh, which seems to work fine with the followig code (just extracts):

    wlan = new Symbol.Fusion.WLAN.WLAN();

    adapter = wlan.Adapters[0];

    adapter.SignalQualityChanged += new Symbol.Fusion.WLAN.Adapter.SignalQualityHandler(wifiRadio_StatusNotify);

    With this code, each time the signal strenght is changed…the event SignalQualityChanged occurs..and the method wifiRadio_StatusNotify is called.

    The problem is when the device is switched off and then switch on again, or when the device goes to suspend/power saving mode and switched on again, then the program is crashed with the following error:

    GetWLANSignalStrength failed : Fusion API Operation Success

    at au.i()
    at v.i()
    at Symbol.Fusion.WLAN.Adapter.a()
    at Symbol.Fusion.WLAN.WLAN.g()
    at WorkItem.doWork()
    at System.Threading.Timer.ring()

    This is a run time exception being thrown by somewhere which I cant catch also. Any work around? or any reference material to deal with such problem? I think it’s because when switching the device back again, the radio turns off and then back on again (at least from the icon being displayed) but still I can’t find a solution to prevent the program from crashing.

    Any help please.


  7. Hello,

    Has anyone figured out how to work with the programmable keys (P1 & P2)? I would like to use them as shortcuts for common key board inputs.

  8. Chris,

    The P1 and P2 keys are just mapped to F12 and F13. So you can use them as you can any other function keys. The simplest is to catch the KeyDown event in your application, but you should be able to register them as hot keys and all the other windows stuff as well.


  9. Hello John,

    Do you have any work around to the problem I mentioned concerning the hour glass and the wifi signal strength?


  10. Ashvin,

    I don’t know the answer to the WaitCursor, but I don’t see it displayed on my terminal either.

    As for the Fusion driver issues, it is a bug in the Symbol/Motorola Fusion drivers. There is a Symbol SPR-13472 that you can get from their support to fix it. It’s just a replacement for the wcsapi.dll file.


  11. Hi John,
    I need to design screens(in uniface with Unix as back end) which is to be used in this scanner. How can I arrive at the maximum lines and characters that I can design for the screen so that it can be visible without any issues through the emulator.

  12. Hi John,
    I need to design screens(in uniface with Unix as back end) which is to be used in this scanner. How can I arrive at the maximum lines and characters that I can design for the screen so that it can be visible without any issues through the emulator. In the scanners like WSS1060 we used to have the lines * characters in the specification itself. For these gui scanners we need to find out those.


  13. Aby,

    The challenge here is that the WT40x0 is a bitmap device and not a character device like the WSS1060. So when characters are drawn to the screen they are drawn directly to a screen location using a font and different fonts have different characteristics.

    The first thing to worry about is whether you are using a fixed sized font or one that adjusts the spacing between letters to make the text “more appealing”. In your case, you would need to use a fixed sized font (such as Courier) so each column will line up like it did on the WSS1060. Next you can choose the font that fits your screen by dividing the font size into the screen size (320×240) on the WT40x0. This will give you the screen size in characters.

    Unfortunately, this still isn’t exactly precise and you will end up with partially displayed characters, or uneven layouts on the screen. In our SVTPCE product we have made this calculation, and then taken any “extra” characters and spaced them on the screen so it appears even. If you are writing your own application you’ll have to do the spacing yourself, or if your using someone else’s product you will need to check if they have a similar configuration.


  14. Hi

    I have Symbol WT4090 for tests, does anyone know if it possible to rotate the display by 90 degrees ?
    I have a text-mode application that is written for 320×240 resolution but not in landscape mode.


  15. Hi, I am doing a cold boot and the wearable is frozen. I have taken the battery out, tried to do cold boot and warm boot. Nothing is happening. Can you help?

  16. Please if you could let me know how to map function keys – f1,f2,f3,,,,,,,,,f10. Is there any other way to map these using a simple program or run a script.

    When I connect to my host, I am unable to press any funtion keys….wont work


  17. Pingback: Symbol’s New WT4070/WT4090 « Mobile Musings

  18. Hi John,
    please help me. Now I know, the P1 and P2 buttons means F12 and F13. We need to programming the P1 key button means F11. How to do that? We have WT4090 device. I tried to read the links above with this theme, but that links already out of work. 🙁

  19. Hi there,

    Is there any way off doing a factory reset on the WT4090

    is is possible to get a step by step instruction manual or guide?

    It would be most appreciated if anybody could help.


  20. I leave a comment whenever I appreciate a post on a site
    or if I have something to valuable to contribute to the discussion.

    Usually it’s triggered by the fire communicated in the article I browsed. And after this post SymbolÂ’s New WT4070/WT4090 « Mobile Musings. I was excited enough to drop a comment 😉 I do have a couple of questions for you if you do not mind. Could it be just me or do a few of the comments look like they are left by brain dead folks? 😛 And, if you are writing at additional places, I’d like to keep
    up with you. Could you list every one of all your communal
    sites like your twitter feed, Facebook page or linkedin profile?

  21. Hi
    I am developing an application for symbol WT4090 using c#. I need to display the wait cursor in my application. I tried all the available options to display the cursor like Cursor.Current=Cursors.WaitCursor and also used C++ API like LoadCursor() and SetCursor(), but nothing is working out to display the cursor.
    Thanks in advance.

  22. I have several WT4090’s that show Scanner API Failed ( Scan Enable )
    Err=A000000B when I try to enable the RS409 on them. Is there something I can do or do I have to send them in to get repaired?

  23. Hi

    I have problem with connection to WiFi AP using Certificates. Problem in fusion version. It is out of date and I need upgrate it to modern. Does someone has link or cab file for wersion 2.5.7 for this type of terminal

Leave a Reply

Your email address will not be published. Required fields are marked *