PICDEM board and Linux connection through serial
It appears that Ubuntu is getting bit7 set in all the characters it receives.

For example: Sending 'a' is 0x61 or 0b01100001 and it is receiving 0xE1 or 0b11100001.

In serial format, bit0 is sent first and bit7 is sent last, so this can happen if your terminal settings are mismatched. For example if the PIC is sending 7 data bits, no parity, 1 stop bit but Ubuntu is expecting 8 data bits, no parity, 1 stop, then Ubuntu will clock in one extra bit and bit7 will always be high.

So make sure your USB-to-serial/terminal settings match the PIC UART settings exactly. Hope that helps. -Vince