Thanks for reaching out!
I believe there is no mistake in what you are doing. I believe the answer to what is happening can be found on mraa's note on Joule's UART (which can be found in: https://github.com/intel-iot-devkit/mraa/blob/master/docs/grossetete.md):
“…Some pins are labelled as UARTs but are not configured in BIOS as UART so only available UART is on the FTDI header. Disable the getty on ttyS2 and use mraa's uart raw mode to initialise on ttyS2. The Jumper J8 can be used to switch between using the FTDI 6 pin header and the micro USB output…”
So, in order to use UART on Joule's current BIOS, the only option is to use the method mentioned above.
I hope this helps.
I am not sure what it means by "Disable the getty on ttyS2 and use mraa's uart raw mode to initialize on ttyS2." Is there any more explicit instructions you can give me, so that I can get a UART connection working properly. And if I do the method mentioned above will it only enable the FTDI header, and disable the micro USB output. Or will it also enable the UART GPIO pins on J12 and J13?
The term getty is short for "get tty", it refers to a Unix program running on a host computer that manages physical or virtual terminals (TTYs). You can find a more detailed explanation about getty in its Wikipedia entry.
"...Disable the getty on ttyS2 and use mraa's uart raw mode to initialize on ttyS2..."
So, what the quote above means is that you have to disable the console output in the micro USB port and then use mraa's raw mode method to use the micro USB port as the UART port. If you'd like to learn more about mraa's UART capabilities, I'd suggest you to read the API's documentation (http://iotdk.intel.com/docs/master/mraa/uart_8h.html#a7a1f634571a8851a3c89ff1c1599a5f6)
This means that right now, the only available UART port is on the micro USB port (what you are referring as the FTDI header). Due to the same reason, it is not possible to use the UART GPIO pins on J12 and J13.
Let me know if you need anything else.