FEZ Panda Stuck in Bootloader

Hi guys,

I’m having a strange problem - my Fez Panda boots in Bootloader, even though the button isn’t pressed.

This happened after I intentionally booted into bootloader to delete the code on it - Every time since then its been going into bootloader.

I’ve checked the switch - There is 2.3V across it, and as I understand bootloader is active low - so why might it be doing this?

Probably you accidentally erased the firmware.

How could I have erased the firmware?
The only thing I have done was pressed D then Y in bootloader.

Is there a way of fixing it?

A normal update worked - Thanks.

I was panicking over here, got a national competition my project is entered into in a month, that I’m expecting to win. Would be a shame if my project was to stop working now :stuck_out_tongue:

Either way - How is it possible to delete the firmware?

Now I have the Port displaying as USBizi rather than USBizi Bootloader, which is nice, but I’m getting “Hardware error” when attempting to upload code…

“An error has occurred: please check your hardware.”

Debugger attached itself just fine, but deployment fails.

Transport is set to USB and device to USBizi_USBizi.

Edit: Just checked it on a second computer and it works there.

Time to have fun with reinstalling drivers. Are there any settings in Visual Studio that might cause this?

Adding a reference to the following code causes a “Error in hardware” to pop up when deploying. Without this referenced it works just fine. It worked before with this referenced, and no change to the code has been made, any clue why that might happen?

using System;
using Microsoft.SPOT;
using System.Text;
using GHIElectronics.NETMF.System;

namespace DaveDave
    public class Modem
        static public string ReadPacket(byte[] data, byte[] dataCrc)
            UInt16 crc = 0;
            char[] chars = new char[data.Length];

            for (int i = 0; i < data.Length; i++)
                crc = (UInt16)(_crc16CcitTable[(crc ^ data[i]) & 0xff] ^ (crc >> 8));
                chars[i] = Demodulate(data[i]);

            if (dataCrc[1] != (byte)(crc & 0xFF) || dataCrc[2] != (byte)((crc >> 8) & 0xFF))
                throw new ArgumentException("CRC Mismatch");

            return new String(chars);

        static public byte[] CreatePacket(string data)
            int preqNum = 12; //For 300 baud
            int packetSize = data.Length + preqNum + 13;
            int i = 0, z = 0, offset;
            byte[] packet = new byte[packetSize];
            char[] chars = data.ToCharArray();
            UInt16 crc = 0;

            for (; i < preqNum; i++)
                packet[i] = 0x55;

            packet[i++] = 0x00;
            packet[i++] = 0xAA;
            packet[i++] = 0xEC;
            packet[i++] = 0x73;
            packet[i++] = 0x37;
            packet[i++] = (byte)(data.Length);

            offset = i;

            for (; z < chars.Length; z++)
                switch (chars[z])
                    case '0':
                        packet[i] = 0xA6;
                    case '1':
                        packet[i] = 0x65;
                    case '2':
                        packet[i] = 0x59;
                    case '3':
                        packet[i] = 0x56;
                    case '4':
                        packet[i] = 0xCC;
                    case '5':
                        packet[i] = 0x4D;
                    case '6':
                        packet[i] = 0xD4;
                    case '7':
                        packet[i] = 0xCD;
                    case '8':
                        packet[i] = 0xCE;
                    case '9':
                        packet[i] = 0xDC;
                    case ',':
                        packet[i] = 0x9A;
                    case 'A':
                        packet[i] = 0xEC;
                    case 'B':
                        packet[i] = 0x33;
                    case 'C':
                        packet[i] = 0x73;
                    case 'D':
                        packet[i] = 0x3B;
                    case 'E':
                        packet[i] = 0x37;
                    case 'F':
                        packet[i] = 0xB3;
                    case '-':
                        packet[i] = 0x72;
                    case '.':
                        packet[i] = 0x6C;
                        packet[i] = 0x00;

                crc = (UInt16)(_crc16CcitTable[(crc ^ packet[i++]) & 0xff] ^ (crc >> 8));

            packet[i++] = 0x63;
            packet[i++] = (byte)(crc & 0xFF);
            packet[i++] = (byte)((crc >> 8) & 0xFF);
            packet[i++] = 0x00;
            packet[i++] = 0x00;
            packet[i++] = 0x00;

            return packet;

        private static UInt16[] _crc16CcitTable = 
                0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
                0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
                0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
                0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
                0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
                0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
                0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
                0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
                0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
                0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
                0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
                0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
                0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
                0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
                0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
                0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
                0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
                0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
                0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
                0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
                0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
                0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
                0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
                0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
                0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
                0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
                0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
                0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
                0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
                0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
                0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
                0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 

        static private char Demodulate(byte data)
            switch (data)
                case 0xA6:
                    return '0';
                case 0x65:
                    return '1';
                case 0x59:
                    return '2';
                case 0x56:
                    return '3';
                case 0xCC:
                    return '4';
                case 0x4D:
                    return '5';
                case 0xD4:
                    return '6';
                case 0xCD:
                    return '7';
                case 0xCE:
                    return '8';
                case 0xDC:
                    return '9';
                case 0xEC:
                    return 'A';
                case 0x33:
                    return 'B';
                case 0x73:
                    return 'C';
                case 0x3B:
                    return 'D';
                case 0x37:
                    return 'E';
                case 0xB3:
                    return 'F';
                case 0x72:
                    return '-';
                case 0x6C:
                    return '.';
                case 0x9A:
                    return ',';
                    return 'Z';

Right… copying the code over to a new project and building it there worked…

Hate when Visual Studio plays silly buggers.

That error also shows when the project is too big, or when you include BIG references on the USBizi, like Microsoft.SPOT.TinyCore…