# Missing GPIO export R15,R14.1.1

**URL:** <https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058>\
**Category:** Legato Application Framework\
**Created:** [January 9, 2022, 5:20pm UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058 "2022-01-09T17:20:25Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 9, 2022, 5:20pm UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/1 "2022-01-09T17:20:25Z")

</div>

Hello

im using using FX30S wp77xx module with R11 + Legato 18.09.2 and we are migrating to R14.1.1 due to the recent sierra comunication about the new memory module which will not be supported by old firmwares.

Moved from devstudio to vscode+leaf dev env

Using leaf package swi-wp77\_5.0.2

I have built the system with no errors , used swicwe to build a complete spk including linux+modem+legato and then flashed it onto the device.

The flash was successfull but for some reason one application using the GPIO to power the usr led has trouble binding the the gpioService.

After some debug , doing the command “sdir list” from ssh connection  
i found out that the required platform service export for the GPIO pins were missing.

thinking it was a firmware build problem, i downloaded the full r14.1.1 release from sierra site and flashed the modem

doing sdir list now shows the pins 47 and 48 which are the usr led pins.

After this test i’ve rebuilt the my firmware again and flashed it onto the modem to see if maybe it was just a random case.

Still, with my build the GPIO pins 47 and 48 are not exported.

going deeper, checking the /sys/class/gpio directory on my firmware i see no gpioXX files  
while with the r14.1.1 full from sierra i can see the gpioXX files.

Im aware of the GPIO\_DESIGN\_V2 and also checked in /sys/class/gpio/v2 folder, same result, on my firmware there are no files named gpioXX while on the sierra one there are.

in the sierra firmware doing a cat on the mask and mask\_v2 file , which is used to determine if the pin is available or not under the folder /sys/class/gpio/gpiochip1 i get:  
mask: 0x000003ffffbfff77  
mask\_v2 : 77 ff bf ff ff 03 00 00 00 00

the same result is given for my firmware

doing gpioSysfs\_IsPinAvailable function my self with pen and paper i see that the pin 47 and 48 are under the “03” which should not made them available even in the sierra firmware.

because the result whill always be false when doing “check & (1 \<\< bitInMask));”  
all the pins will be available if all the hex codes are “f”

here the complete function code

bool gpioSysfs\_IsPinAvailable  
(  
int pinNum ///\< [IN] GPIO object reference  
)  
{  
char path[64];  
char result[33];  
le\_result\_t leResult;  
uint8\_t check;  
uint32\_t index;  
uint32\_t bitInMask;

```
if ((pinNum < MIN_PIN_NUMBER) || (pinNum > MAX_PIN_NUMBER))
{
    LE_WARN("Pin number %d is out of range", pinNum);
    return false;
}

snprintf(path, sizeof(path), "%s/gpiochip1/mask%s",
         SYSFS_GPIO_PATH, (GpioDesign == SYSFS_GPIO_DESIGN_V2 ? "_v2" : ""));
leResult = ReadSysGpioSignalAttr(path, sizeof(result), result);
if (leResult != LE_OK)
{
    return false;
}

LE_DEBUG("Mask read as: %s", result);

if (GpioDesign == SYSFS_GPIO_DESIGN_V2)
{
    bitInMask = (pinNum - 1) % 8;
    index = ((pinNum - 1) / 8) * 3 + (bitInMask < 4);
    bitInMask %= 4;
}
else
{
    // The mask is 64 bits long
    // The format of the string is 0xnnnnnnnnnnnnnnnn. Each "n" represents 4 pins, starting
    // with pin 1-4 on the far right. So we can calculate where to look based on the pin number
    // e.g. 1-4 = index 17, 5-8 = index 16 etc.
    index = 17 - (pinNum - 1) / 4;
    bitInMask = (pinNum - 1) % 4;
}

// Convert the mask to a number from a hex string
LE_DEBUG("Mask calculated for %d as bit %d at index %d", pinNum, bitInMask, index);

// Convert the entry in the mask from a hex character to a number
check = toupper(result[index]) - (isdigit(result[index]) ? '0' : 'A' - 10);

LE_DEBUG("About to compare %x and %x", check, (1 << bitInMask));
return (check & (1 << bitInMask));

```

}

i’ve rebuilt the firmware many times , but i am unable to make the pins 47 and 48 work and im out of ideas.

I moved also to the legato source doing leaf getsrc swi-legato and rebuilt the entire framework before building my system , but the problem still persist.

To build my spk file is use the linux and modem images downloaded by leaf.

