CANxtra support thread

Need a powerful NETMF device at below cost? We have a few CANxtra on clearance, grab yours while they last. It’s priced low but CANxtra is based on the Embedded Master module running EMX firmware. With a lot of RAM and flash, a little display for graphics and full blown TCP/IP support with SSL, you can’t afford to miss out!

We will not offer these in the future. All design files including EAGLE are already online.

Please keep using this thread for support on CANxta specific hardware questions. If you are asking general questions on EMX firmware the please make new thread.

Here is it:

OK So my Canxtra just arrived , And I can at least get the Hello World console running. How do I talk to the display? The example for the non-tft display in the support page doesnt work…


This is a non-tft display but GHI has built in drivers specifically for CANxtra. Just use it the same way you would use the display on the emulator.

Bitmap LCD= new Bitmap(126x64);

Thanks for the quick reply. I am able to get the example working on the emulator, it just doesn’t work on the CANxtra box. Here is my code :

using System.Threading;
using Microsoft.SPOT;
using System;
using Microsoft.SPOT.Presentation;
using Microsoft.SPOT.Presentation.Media;

namespace MFConsoleApplication1
public class Program
public static void Main()
// Bitmap LCD = new Bitmap(124, 64);
Bitmap LCD = new Bitmap(SystemMetrics.ScreenWidth,SystemMetrics.ScreenHeight);

        Debug.Print("LCD size = " + SystemMetrics.ScreenWidth + " , " + SystemMetrics.ScreenHeight);
        //clears the memory and not the display
        //draw on memory
        LCD.DrawLine(Colors.Green, 1, 10, 10, 40, 40);
        //transfer the bitmap memory to the actual display
        //sleep a bit


When I run on the emulator, the debug print shows a screensize of 320,240, on the CANxtra box it is 0,0. I tried specifying 128x64 but that didnt work either.

It is interesting that the CANxtra box boots up with some diagnostics :
Debug: USB1
LCD: 0,0 <--------------------- interesting?
MAC: blah
Managed Heap: blah again
Custom heap size: blah

are my references/usings wrong?

Please update your firmware to the new release. It has a fix for CANxtra graphics. You must use the correct dimensions for the LCD too 128x64

There are no clear instructions for the CANxtra box, on how to update it. It is not a FEZ (Ive successfully updated firmware on my domino and a couple of pandas) - The instructions to update EMX firmware tell you to press some buttons, there are no buttons on the canxtra box as shipped - do I have to wire some up?

Yes good point. I quickly added this to the wiki. Please help in updating this page.

Thanks, that was very helpful! I successfully got the tinybooter + firmware (4.1.6 - which i think is latest) updated. Now the diagnostic reports LCD: 128,64, and the SystemMetrics.ScreenWidth is correct as well.

Unfortunately, whenever I LCD.Flush - I have a completely black screen. Ive tried various colors for my lines… no help. Any ideas? Code works on the emulator (using the SystemMetrics for the bitmap initialization) and now at least the device is aware it has a 128x64 display.

Doh. Using Color.White instead of Colors.Green (or Colors.White) seems to work.
Thanks for the great support, I’m off to the races.

The part number for the LCD on the schematic is OS096064. That is for a 96x64 display.

Should it be OS128064?

The display is 128x64 4-bit. We do not have part number, it was discontinued by manufacture, which is part of the reason of discontinuing CANxtra.

Hi. I ordered a couple of CANxtra’s. I’m struggling to get the firmware updated. I’m connected on COM1, 115200 N81N. Should I see something in the debug / console window when the devices boot? I see nothing… and it is not responding to the % symbol as indicated in GHI Electronics – Where Hardware Meets Software

Any ideas?

Thank you.

No you won’t see anything.

You need to send % repeatedly and fast while the device is being powered. You may need help from another person to power CANxtra while you hit % quickly.

Thank you for the reply.

Is 1 Stop bit correct? Parity should be none? And we use the null modem cable supplied with the CANxtra?


Yes correct one stop bit

Thank you. I had to change computers and it started working. Off to the next step. Thanks again!

Hi. I’m trying to port my EMX code over to the CANxtra. Where do we find the proper documentation for CANxtra programming. I had lines such as:

public static OutputPort myOut1_33 = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.IO33, false);

in my code and although it compiled and worked on my EMX, I got a Visual Studio popup window alerting me that there was No FEZ detected.

Thank you.

The code is wrong to start with FEZ_Pin.Digital.IO33 is a FEZ pin. You should only use EMX pins. Remove any FEZ-named dll from your project completely. Use “…hadrware.emx” instead

The documentation (schematics/brochure) shows the pins available on the db25. Pick the right one and use it in your code.

Shades of yellow.

If anybody is interested, here is some code to get 7 shades of yellow.

        public static Microsoft.SPOT.Presentation.Media.Color GetColor(int Shade)
            //Limit Shade to values between 0 and 15
            Shade=Shade & 0xf;

            //Shift the shade into the correct place in the color value.
            return (Microsoft.SPOT.Presentation.Media.Color)(Shade << 19);

CANxtra_Broch_Pinouts.pdf states 16 bits per pixel. The Web page state 4 bits per pixel. Thus far i’m only getting 3 bits per pixel. But that is plenty… ;D

Edit: found the 4’th bit, now code has full 16( 16 with black included) shades.

Display is 4-bit, 16 color.