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.

Linux NFC library (TRF7970a)

Other Parts Discussed in Thread: TRF7970A

Hi,

I'm working on an in house development which uses a Zynq SoC running a Linux kernel. I've had some great help on the Wi-Fi forums with getting the Wl18xx up and working, and now I'm looking for some advice with the TRF7970A.

The TRF970A was a far easier to get up and running compared to the Wl18xx, and we've had it working on our platform, using Neard (as advised in TI documentation). We've interfaced into the device using NeardAL (again as advised within TI documentation) and have found results to be very patchy. It sometimes reads tags, sometimes doesn't, sometimes reads records on a tag, sometimes doesn't. Generally it's very unreliable. To try and prove it's not the antenna we've designed on a flexi PCB, we've wired the antenna of the TRF7970A EVM onto our board and found results to be the same, which effectively rules out our antenna. In an attempt to strip the problem back, we've removed NeardAl out of the equation and used the test scripts that came with Neard to read/dump tags. This is a little better but is still too unreliable for a product. My confidence in Neard is further hit with the fact that when I build Neard, the ncl utility that comes with it seg faults as soon as you run it!!

So, there's a few questions we'd like to ask:

  1. Has anyone else witnessed the unreliable nature of Neard and NeardAl?
  2. Has anyone ditched Neard to use anything else? If so, what?
  3. Has anyone any general suggestions we could try to improve things?

Thanks in advance,