i’ve also tried the r15 (which is present only on leaf and its still in beta) but the problem is the same , also i cant test r15 firmware built by sierra because there isn’t one on the sierra site.

Any suggestion? what am i missing when build my firmware? why does the sierra firmware works if the bit mask should not let the lagato function export the pins 47 and 48?

---

<div class="post-metadata">

**Author:** ![jyijyi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/jyijyi/32/822_2.png) [@jyijyi](https://forum.legato.io/u/jyijyi)\
**Post date:** [January 10, 2022, 1:33am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/2 "2022-01-10T01:33:29Z")

</div>

what did you see for  
AT+WIOCFG?

And what did you see for

ls /sys/class/gpio/

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 10, 2022, 6:11am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/3 "2022-01-10T06:11:21Z")

</div>

on my firmware built from legato src :

==============AT+WIOCFG?======================  
AT+WIOCFG?  
+WIOCFG: 2,16,0,0,1,0,0  
+WIOCFG: 4,3,0,0,1,0,0  
+WIOCFG: 6,16,0,0,1,0,0  
+WIOCFG: 7,16,0,0,1,0,0  
+WIOCFG: 8,4,1,0,1,0,0  
+WIOCFG: 13,16,0,0,1,0,0  
+WIOCFG: 21,16,0,0,1,0,0  
+WIOCFG: 22,16,0,0,1,0,0  
+WIOCFG: 23,4,1,1,0,0,0  
+WIOCFG: 24,16,0,0,1,0,0  
+WIOCFG: 25,16,0,0,1,0,0  
+WIOCFG: 28,16,0,0,1,0,0  
+WIOCFG: 29,16,0,0,1,0,0  
+WIOCFG: 30,16,0,0,1,0,0  
+WIOCFG: 31,16,0,0,1,0,0  
+WIOCFG: 32,16,0,0,1,0,0  
+WIOCFG: 33,16,0,0,1,0,0  
+WIOCFG: 35,16,0,0,1,0,0  
+WIOCFG: 42,16,0,0,1,0,0

# OK

# =================ls /sys/class/gpio================ root@fx30s:~# ls /sys/class/gpio export gpiochip1 gpiochip1018 gpiochip820 gpiochip884 gpiochip948 unexport gpiochip0 gpiochip1012 gpiochip200 gpiochip852 gpiochip916 gpiochip980 v2

# ================= ls /sys/class/gpio/v2============= root@fx30s:~# ls /sys/class/gpio/v2 alias\_define alias\_unexport gpiochip0 gpiochip200 gpiochip916 alias\_export aliases gpiochip1 gpiochip820 gpiochip948 alias\_map aliases\_exported gpiochip1012 gpiochip852 gpiochip980 alias\_undefine export gpiochip1018 gpiochip884 unexport

on FX30\_WP77xx\_full\_R14.1.1.002-generic-SWI9X06Y\_02.36.06.00.cwe firmware by sierra:

==============AT+WIOCFG?======================  
AT+WIOCFG?  
+WIOCFG: 2,16,0,0,1,0,0  
+WIOCFG: 4,3,0,0,1,0,0  
+WIOCFG: 6,16,0,0,1,0,0  
+WIOCFG: 7,16,0,0,1,0,0  
+WIOCFG: 8,4,1,0,1,0,0  
+WIOCFG: 13,16,0,0,1,0,0  
+WIOCFG: 21,16,0,0,1,0,0  
+WIOCFG: 22,16,0,0,1,0,0  
+WIOCFG: 23,4,1,1,0,0,0  
+WIOCFG: 24,16,0,0,1,0,0  
+WIOCFG: 25,16,0,0,1,0,0  
+WIOCFG: 28,16,0,0,1,0,0  
+WIOCFG: 29,16,0,0,1,0,0  
+WIOCFG: 30,16,0,0,1,0,0  
+WIOCFG: 31,16,0,0,1,0,0  
+WIOCFG: 32,16,0,0,1,0,0  
+WIOCFG: 33,16,0,0,1,0,0  
+WIOCFG: 35,16,0,0,1,0,0  
+WIOCFG: 42,16,0,0,1,0,0

# OK

