This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

New SW reference design for designs using ZNP - A portable SW framework for host microcontrollers

Other Parts Discussed in Thread: CC2530, CC2630, CC2538, CC2531, Z-STACK, MSP430WARE, CC2530EM, MSP430F5529, CC2592, AM3352

Hi,

I am pleased to announce that we just released on our website, as part of our library of reference designs (namely 'TI Designs"),  a complete SW framework for host systems using ZigBee as Network Processor.

For more information on this 'TI design', please visit http://www.ti.com/tool/TIDC-ZNP-HOST-SW3

We are very excited about this software release as we believe this is a SW deliverable that the whole community will benefit from, and hopefully contribute to its evolution.

The SW framework is distributed under BSD license and available under the TI git repository: https://git.ti.com/znp-host-framework/znp-host-framework

This design features the following items:

  • Flexibility across different TI ZigBee HW platforms (CC2530, CC2538, CC2630), running ZNP firmware
  • Portability Across different Host Hardware Platforms, makes it easy to add ZigBee as plug-in connectivity 
  • Linux and TI-RTOS porting. POSIX Standard Compliance allows easy porting to different OS. 
  • Additional example set for standard applications and Interactive Command Line interpreter enables fast prototyping and product design

Please take a look at the Design Guide, available at http://www.ti.com/lit/ug/tidu757/tidu757.pdf to get started with your development.

Thanks and enjoy!

TheDarkSide

  • Please note: while you can download the respective software directly from the TI Design webpage, downloading the software from the TI git repository is preferred, since it may contain a more recent version. You do not need to be a registered TI git user, if you only wish to download. Simply select 'Source Tree' and then 'Download master as tar.gz'.
  • Hi TheDarkSide,

    It is very useful framweork, I'm already trying it, thanks for your work.

    However, so far I have stranges in ZDO_NWK_ADDR_RSP. I've compiled cmdLine example, all seems fine until I tried get response on ZDO_NWK_ADDR_REQ. I use CC2531 USB dongle as ZNP (compiled from Z-Stack Home 1.2.1). Also I has external ED with MAC: 0x00124B0004DFF718


    Here is listing #1 how cmdLine work:

    ZDO_NWK_ADDR_REQ

    Command: ZDO_NWK_ADDR_REQ
    Enter IEEEAddress: (8B)
    00124b0004dff718
    Enter ReqType: (1B)
    0
    Enter StartIndex: (1B)
    0
    rpcSendFrame: Blocking on RPC sem
    rpcSendFrame: Sending RPC
    rpcTransportWrite : len = 15
    writing 8 bytes (offset = 0, remain = 15)
    writing 7 bytes (offset = 8, remain = 7)
    SOC OUT --> 15 Bytes: SOF:FE, Len:0A, CMD0:25, CMD1:00, Payload:18:F7:DF:04:00:4B:12:00:00:00, FCS:42
    rpcSendFrame: waiting for SRSP [05]
    rpcTransportRead: read 1 bytes
    rpcTransportRead: read 1 bytes
    rpcTransportRead: read 4 bytes
    SOC IN  <-- 6 Bytes: SOF:FE, Len:01, CMD0:65, CMD1:00, Payload:00, FCS:64
    rpcProcess: processing expected srsp [05]
    rpcProcess: writing 4 bytes SRSP to head of the queue
    rpcSendFrame: Receive SRSP
    rpcWaitMqClientMsg: timeout=50
    rpcWaitMqClientMsg: waiting on queue 50:1427452123:50000000
    rpcWaitMqClientMsg: processing MT[4]
    zdoProcess: processing CMD0:65, CMD1:0
    processSrsp: unsupported message
    rpcWaitMqClientMsg: timeout=1000
    rpcWaitMqClientMsg: waiting on queue 1000:1427452124:0
    rpcTransportRead: read 1 bytes
    rpcTransportRead: read 1 bytes
    rpcTransportRead: read 24 bytes
    SOC IN  <-- 26 Bytes: SOF:FE, Len:15, CMD0:45, CMD1:FF, Payload:00:00:00:00:80:00:00:00:00:00:18:F7:DF:04:00:4B:12:00:0E:1B:00, FCS:57
    rpcProcess: writing 24 bytes AREQ to tail of the que
    rpcWaitMqClientMsg: processing MT[24]
    zdoProcess: processing CMD0:45, CMD1:ff
    zdoProcess: MT_ZDO_MSG_CB_INCOMING
    mtZdoMsgCbIncomingCb
    SrcAddr: 0x0000
    WasBroadcast: 0x00
    ClusterID: 0x8000
    SecurityUse: 0x00
    SeqNum: 0x00
    MacDstAddr: 0x0000

    rpcWaitMqClientMsg: timeout=1000
    rpcWaitMqClientMsg: waiting on queue 1000:1427452124:0
    rpcWaitMqClientMsg: Timed out [-1] - Connection timed out

    Enter CMD

    first of all strange looks hihghlighted with red above CMD1:FF and MAC is 0, in incoming packet I see correct MAC see green above, seems somwhere is incorrect parsing?

  • Hi Vasiliy,

    This is actually the right behavior but it is missing the parsing of the last section of the message. The reason why you are seeing the CMD1: FF is because the coordinator is the parent of the ED and the coordinator is the one responding in behalf of its child. If you see the ClusterID is 0x8000 which is the clusterID of the NWK_ADDRS_RSP. Also, you are seeing MacDstAddr = 0x0000 because the Coordinator is the one dealing with this request and this field is referring to the short address not the IEEE address.

    If you send the ZDO_NWK_ADDR_REQ to a router you should see a different behavior.

    I will make the necessary changes to the code to parse correctly the mtZdoMsgCbIncoming message and push the changes to the repository.

    Thanks for reporting this issue,
    Hector

  • Thanks a lot, Hector! And many thanks for framework!
  • Vasiliy,

    The repository has been updated, you can now get the latest version and give it a try.

    Hector
  • Hi TheDarkSide,

    any plan to have the framework already setup for MSP432 ?

    Thank you,
    Paolo
  • Hi Paolo,
    as mentioned the ZNP host framework released in this TI reference design runs on TI-RTOS, which supports MSP432 platform.
    So the migration to that and the Launchpad is pretty straightforward.
    Is the MSP432 in your application space using TI-RTOS or plain MSP430ware?
    Thanks,
    TheDarkSide
  • The design guide is for the TIVA C launchpad, would the following also be compatible with the original Launchpad (MSP-EXP430G2)?

  • Oswaldo,

        The current examples will not run on MSP-EXP430G2, If it where possible to run TIRTOS on this launchpad then porting the example from the TIVA C Launchpad should be relatively easy. However as far as I can see the MSP430G2 family is not supported by TI RTOS, you could raise the question on the TI-RTOS forum (e2e.ti.com/.../tirtos) for confirmation.

    Currently we do not have any examples that run on MSPWare (i.e. with No OS), but we would like to hear if this is something people would be interested in.

    Regards, TC.

  • I am currently using CC2530EM (F256) devices, there seems to only be CC2538 .HEX files to flash program the device in the ...\znp-host-framework-znp-host-framework\bin folder.

    Is there a a similar already built .HEX file for the CC2530? If not, what is a possible solution to solve this issue?

    Thanks!

  • Hi Oswaldo,

    Yes there is, you can use the images provided in the Z-Stack installation in the following directory:

    C:\<Z-Stack Instalation folder>\Projects\zstack\ZAP\ZNP-HexFiles\CC2530ZNP-Pro-Secure_LinkKeyJoin.hex

    You can also build your own ZNP image using the ZNP project in Z-Stack.

    Hector

  • For people wanting to run the framework on an MCU with no OS, there is an early port of the framework to MSP430F5529 MSPWare. The framework has been modified so that the rpcProcess function can run in an ISR. Early access to this port is available on the mspware_5xx_6xx of git://git.ti.com/znp-host-framework/znp-host-framework.git, please note this this preliminary and only been unit tested.

    To use this the require HW is:
    MSP430EXP5529
    SmartRF06+CC2538

    The MSP430EXP5529 UART on JP16 must be blue wired to the SmartRF06 UART on P412. The "Enable UART over XDS100v3" jumper need to be removed.

    Clone the branch:
    git clone -b mspware_5xx_6xx git://git.ti.com/znp-host-framework/znp-host-framework.git

    Run the DataSendRcv example as a Coordinator on a Linux or TIRTOS host.

    Import the znp-host-framework/examples/dataEcho/build/mspware_5xx_6xx/ccs/ project into CCS v6, build, download and run.

    The dataEcho example will configure ZNP as an EndDevice and search all channels for the DataSendRcv Coord. Once it has join the network any messages sent from the DataSendRcv application are Echoed back by the dataEcho appliation running on the MSP430F5529.

    Early feedback on any issues or preferred MSP430 HW platforms for a no OS port are welcome.

    Regards,
    TC.
  • When running the dataSendRcv project, after it asks if I want to join a network and type y, it outputs an Network error message. Do you know possible solutions to get rid of the error to move on to to resetting ZNP? Currently using TM4C1294 with EM adapter boosterpack and CC2530. Thanks!
  • Hi Oswaldo,

    Does this happen with the other projects as well or only in dataSendRcv  project?

    Can you open dbgPrint.h and set PRINT_LEVEL to be PRINT_LEVEL_VERBOSE.

    After this, build the project again and share the log here so I can see what is exactly happening.

    Regards,
    Hector

  • Hi Hector,

    This issue does occur when running other projects like cmdLine. Here is the output of the log below. Thanks!

    rpcWaitMqClientMsg: timeout=10
    rpcWaitMqClientMsg: waiting on queue 10:0:10000000
    rpcWaitMqClientMsg: Timed out [-1] - No error
    flushed 0 message from msg queue
    rpcWaitMqClientMsg: timeout=50
    rpcWaitMqClientMsg: waiting on queue 50:0:50000000
    rpcWaitMqClientMsg: Timed out [-1] - No error
    rpcSendFrame: Blocking on RPC sem
    rpcSendFrame: Sending RPC
    SOC OUT --> 10 Bytes: SOF: X, Len: X, CMD0: X, CMD1: X, Payload: X Éý X(null) X(null) X Éý X Éý FCS: X
    rpcSendFrame: waiting for SRSP [01]
    rpcSendFrame: SRSP Error - CMD0: 0x X CMD1: 0x X

    NV Write Startup Option cmd sent[1]...
    network start failed
    rpcSendFrame: Blocking on RPC sem
    rpcSendFrame: Sending RPC
    SOC OUT --> 5 Bytes: SOF: X, Len: X, CMD0: X, CMD1: X, Payload: FCS: X
    rpcSendFrame: waiting for SRSP [01]
    rpcSendFrame: SRSP Error - CMD0: 0x X CMD1: 0x X
    rpcSendFrame: Blocking on RPC sem
    rpcSendFrame: Sending RPC
  • Hi all,

    Can you suggest me the method to monitor the ubuntu UART /dev/ttyACM0 data on PC? I want to trace the MT command format
    I run it successfully with CC2531 dongle on ubuntu PC platform via VMWare.
    Thanks.
  • You don't have to do that. MT command format is defined in Monitor and Test command API.pdf of Z-Stack document folder.
  • Oswaldo,

    The reason why this is happening is because the default CC2530 ZNP code is not using UART, you will have to modify the code on the CC2530 to use UART.

    You can do this by opening the CC2530 ZNP project on IAR, then open OnBoard.c file and modify the following code in the function

    void InitBoard( uint8 level )

    .

    #else
        //znpCfg1 = P2_0; //remove this line
        //znpCfg0 = P1_2; //remove this line
        // Tri-state the 2 CFG inputs after being read (see hal_board_cfg_xxx.h for CFG0.)
        //P1INP |= BV(2); //remove this line
        //P2INP |= BV(0); //remove this line
        
        znpCfg1 = ZNP_CFG1_UART; //add this line
        znpCfg0 = ZNP_CFG0_32K_XTAL; //add this line
        
    #endif

    Let me know if you have any questions,
    Hector

  • Hi Hector,

    Sorry for late response, had to get new IAR License. I have made the changes to the OnBoard.c file and when I run dataSendRcv I am still getting the same issue with "Network Issue" error after being asked to start/join network. Were you able to get the same project working with a CC2530 device? Thanks!

    Oswaldo

    rpcWaitMqClientMsg: timeout=10
    rpcWaitMqClientMsg: waiting on queue 10:0:10000000
    rpcWaitMqClientMsg: Timed out [-1] - No error
    flushed 0 message from msg queue
    rpcWaitMqClientMsg: timeout=50
    rpcWaitMqClientMsg: waiting on queue 50:0:50000000
    rpcWaitMqClientMsg: Timed out [-1] - No error
    rpcSendFrame: Blocking on RPC sem
    rpcSendFrame: Sending RPC
    SOC OUT --> 10 Bytes: SOF: X, Len: X, CMD0: X, CMD1: X, Payload: X Éý X(null) X(null) X Éý X Éý FCS: X
    rpcSendFrame: waiting for SRSP [01]
    rpcSendFrame: SRSP Error - CMD0: 0x X CMD1: 0x X

    NV Write Startup Option cmd sent[1]...
    network start failed
    rpcSendFrame: Blocking on RPC sem
    rpcSendFrame: Sending RPC
    SOC OUT --> 5 Bytes: SOF: X, Len: X, CMD0: X, CMD1: X, Payload: FCS: X
    rpcSendFrame: waiting for SRSP [01]
    rpcSendFrame: SRSP Error - CMD0: 0x X CMD1: 0x X
    rpcSendFrame: Blocking on RPC sem
    rpcSendFrame: Sending RPC

  • Oswaldo,

    I have tested this, and it works for me.

    Have you done the required modifications to the EM adapter boosterpack?

    If you haven't done them, please see the section Modifying the BoosterPack in the design guide .

    Also do the modifications based on the pictures (Figure 6 and Figure 7) and not the text since I believe steps "4" and "6" have a typo.

    Regards,

    Hector

  • Several Questions:

    1. What is the difference in terms of the usages and capabilities between this framework and Ti Z Stack. I am trying to figure what I should use.
    2. Based on the instructions and documents, "ZNP Host Framework" works with POSIX-compatible OS, which is most Linux distributions. I am trying to figure how to test this settings with a CC2538 Eval Module and a Linux system. On the document, it only says "connecting CC2538 Eval module to a Linux system", but it does not say how to connect from HW interface point of view. Is there any instruction or document about how to set up the connection in this scenario (not in the LauchPad scenario)?
    3. Does this framework only support using CC2592 with CC2538?

    Thanks,
    Chih-fan

  • 1&2. Since your host is Linux, I would suggest you to check www.ti.com/.../CC2531EM-IOT-HOME-GATEWAY-RD
    3. It supposes to work on both CC2530 and CC2538.
  • I love it.
    Not being a guru myself, does anyone know how to get arround the semaphore problem when trying to compile it on OS X/BSD I get the following errors.
    Gregorys-MacBook-Pro:osx gomond$ make
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx main.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../nwkTopology.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/rpc/rpc.c
    ../../../../framework/rpc/rpc.c:138:2: warning: 'sem_init' is deprecated [-Wdeprecated-declarations]
    sem_init(&rpcSem, 0, 1); // initialize mutex to 1 - binary semaphore
    ^
    /usr/include/sys/semaphore.h:55:5: note: 'sem_init' has been explicitly marked deprecated here
    int sem_init(sem_t *, int, unsigned int) __deprecated;
    ^
    ../../../../framework/rpc/rpc.c:139:2: warning: 'sem_init' is deprecated [-Wdeprecated-declarations]
    sem_init(&srspSem, 0, 0); // initialize mutex to 0 - binary semaphore
    ^
    /usr/include/sys/semaphore.h:55:5: note: 'sem_init' has been explicitly marked deprecated here
    int sem_init(sem_t *, int, unsigned int) __deprecated;
    ^
    ../../../../framework/rpc/rpc.c:224:2: warning: implicit declaration of function 'gettimeofday' is invalid in C99 [-Wimplicit-function-declaration]
    gettimeofday(&befTime, NULL);
    ^
    ../../../../framework/rpc/rpc.c:493:12: warning: implicit declaration of function 'sem_timedwait' is invalid in C99 [-Wimplicit-function-declaration]
    status = sem_timedwait(&srspSem, &srspTimeOut);
    ^
    4 warnings generated.
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/mt/mtParser.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/mt/Zdo/mtZdo.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/mt/Sys/mtSys.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/mt/Af/mtAf.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/mt/Sapi/mtSapi.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/platform/gnu/dbgPrint.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/platform/gnu/hostConsole.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/platform/gnu/rpcTransport.c
    gcc -c -Wall -g -std=gnu99 -I../../ -I../../../../framework/platform/gnu -I../../../../framework/rpc/ -I../../../../framework/mt/ -I../../../../framework/mt/Af -I../../../../framework/mt/Zdo -I../../../../framework/mt/Sys -I../../../../framework/mt/Sapi -DxCC26xx ../../../../framework/rpc/queue.c
    ../../../../framework/rpc/queue.c:108:2: warning: 'sem_init' is deprecated [-Wdeprecated-declarations]
    sem_init(&(hndl->llqAccessSem), 0, 1);
    ^
    /usr/include/sys/semaphore.h:55:5: note: 'sem_init' has been explicitly marked deprecated here
    int sem_init(sem_t *, int, unsigned int) __deprecated;
    ^
    ../../../../framework/rpc/queue.c:109:2: warning: 'sem_init' is deprecated [-Wdeprecated-declarations]
    sem_init(&(hndl->llqCountSem), 0, 0);
    ^
    /usr/include/sys/semaphore.h:55:5: note: 'sem_init' has been explicitly marked deprecated here
    int sem_init(sem_t *, int, unsigned int) __deprecated;
    ^
    ../../../../framework/rpc/queue.c:137:13: warning: implicit declaration of function 'sem_timedwait' is invalid in C99 [-Wimplicit-function-declaration]
    sepmRnt = sem_timedwait(&(hndl->llqCountSem), timeout);
    ^
    3 warnings generated.
    gcc main.o nwkTopology.o rpc.o mtParser.o mtZdo.o mtSys.o mtAf.o mtSapi.o dbgPrint.o hostConsole.o rpcTransport.o queue.o -lpthread -o nwkTopology.bin
    Undefined symbols for architecture x86_64:
    "_sem_timedwait", referenced from:
    _rpcSendFrame in rpc.o
    _llq_timedreceive in queue.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make: *** [nwkTopology.bin] Error 1
  • Hi Gregory,

    It seems like the POSIX semaphore implementation in OSX doesn't have some functions implemented, you will have to modify the code related to the semaphore. From the log you pasted seems like "sem_init" and "sem_timedwait" are the functions giving problems, you will have to replace those function calls to an equivalent function in OSX.

    Here is a link that might help you with this issue stackoverflow.com/.../sem-init-on-os-x

    Regards
    Hector
  • Thanks Hector
    replacing sem_init() with sem_open() has worked and replacing <time.h> with <sys/time.h> solved gettimeofday();
    the cruncher now is finding the safe replacement for sem_timedwait() as there are several options and the understanding is that they all behave differently sI need to find which one to use then it should be OS X happy as well.
    Has anyone used it on windoze? .Just interested.

    Thanks again
  • Gregory,

    Yes it has been ported to Windows before but porting it to windows will require a little bit more work than for OSX. For Windows you would have to define some platform specific files such as:
    - rpcTransport
    - sbgPrint
    - hostConsole
    - semaphore
    For the framework to work properly on Windows.

    For the sem_timedwait() you could make your own implementation if you cant find anything like it for OSX. Take a look at the implementation of sem_timedwait for TI-RTOS in the file ".../framework/platform/tirtos/semapore.c" to get an idea.

    Regards,
    Hector
  • Hi,

    Is there any user guide for porting the framework on Windows?

    or 

    Can you please share any example for using the framework on windows.

    Regards

    Srikanth

  • As I know, there is no related example using framework on windows system. I think you have to refer to Linux reference design and revise accordingly.

  • Hello TheDarkSide,

    We use AM3352+CC2530 ZNP running Z-Stack Linux Gateway and works fine.

    What is the difference between CC2530/CC2538 ZNP in Z-Stack Home 1.2.1 and CC2530/CC2538 ZNP in this new release, new SW reference design for designs using ZNP ?

    Can CC2530/CC2538 ZNP in this new release work fine with Z-Stack Linux Gateway ?

    Actually, we survey if AM3352+CC2538 ZNP running Z-Stack Linux Gateway is a good solution for our next build.

    Please help and thanks a lot.
  • Hi Ting,

    The ZNP host framework contains only low level ZNP APIs, while the Z-Stack Linux gateway has a full implementation of the ZigBee Cluster Library and also provides a server to access the gateway through an internet connection.

    If your concern is about the  CC2530/CC2538 ZNP firmware that comes with the Linux Gateway vs the ZNP firmware in the host framework then there is no big difference but if you are using the Linux gateway then you should use the ZNP firmware provided with the linux gateway, there is no benefit on trying to use the ZNP firmware provided in the ZNP Host Framework with the Linux Gateway.

  • Hi Hector,

    Thanks for your detailed explanation and it is very useful to me.

    Thanks a lot.