Sion

  • Hello Sion,

    I can't provide much personally, but I'll see what I can do to get you some feedback.  

    Typically there is a small linux community on here that may be able to contribute as well.  

    Thanks,

    JD

     

  • Thanks John, much appreciated. 

    Playing with the system a little more, I've got to a point where I think I've spotted a problem with the TRF7970A kernel module. There are times where I can't communicate with the TRF7970A using Neard anymore, and get an error of "nfc0 already activated". I happened to check dmesg after this happened last night and came across this useful snippet in the logs:

    
    
    trf7970a spi32766.1: trf7970a_send_cmd - Bogus state: 5
    digital: digital_wq_cmd: in_send_command returned err -5

    Looking in the source code (trf7970a.c) it looks the driver has got stuck in a situation:

    if ((trf->state != TRF7970A_ST_IDLE) &&
    (trf->state != TRF7970A_ST_IDLE_RX_BLOCKED)) 
    {
    dev_err(trf->dev, "%s - Bogus state: %d\n", __func__,
    trf->state);
    ret = -EIO;
    goto out_err;
    }
    

    The bogus state of '5' is an enum which is defined as TRF7970A_ST_WAIT_FOR_RX_DATA , which makes it look like the driver is in a state of expecting data, but that the device hasn't replied(?), by the time we come to send data as the error is raised within a method called trf7970a_send_cmd()

    Anyone any thoughts on this?

  • Hi Sion

    Can you tell me the value of Modulator and SYS_CLK Control Register (0x09) what u have set

    ?

    Also can u see data coming on MISO line
    In neard also u can enable debug by : neard -n -d "*"
    There may be some issues in neard u can take the neard from the commit id shown below:

    neard commit id : 647f2705bebf051ea85ab74399461203c8ba900e

  • Thanks for your reply.

    From a quick look, I can't seem to find what the Modulator and SYS_CLK Control register value is. As I'm using Neard/NFCtool, I've no idea what they are set to or how they are set.

    I'll try running neard in debug mode and see what I get out of it. I'll also try the neard commit you have mentioned - is there anything special about this version?

  • Hi Sion

    You may need to set the register in the kernel driver trf7970a.c. Tell me your email id. i will send the driver to you. Which platform and what kernel version are u using?

    Have you checked the document for building neard? 

    You can take it from here www.ti.com/lit/pdf/sloa210

    Regarding neard commit id it has been referred in the above document that this neard is clean.

    Let me know how your development goes

    Thanks

     

     

  • Hi,

    I've looked through trf7970a.c in more detail along with the code within the NFC subsystem and Neard. The SYS_CLK register is set within trf7970a.c through a number of switch case statements, with no debug output so I can't see at the moment what the register is set to. The NFC does work for a short period of time, which leads me to believe the register setting is going to be OK, as I can read/write tags for a period of time before I get the SPI erorr listed in one of my earlier posts. 

    I've checked the documentation for building Neard and it doesn't look too different to how it's built from Buildroot. The Neard release we're using is the 0.14 official release, using 0.15 makes no difference.


    Any other suggestions regarding the SPI problem? I think this might be the root cause instead of Neard/NeardAl.

  • Hi
    The official Neard 0.14 has some issues. Even I was facing the error.
    That is why i am asking you to use the commit id as mentioned above.
    Neard 0.14 doesn't have ISO1593 tags support

    How have you checked that NFC is working fine?

    First we need to confirm whether the driver and the SPI is working properly?
    Have you checked the IRQ status register ?
    Add a printk in the trf7970a_irq to see what is going on?
    I needed to see whether all the registers are configured properly.

    Thanks
  • Hi,

    Right, I see what you're saying - even though Neard 0.14 is classed as a stable release, it has some issues. In that case, I'll get on and try the version you have previously mentioned when I get to the office in the morning. I found out about the ISO1593 tags this afternoon - it caused Neard to lock up when I scanned one that was supplied with a TFR7970A dev kit!!!

    Here's the situation I have with regard to NFC:

    • Using Neard running as a daemon, and using an application written using NeardAl demo code I can start the nfc0 device (trf7970a) polling as Initiator and can detect a tag is present. I've tried this with NTAG213 and NTAG216 tags (both normal and on metal tags) 
    • Detecting tag presence is possible 99% of the time in the above setup, but reading the contents of the tag (URI or text written using Android device) is largely hit and miss, probably a 50% success rate.
    • Given this unreliability, sometimes the entire Neard/NeardAL setup falls in a heap and I get an error from the TRF7970A driver:
    trf7970a spi32766.1: trf7970a_send_cmd - Bogus state: 5
    digital: digital_wq_cmd: in_send_command returned err -5
    • In summary, the SPI looks to be working as we can communicate with the TRF7970A a considerable amount of the time. From this, I'd also deduce that the setup of the device from the TRF7970A driver is correct. The problem is that Neard seems to be unreliable. But it would also appear that I may have an issue with the TRF7970A kernel module driver. 

  • Hi

    Yes it seems that the kernel driver is working fine. Have you tried looking into the digital protocol stack? They are files inside the (kernel directory)/net/nfc

    You can compare your files with the TI Beaglebone kernel where they have made some changes. This kernel u can check from sloa210 pdf

    Instead of checking from the nfctool  we can check from the  python scripts given test‐adapter poll test‐tag list etc

    Enable debug in neard after you compile the new neard

  • Hi,

    I've checked out the recommended version of Neard, built it using Buildroot after some mods by hand to the source and have run it on my target. I don't see any difference in performance apart from that ISO1593 no longer kill it!


    I've gone with your advice of trying the python scripts instead of nfctool, and they don't seem to be very reliable at all. I perform the following steps and have a very mixed success rate of being able to detect and/or read tags.

    ./test-adapter powered nfc0 on
    ./test-adapter poll nfc0 on Initiator
    ./test-tag list
    ./test-tag dump (only when I can see a tag listed)

    The majority of time the python scripts don't pick the tag up. This wasn't the case with the older 0.14 version.

    Shifting my attention to nfctool, I can more reliably read tags:

    # nfctool -d nfc0 -p
    Start polling on nfc0 as initiator
    
    Targets found for nfc0
      Tags: [ tag21 ]
      Devices: [ ]
    

    Whilst nfctool doesn't provide the means to dump tag contents, it proves that the tag is actually being detected. I've run nfctool with neard running in debug mode and can see the following output, which appears to be a successful detection of the tag and a successful read of the URI stored on the tag which was written from Android:

    # nfctool -d nfc0 -p
    Start polling on nfc0 as initiator
    
    neard[850]: src/netlink.c:no_seq_check()
    neard[850]: src/netlink.c:nfc_netlink_event() event 0x9
    Targets found for nfc0
    neard[850]: src/netlink.c:nfc_netlink_event() Targets found
      Tags: [ tag27 ]
      Devices: [ ]
    neard[850]: src/netlink.c:nfc_netlink_event_targets_found()
    
    neard[850]: src/netlink.c:nfc_netlink_event_targets_found() adapter 0
    neard[850]: src/netlink.c:__nl_send_msg()
    neard[850]: src/netlink.c:get_targets_handler()
    neard[850]: src/netlink.c:get_targets_handler() target idx 27 proto 0x4 sens_res 0x44 sel_res 0x0 NFCID len 7
    neard[850]: src/netlink.c:get_targets_handler()     iso15693_uid_len 0
    neard[850]: src/adapter.c:__near_adapter_add_target() idx 0
    neard[850]: src/tag.c:tag_initialize()
    neard[850]: src/tag.c:set_tag_type() protocol 0x4 sens_res 0x44 sel_res 0x0
    neard[850]: src/tag.c:set_tag_type() proto 0x0
    neard[850]: src/tag.c:set_tag_type() tag type 0x2
    neard[850]: src/tag.c:__near_tag_add() connection 0x42cf8
    neard[850]: src/adapter.c:near_adapter_connect() idx 0
    neard[850]: src/tag.c:__near_tag_read() type 0x2
    neard[850]: src/adapter.c:__near_adapter_stop_check_presence()
    neard[850]: src/tag.c:__near_tag_read() driver type 0x1
    neard[850]: src/tag.c:__near_tag_read() driver type 0x2
    neard[850]: plugins/nfctype2.c:nfctype2_read()
    neard[850]: plugins/nfctype2.c:nfctype2_read_meta()
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4c4a8 cb 0x16980 data 0x427d8
    neard[850]: src/netlink.c:__finish_handler()
    neard[850]: src/netlink.c:get_targets_finish_handler()
    neard[850]: src/adapter.c:__near_adapter_get_targets_done() idx 0
    neard[850]: src/tag.c:type_string() type 0x2
    neard[850]: src/tag.c:protocol_string() protocol 0x4
    # neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x427d8
    neard[850]: plugins/nfctype2.c:meta_recv() 17
    neard[850]: plugins/nfctype2.c:data_read()
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16b2c data 0x499d8
    neard[850]: plugins/nfctype2.c:t2_cookie_release() 0x427d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b870 cb 0x16b2c data 0x499d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16b2c data 0x499d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b870 cb 0x16b2c data 0x499d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16b2c data 0x499d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b870 cb 0x16b2c data 0x499d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16b2c data 0x499d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b870 cb 0x16b2c data 0x499d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16b2c data 0x499d8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x499d8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() Done reading
    neard[850]: src/tlv.c:near_tlv_parse()
    neard[850]: src/tlv.c:near_tlv_parse() tlv 0x3
    neard[850]: src/tlv.c:near_tlv_parse() NDEF found 22 bytes long
    neard[850]: src/ndef.c:near_ndef_parse_msg()
    neard[850]: src/ndef.c:near_ndef_parse_msg() Record Header : 0xD1
    neard[850]: src/ndef.c:parse_record_header() length 22
    neard[850]: src/ndef.c:parse_record_header() mb 1 me 1 sr 1 il 0 tnf 1
    neard[850]: src/ndef.c:parse_record_header() payload length 18
    neard[850]: src/ndef.c:get_record_type()
    neard[850]: src/ndef.c:validate_record_begin_and_end_bits()
    neard[850]: src/ndef.c:parse_uri_payload()
    neard[850]: src/ndef.c:parse_uri_payload() Identifier  '0X1'
    neard[850]: src/ndef.c:parse_uri_payload() Field  'google.com/'
    neard[850]: src/ndef.c:build_record_type_string()
    neard[850]: src/tlv.c:near_tlv_parse() tlv 0xfe
    neard[850]: src/tlv.c:near_tlv_parse() Done
    neard[850]: src/tag.c:near_tag_add_records() records 0x41080
    neard[850]: src/agent.c:__near_agent_ndef_parse_records()
    neard[850]: src/agent.c:__near_agent_ndef_parse_records() Looking for type urn:nfc:wkt:U
    neard[850]: src/tag.c:append_records()
    neard[850]: src/adapter.c:tag_read_cb() status 0
    neard[850]: src/ndef.c:property_get_type()
    neard[850]: src/ndef.c:text_exists()
    neard[850]: src/ndef.c:text_exists() No text
    neard[850]: src/ndef.c:text_exists()
    neard[850]: src/ndef.c:text_exists() No text
    neard[850]: src/ndef.c:text_exists()
    neard[850]: src/ndef.c:text_exists() No text
    neard[850]: src/ndef.c:uri_exists()
    neard[850]: src/ndef.c:property_get_uri()
    neard[850]: src/ndef.c:property_get_uri() URI prefix http://www.
    neard[850]: src/ndef.c:sp_action_exists()
    neard[850]: src/ndef.c:sp_action_exists() No SmartPoster action
    neard[850]: src/ndef.c:sp_mime_exists()
    neard[850]: src/ndef.c:sp_mime_exists() No SmartPoster MIME type
    neard[850]: src/ndef.c:sp_size_exists()
    neard[850]: src/ndef.c:sp_size_exists() No SmartPoster size
    neard[850]: src/ndef.c:mime_exists()
    neard[850]: src/ndef.c:mime_exists() No MIME
    neard[850]: src/ndef.c:aar_exists()
    neard[850]: src/ndef.c:aar_exists() No AAR
    neard[850]: src/adapter.c:check_presence()
    neard[850]: src/tag.c:__near_tag_check_presence() type 0x2
    neard[850]: src/tag.c:__near_tag_check_presence() driver type 0x1
    neard[850]: src/tag.c:__near_tag_check_presence() driver type 0x2
    neard[850]: plugins/nfctype2.c:nfctype2_check_presence()
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16450 data 0x4b9d0
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4b9d0
    neard[850]: plugins/nfctype2.c:check_presence() 17
    neard[850]: plugins/nfctype2.c:t2_cookie_release() 0x4b9d0
    neard[850]: src/adapter.c:tag_present_cb()
    neard[850]: src/adapter.c:check_presence()
    neard[850]: src/tag.c:__near_tag_check_presence() type 0x2
    neard[850]: src/tag.c:__near_tag_check_presence() driver type 0x1
    neard[850]: src/tag.c:__near_tag_check_presence() driver type 0x2
    neard[850]: plugins/nfctype2.c:nfctype2_check_presence()
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16450 data 0x4ec10
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4ec10
    neard[850]: plugins/nfctype2.c:check_presence() 17
    neard[850]: plugins/nfctype2.c:t2_cookie_release() 0x4ec10
    neard[850]: src/adapter.c:tag_present_cb()
    neard[850]: src/adapter.c:check_presence()
    neard[850]: src/tag.c:__near_tag_check_presence() type 0x2
    neard[850]: src/tag.c:__near_tag_check_presence() driver type 0x1
    neard[850]: src/tag.c:__near_tag_check_presence() driver type 0x2
    neard[850]: plugins/nfctype2.c:nfctype2_check_presence()
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16450 data 0x4b9d0
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4b9d0
    neard[850]: plugins/nfctype2.c:check_presence() 17
    neard[850]: plugins/nfctype2.c:t2_cookie_release() 0x4b9d0
    neard[850]: src/adapter.c:tag_present_cb()
    neard[850]: src/adapter.c:check_presence()
    neard[850]: src/tag.c:__near_tag_check_presence() type 0x2
    neard[850]: src/tag.c:__near_tag_check_presence() driver type 0x1
    neard[850]: src/tag.c:__near_tag_check_presence() driver type 0x2
    neard[850]: plugins/nfctype2.c:nfctype2_check_presence()
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b458 cb 0x16450 data 0x4ec10
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4ec10
    neard[850]: plugins/nfctype2.c:check_presence() 17
    neard[850]: plugins/nfctype2.c:t2_cookie_release() 0x4ec10
    neard[850]: src/adapter.c:tag_present_cb()

    After the success, I might be able to read a variable number of times from the tag OK, but then I get a situation where I can detect the tag but there's an error reading from the tag:

    # nfctool -d nfc0 -p
    Start polling on nfc0 as initiator
    
    Targets found for nfc0
      Tags: [ tag37 ]
      Devices: [ ]
    
    neard[850]: src/netlink.c:no_seq_check() 
    neard[850]: src/netlink.c:nfc_netlink_event() event 0x9
    neard[850]: src/netlink.c:nfc_netlink_event() Targets found
    neard[850]: src/netlink.c:nfc_netlink_event_targets_found() 
    neard[850]: src/netlink.c:nfc_netlink_event_targets_found() adapter 0
    neard[850]: src/netlink.c:__nl_send_msg() 
    neard[850]: src/netlink.c:get_targets_handler() 
    neard[850]: src/netlink.c:get_targets_handler() target idx 37 proto 0x4 sens_res 0x44 sel_res 0x0 NFCID len 7
    neard[850]: src/netlink.c:get_targets_handler() 	iso15693_uid_len 0
    neard[850]: src/adapter.c:__near_adapter_add_target() idx 0
    neard[850]: src/tag.c:tag_initialize() 
    neard[850]: src/tag.c:set_tag_type() protocol 0x4 sens_res 0x44 sel_res 0x0
    neard[850]: src/tag.c:set_tag_type() proto 0x0
    neard[850]: src/tag.c:set_tag_type() tag type 0x2
    neard[850]: src/tag.c:__near_tag_add() connection 0x42cf8
    neard[850]: src/adapter.c:near_adapter_connect() idx 0
    neard[850]: src/tag.c:__near_tag_read() type 0x2
    neard[850]: src/adapter.c:__near_adapter_stop_check_presence() 
    
    (neard:850): GLib-CRITICAL **: Source ID 287 was not found when attempting to remove it
    neard[850]: src/tag.c:__near_tag_read() driver type 0x1
    neard[850]: src/tag.c:__near_tag_read() driver type 0x2
    neard[850]: plugins/nfctype2.c:nfctype2_read() 
    neard[850]: plugins/nfctype2.c:nfctype2_read_meta() 
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b730 cb 0x16980 data 0x4b508
    neard[850]: src/netlink.c:__finish_handler() 
    neard[850]: src/netlink.c:get_targets_finish_handler() 
    neard[850]: src/adapter.c:__near_adapter_get_targets_done() idx 0
    neard[850]: src/tag.c:type_string() type 0x2
    neard[850]: src/tag.c:protocol_string() protocol 0x4
    # neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4b508
    neard[850]: plugins/nfctype2.c:meta_recv() 17
    neard[850]: plugins/nfctype2.c:data_read() 
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4bb48 cb 0x16b2c data 0x4b5b8
    neard[850]: plugins/nfctype2.c:t2_cookie_release() 0x4b508
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4b5b8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b730 cb 0x16b2c data 0x4b5b8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4b5b8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4bb48 cb 0x16b2c data 0x4b5b8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4b5b8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4b730 cb 0x16b2c data 0x4b5b8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x1
    neard[850]: src/adapter.c:execute_recv_cb() data 0x4b5b8
    neard[850]: plugins/nfctype2.c:data_recv() 17
    neard[850]: plugins/nfctype2.c:data_recv() adapter 0
    neard[850]: src/adapter.c:near_adapter_send() idx 0
    neard[850]: src/adapter.c:near_adapter_send() req 0x4bb48 cb 0x16b2c data 0x4b5b8
    neard[850]: src/adapter.c:adapter_recv_event() condition 0x19
    neard[850]: Error while reading NFC bytes
    neard[850]: plugins/nfctype2.c:data_recv() -5
    neard[850]: src/adapter.c:near_adapter_disconnect() idx 0
    neard[850]: src/adapter.c:near_adapter_disconnect() link 0x49b88
    neard[850]: src/adapter.c:near_adapter_disconnect() tag type 2
    neard[850]: src/adapter.c:__near_adapter_remove_target() idx 0
    neard[850]: src/tag.c:__near_tag_remove() path /org/neard/nfc0/tag37
    neard[850]: src/tag.c:free_tag() tag 0x49b88
    neard[850]: src/adapter.c:check_presence() 
    neard[850]: src/adapter.c:near_adapter_disconnect() idx 0
    neard[850]: src/adapter.c:near_adapter_disconnect() link (nil)