# =================ls /sys/class/gpio================ root@fx30s:~# ls /sys/class/gpio export gpio7 gpioFX30S-POWER\_LED\_GRN gpio2 gpioFX30-DIGITAL\_INPUT1\_N gpioFX30S-POWER\_LED\_MUX gpio21 gpioFX30-DIGITAL\_INPUT2\_N gpioFX30S-POWER\_LED\_RED\_N gpio22 gpioFX30-DIGITAL\_INPUT3\_N gpioFX30S-RS485\_IN\_EN\_N gpio24 gpioFX30-GPIO29 gpioFX30S-RS485\_OUT\_EN gpio25 gpioFX30-HUB\_ENABLE gpioFX30S-RS485\_POL\_N gpio29 gpioFX30-IOT\_DETECT gpioFX30S-SIGNAL\_LED\_GRN gpio32 gpioFX30-ON\_OFF\_MON\_N gpioFX30S-SIGNAL\_LED\_RED gpio36 gpioFX30-PB\_INPUT gpioFX30S-ULPM\_WAKE1\_36 gpio38 gpioFX30-ULPM\_WAKE1\_36 gpioFX30S-ULPM\_WAKE1\_38 gpio43 gpioFX30-ULPM\_WAKE1\_38 gpioFX30S-USER\_LED\_GRN gpio44 gpioFX30S-DIGITAL\_INPUT1\_N gpioFX30S-USER\_LED\_RED gpio45 gpioFX30S-DIGITAL\_INPUT2\_N gpiochip0 gpio46 gpioFX30S-DIGITAL\_INPUT3\_N gpiochip1 gpio47 gpioFX30S-DIGITAL\_OUTPUT3 gpiochip1012 gpio48 gpioFX30S-GPIO29 gpiochip1018 gpio49 gpioFX30S-GPS\_BIAS\_EN gpiochip200 gpio50 gpioFX30S-HUB\_ENABLE gpiochip796 gpio51 gpioFX30S-IOT\_DETECT gpiochip828 gpio52 gpioFX30S-IO\_PULLUP\_EN1 gpiochip860 gpio53 gpioFX30S-IO\_PULLUP\_EN2 gpiochip892 gpio54 gpioFX30S-IO\_PULLUP\_EN3 gpiochip924 gpio56 gpioFX30S-NETWORK\_LED\_GRN gpiochip956 gpio57 gpioFX30S-NETWORK\_LED\_RED gpiochip988 gpio58 gpioFX30S-ON\_OFF\_MON\_N unexport gpio60 gpioFX30S-PB\_INPUT v2 gpio61 gpioFX30S-POWER\_HOLD

# ================= ls /sys/class/gpio/v2============= root@fx30s:~# ls /sys/class/gpio/v2 root@fx30s:~# ls /sys/class/gpio/v2 alias\_define gpio1003 gpio51 gpio994 gpiochip200 alias\_export gpio1005 gpio77 gpio995 gpiochip796 alias\_map gpio1006 gpio8 gpio996 gpiochip828 alias\_undefine gpio1007 gpio9 gpio997 gpiochip860 alias\_unexport gpio11 gpio988 gpio998 gpiochip892 aliases gpio16 gpio989 gpio999 gpiochip924 aliases\_exported gpio200 gpio990 gpiochip0 gpiochip956 export gpio202 gpio991 gpiochip1 gpiochip988 gpio1001 gpio38 gpio992 gpiochip1012 unexport gpio1002 gpio46 gpio993 gpiochip1018

this is what i see from the 2 firmware flashed onto the device

---

<div class="post-metadata">

