# Bad State on UART2

**URL:** <https://forum.sierrawireless.com/t/bad-state-on-uart2/2095>\
**Category:** General\
**Created:** [April 17, 2008, 8:47am UTC](https://forum.sierrawireless.com/t/bad-state-on-uart2/2095 "2008-04-17T08:47:02Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![gberberoglu](https://avatars.discourse-cdn.com/v4/letter/g/dfb087/32.png) [@gberberoglu](https://forum.sierrawireless.com/u/gberberoglu)\
**Post date:** [April 17, 2008, 8:47am UTC](https://forum.sierrawireless.com/t/bad-state-on-uart2/2095/1 "2008-04-17T08:47:02Z")

</div>

Hi,

I’m working on serial communication on UART2. I can not subscribe anymore on port:

```auto
uart2Handle = adl_fcmSubscribe ( ADL_AT_UART2, iec_UartControlHandler, iec_UartDataHandler);
    if( uart2Handle >= 0 )
        TRACE ((1, "adl_fcmSubscribe() : Subscribed!"));
    else
        TRACE ((1, "adl_fcmSubscribe() : fail! %d", uart2Handle));
```

neither hardware nor software have changed, today suddenly it stoped working.

trace output:

```auto
"adl_fcmSubscribe() : fail! -8"
```

I think there is a hardware failure on Q268x Development Kit 😐

any ideas ?

---

<div class="post-metadata">

**Author:** ![fft](https://avatars.discourse-cdn.com/v4/letter/f/e8c25b/32.png) [@fft](https://forum.sierrawireless.com/u/fft)\
**Post date:** [April 17, 2008, 9:07am UTC](https://forum.sierrawireless.com/t/bad-state-on-uart2/2095/2 "2008-04-17T09:07:40Z")

</div>

By default UART2 isn’t enabled. Have you done an “AT+WMFM=0,1,2” to switch it on?

---

<div class="post-metadata">

**Author:** ![gberberoglu](https://avatars.discourse-cdn.com/v4/letter/g/dfb087/32.png) [@gberberoglu](https://forum.sierrawireless.com/u/gberberoglu)\
**Post date:** [April 17, 2008, 9:38am UTC](https://forum.sierrawireless.com/t/bad-state-on-uart2/2095/3 "2008-04-17T09:38:29Z")

</div>

hi fft,

yes, first I enable it before using… here is the full code:

```auto
adl_atCmdCreate("AT+WMFM=0,0,2", ADL_AT_PORT_TYPE( ADL_AT_UART2, FALSE ), iec_AtCmdCreate_Handler, NULL, NULL);
    adl_atCmdCreate("AT+IPR=9600", ADL_AT_PORT_TYPE( ADL_AT_UART2, FALSE ), iec_AtCmdCreate_Handler, NULL, NULL);
    adl_atCmdCreate("AT+ICF=5,1", ADL_AT_PORT_TYPE( ADL_AT_UART2, FALSE ), iec_AtCmdCreate_Handler, NULL, NULL); //at.pdf p: 233,234
    adl_atCmdCreate("AT+IFC=0,0", ADL_AT_PORT_TYPE( ADL_AT_UART2, FALSE ), iec_AtCmdCreate_Handler, NULL, NULL);
    adl_atCmdCreate("AT+WMFM=0,1,2", ADL_AT_PORT_TYPE( ADL_AT_UART2, FALSE ), iec_AtCmdCreate_Handler, NULL, NULL);

    uart2Handle = adl_fcmSubscribe ( ADL_AT_UART2, iec_UartControlHandler, iec_UartDataHandler);
    if( uart2Handle >= 0 )
        TRACE ((1, "adl_fcmSubscribe() : Subscribed!"));
    else
        TRACE ((1, "adl_fcmSubscribe() : fail! %d", uart2Handle));

    adl_tmrSubscribe ( FALSE, 150, ADL_TMR_TYPE_100MS, StateChecker_TimerHandler );
```

(that code was working fine until today)

---

<div class="post-metadata">

**Author:** ![leohen](https://avatars.discourse-cdn.com/v4/letter/l/a9adbd/32.png) [@leohen](https://forum.sierrawireless.com/u/leohen)\
**Post date:** [April 18, 2008, 10:59pm UTC](https://forum.sierrawireless.com/t/bad-state-on-uart2/2095/4 "2008-04-18T22:59:14Z")

</div>

Hi

I’m currently using Q24PL and I use both UARTS. I do this: first I change any parameters (like baud rate, ICF), after this I open it with:

```auto
adl_atCmdCreate("AT+WMFM=0,1,2",FALSE,fnBCN13A_UART2Handler,"*",NULL);
```

after this I subscribe

```auto
adl_fcmSubscribe(ADL_FCM_FLOW_V24_UART2,fnBCN13A_UART2CtrlHandler,fnBCN13A_UART2DataHandler);
```

I hope this helps.

Best Regards  
Leohen

---

<div class="post-metadata">

**Author:** ![tomalex](https://avatars.discourse-cdn.com/v4/letter/t/71e660/32.png) [@tomalex](https://forum.sierrawireless.com/u/tomalex)\
**Post date:** [April 18, 2008, 11:57pm UTC](https://forum.sierrawireless.com/t/bad-state-on-uart2/2095/5 "2008-04-18T23:57:18Z")

</div>

Hello,

Looking at your code, it seems to me you would like to do a lot of things together which shouldn’t be done together. Please note, when you call an AT command it is not effective immediately, they are just queued up to be processed later by the OS. Why do you close the UART2 and after it you open? You don’t have to close it for setting up the parameters. I think that just can cause trouble.

Anyway i think the nicest solution should look like this:

1. Check the UART parameters with AT commands like AT+IPR? on UART2 and so on…
2. If something has to be changed, change it with setup commansd
3. If something has been changed save it with AT&W command, so you don’t have to issue the setup parameters after a reboot
4. After you finished with the AT settings, handlers received OK , you can start with adl\_fcmSubscribe()…

Cheers,  
tom
