Back docking connector

Support Article No. 23960
Latest updated: 1/8/2018

DESCRIPTION:

This document provides details on the back docking connector on the Nautiz X2. You'll need this information to build your own accessory or to communicate with the UART port from your app.

Pin assignment



Pin Description Pin Description
1 GND 7 NA
2 GPIO 8 UART2-TX
3 UART3-TX 9 UART2-RX
4 UART3-RX 10 VDD3V3-A
5 VDD3V3-B 11 GND
6 GPIO5 12 GPIO2

Please note that currently only UART3 and VDD3V3-B can be accessed and used by the Android system!

Accessing the UART-port

To actually access the UART from your app, you'll have to connect to /dev/ttyMT3 from your app. We recommend performing the connection setup using C and to use a JNI to enable the rest of your code to communicate with the port. You can take a look at the source code of the LF RFID backpack demo app for such an implementation. You can find the demo app in the "Dev" download on KB22882.

Important change with OS NX2V100R001C02B031

Starting with OS version NX2V100R001C02B031 and later, both VDD3V3 pins are disabled by default. This is done to improve battery life and to prevent the active pins from causing a short circuit when there is no accessory or cover installed.

This means that most software must be updated to enable the pin before communication with the accessory. This is also the case for apps using the LF RFID backpack (NX2-1030).

This is best performed in the JNI part of your code where you can use the function below.

enum {
    IOCTL_EXT_UART2_ENABLE = 0x20,  // 0x20 Enable UART2 Communication
    IOCTL_EXT_UART2_DISABLE = 0x21, // 0x21 Disable UART2 Communication
    IOCTL_EXT_UART2_PMU_ON = 0x22,  // 0x22 Enable VDD3V3-A to output DC 3.3V
    IOCTL_EXT_UART2_PMU_OFF = 0x23, // 0x23 Disable VDD3V3-A to output DC 3.3V
    IOCTL_EXT_UART3_ENABLE = 0x30,  // 0x30 Enable UART3 Communication
    IOCTL_EXT_UART3_DISABLE = 0x31, // 0x31 Disable UART3 Communication
    IOCTL_EXT_UART3_PMU_ON = 0x32,  // 0x32 Enable VDD3V3-B to output DC 3.3V
    IOCTL_EXT_UART3_PMU_OFF = 0x33, // 0x33 Disable VDD3V3-B to output DC 3.3V
};

int scandev_ioctl_set(int ctl_code, int arg_value) {
    int retVal = 0;
    int fd = -1;
    
    fd = open("/dev/scandev", O_RDONLY);
    if ( fd != -1 ) {
        retVal = ioctl(fd, ctl_code, arg_value);
        close(fd);
    } else {
        retVal = -errno;
        LOGE("Fail to open /dev/scandev, error %s.", strerror(errno));
    }
    return retVal;
}

To actual enable or disable the VDD3V3-B pin, use the calls below

// Enable serial port 3 VDD power output
scandev_ioctl_set(IOCTL_EXT_UART3_ENABLE, 1);
scandev_ioctl_set(IOCTL_EXT_UART3_PMU_ON, 1);

// Disable serial port 3 VDD power output
scandev_ioctl_set(IOCTL_EXT_UART3_DISABLE, 0);
scandev_ioctl_set(IOCTL_EXT_UART3_PMU_OFF, 0);