**Author:** ![jyijyi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/jyijyi/32/822_2.png) [@jyijyi](https://forum.legato.io/u/jyijyi)\
**Post date:** [January 10, 2022, 6:29am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/4 "2022-01-10T06:29:07Z")

</div>

you should download this one: swi-fx30-catm\_3.0.0

> **[Swi-fx30-catm\_3.0.0 build error in swi-linux](https://forum.sierrawireless.com/t/swi-fx30-catm-3-0-0-build-error-in-swi-linux/25090)**
>
> I am building the Fx30-CatM R14 (Linux part) release swi-fx30-catm\_3.0.0 without any modifications. I have retrieved the Linux sources with leaf, running the following command (on Ubuntu 18.04): $\> leaf setup fx30-catm -p swi-fx30-catm\_3.0.0...

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 10, 2022, 6:42am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/5 "2022-01-10T06:42:14Z")

</div>

Ok, im gonna give it a try but may i ask why? whats the difference between “SDK for WP77” packages and “SDK for FX30-CATM” i cant understand?

---

<div class="post-metadata">

**Author:** ![jyijyi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/jyijyi/32/822_2.png) [@jyijyi](https://forum.legato.io/u/jyijyi)\
**Post date:** [January 10, 2022, 6:43am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/6 "2022-01-10T06:43:47Z")

</div>

They use different source code.  
So for FX30, you should use the FX30 yocto source.

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 11, 2022, 8:34am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/7 "2022-01-11T08:34:14Z")

</div>

Thank you for you help , I’ve successfully built the framework with r15 and all the apps seems to work fine all the gpios are present.

Now i have some problem with the UART , changed the serial name in my app  
from /dev/ttyHSL0 to /dev/ttyMSM0, using le\_tty\_serial , instead of opening /dev/ttyMSM0 directly with c functions.

Here’s my code:

fd = le\_tty\_Open(“/dev/ttyMSM0”, O\_RDWR | O\_NOCTTY | O\_SYNC);  
le\_tty\_SetBaudRate(fd, LE\_TTY\_SPEED\_1152000);  
le\_tty\_SetFlowControl(fd,LE\_TTY\_FLOW\_CONTROL\_HARDWARE);  
le\_tty\_SetFraming(fd,‘N’,8,1);  
le\_tty\_SetRaw(fd,0,0);

defined in ADEF rw permissions,

set from ssh uartMode to linux application  
root@fx30s:~# uartMode set 1 app  
diag: Unable to get remote processor info. Continuing with just the local processor  
UART1 will be set to ‘app’ after the next reboot.

rebooted , but the serial is not reading anything from the device connected to it.

what does “diag: Unable to get remote processor info. Continuing with just the local processor” mean?

---

<div class="post-metadata">

**Author:** ![jyijyi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/jyijyi/32/822_2.png) [@jyijyi](https://forum.legato.io/u/jyijyi)\
**Post date:** [January 11, 2022, 8:57am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/8 "2022-01-11T08:57:51Z")

</div>

you need to first set

AT!MAPUART=17,1  
AT!RESET

And then in your application, you can use /dev/ttyHSL0 in the code and .cdef file.

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 11, 2022, 9:25am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/9 "2022-01-11T09:25:10Z")

</div>

> [@jyijyi](#):
>
> AT!MAPUART=17,1

what does this command do? do you have any doc with full list of AT commands? i cant find it anywhere

---

<div class="post-metadata">

**Author:** ![jyijyi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/jyijyi/32/822_2.png) [@jyijyi](https://forum.legato.io/u/jyijyi)\
**Post date:** [January 11, 2022, 9:26am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/10 "2022-01-11T09:26:46Z")

</div>

you can see the AT command user guide

[https://source.sierrawireless.com/resources/airprime/software/airprime\_wpx5xx\_wp76xx\_wp77xx\_at\_command\_reference/#sthash.5POHwpxQ.dpbs](https://source.sierrawireless.com/resources/airprime/software/airprime_wpx5xx_wp76xx_wp77xx_at_command_reference/#sthash.5POHwpxQ.dpbs)

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 11, 2022, 9:42am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/11 "2022-01-11T09:42:41Z")

</div>

thanks for the user manual.

The serial still does not work aftet the AT command , using HSL0 made the app not start , with MSM0 the app starts and its listining on serial.  
I menaged with tera term to send some random data to the serial and see them logged by the app , but if i change the flow controler to HARDWARE CTS/RTS i cant see anything, like its not reading anything

---

<div class="post-metadata">

**Author:** ![jyijyi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/jyijyi/32/822_2.png) [@jyijyi](https://forum.legato.io/u/jyijyi)\
**Post date:** [January 11, 2022, 9:44am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/12 "2022-01-11T09:44:03Z")

</div>

did you use flow control on tera tem?

using HSL0 made the app not start–\> you need to check the logread to know why

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 11, 2022, 9:49am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/13 "2022-01-11T09:49:14Z")

</div>

yes , here my conf  
 ![Immagine 2022-01-11 104543](https://us1.discourse-cdn.com/flex019/uploads/legato1/original/2X/c/c1b143fdef37a0b309fe2aa964f9cd6ded1e5606.png)

now im trying with the old code , configuring the serial by linux c functions instead of legato le\_tty api , and this is my configuration:

```auto
struct termios tty;
        if (tcgetattr (fd, &tty) != 0)
        {
                //LE_ERROR ("error %d from tcgetattr", errno);
        	LE_INFO("error on get attributes serial");
                return -1;
        }

        cfsetospeed (&tty, speed);
        cfsetispeed (&tty, speed);

        tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8; // 8-bit chars
        // disable IGNBRK for mismatched speed tests; otherwise receive break
        // as \000 chars
        tty.c_iflag &= ~IGNBRK; // disable break processing
        tty.c_lflag = 0; // no signaling chars, no echo,
                                        // no canonical processing
        tty.c_oflag = 0; // no remapping, no delays
        tty.c_cc[VMIN] = 0; // read doesn't block
        tty.c_cc[VTIME] = 1; // 0.5 seconds read timeout

        tty.c_iflag &= ~(IXON | IXOFF | IXANY); // shut off xon/xoff ctrl

        tty.c_cflag |= (CLOCAL | CREAD);// ignore modem controls,
                                        // enable reading
        tty.c_cflag &= ~(PARENB | PARODD); // shut off parity
        tty.c_cflag |= parity;
        tty.c_cflag &= ~CSTOPB;
        tty.c_cflag |= CRTSCTS;

        if (tcsetattr (fd, TCSANOW, &tty) != 0)
        {
                //error_message ("error %d from tcsetattr", errno);
        	LE_INFO("error on setting attributes serial");
                return -1;
        }
        return 0;

```

```auto
void set_blocking (int fd, int should_block)
{
        struct termios tty;
        memset (&tty, 0, sizeof tty);
        if (tcgetattr (fd, &tty) != 0)
        {
                //error_message ("error %d from tggetattr", errno);
        	LE_INFO("error get attributes blocking");
                return;
        }

        tty.c_cc[VMIN] = should_block ? 1 : 0;
        tty.c_cc[VTIME] = 1; // 0.5 seconds read timeout

        if (tcsetattr (fd, TCSANOW, &tty) != 0){
                //error_message ("error %d setting term attributes", errno);

        	LE_INFO("error set attributes blocking");
        }
}

```

```auto

LE_INFO("----- INIT SERIAL COM -----");
    fd = open("/dev/ttyMSM0", O_RDWR | O_NOCTTY | O_SYNC);
    if (fd == -1)
    {
     
    	LE_ERROR("open_port: Unable to open /dev/ttyMSM0 - ");
    }
    else{
    	set_interface_attribs (fd, B115200, 0);
    	set_blocking (fd, 0); // set no blocking

```

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 11, 2022, 9:51am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/14 "2022-01-11T09:51:45Z")

</div>

log read says

There was an error. Application ‘vei\_master\_app’ could not be started.  
Check the system log for error messages.

I remember you that i am using R15 , which in the linux 4.14 kernel migration doc says that

> UART tty console.  
> /dev/ttyHSLn in Kernel3.18 is renamed to /dev/ttyMSMn in Kernel4.14.  
> /dev/ttyHSLn hardcoding in the code, if any, needs to be replaced with /dev/ttyMSMn.  
> Example:
> 
> components/portService/portDaemon/ConfigurationFile.json
> 
> /dev/ttyMSM0 corresponds to UART1 and /dev/ttyMSM1 corresponds to UART2.

---

<div class="post-metadata">

**Author:** ![jyijyi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/jyijyi/32/822_2.png) [@jyijyi](https://forum.legato.io/u/jyijyi)\
**Post date:** [January 11, 2022, 11:22am UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/15 "2022-01-11T11:22:51Z")

</div>

You can use my code in FX30 FW R14.1 after setting  
AT!MAPUART=15,1  
AT!RESET

[UART\_Test1.rar](https://forum.legato.io/uploads/short-url/77A7ugyVSZuIHXkFgg4u1w3KkgH.rar) (3.0 KB)

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 11, 2022, 12:03pm UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/16 "2022-01-11T12:03:21Z")

</div>

I’ve just compiled a new firmware on r14.1.1 and with my code the serial is working  
I guess that in the R15 release there are some major differences in the UART management ?  
do you have any info about?

---

<div class="post-metadata">

**Author:** ![gianpaolo](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/gianpaolo/32/1482_2.png) [@gianpaolo](https://forum.legato.io/u/gianpaolo)\
**Post date:** [January 11, 2022, 12:03pm UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/17 "2022-01-11T12:03:38Z")

</div>

also thanks for the sample code

---

<div class="post-metadata">

**Author:** ![jyijyi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.legato.io/jyijyi/32/822_2.png) [@jyijyi](https://forum.legato.io/u/jyijyi)\
**Post date:** [January 11, 2022, 12:27pm UTC](https://forum.legato.io/t/missing-gpio-export-r15-r14-1-1/6058/18 "2022-01-11T12:27:20Z")

</div>

Maybe there is still bug in your r15 as it is not yet official release

[https://source.sierrawireless.com/resources/airlink/software\_downloads/fx30-firmware/fx30-firmware-catm/](https://source.sierrawireless.com/resources/airlink/software_downloads/fx30-firmware/fx30-firmware-catm/)
