Disconnected onewire devices still exist after echo 1 > w1_master_search












0















I'm working on embedded device where user connects and disconnects onewire sensors sometimes. Sensors are connected to DS2482 device, which is I2C to 1Wire converter. DS2482 is supported by Linux Kernel. There are only temperature sensors on the bus (DS18B20 family), also supported by Kernel.



I wrote shell script that is supposed to scan onewire bus and return new list of connected devices.



#!/bin/bash

file=/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves

if [ -f $file ]; then
echo 1 > /sys/bus/w1/devices/w1_bus_master1/w1_master_search
cat $file
else
echo "Error: OneWire not initialized or hardware problem. File not found ($file)"
fi


Search doesn't work, disconnected devices still exist when I'm reading /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves.



I have tried to write bigger number to w1_master_search file. If



echo 100 > /sys/bus/w1/devices/w1_bus_master1/w1_master_search


Then I have checked if file decrements:



cat /sys/bus/w1/devices/w1_bus_master1/w1_master_search


and it decrements every 10 seconds (w1_master_timeout is set to 10), but device list (w1_master_slaves) remain unchanged for a very long time. Disconnected devices disappear after 10 or more searches.



Is there a way to get connected devices instantly?





Edit:



I wrote another script that removes all devices manuall and starts new device scan, however it works unstable. After I disconnect and connect all sensors somethimes only one sensor is visible.



#!/bin/bash
# set -x

slaves_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
search_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_search
remove_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_remove

# 1. Remove all slaves

slaves=`cat $slaves_file`;
newline='
'
for slave in $slaves
do
if [ ${#slave} == 15 ]; then
# echo "Removing $slave"
echo "$slave" > $remove_file;
fi
done

# 2. Scan

if [ -f $slaves_file ]; then
# echo "Scanning onewire..."
echo 1 > $search_file
# echo "Waiting for devices to settle up"
sleep 1
# echo "Device list:"
cat $slaves_file | grep "^28"
# echo "End of device list."
else
echo "Error: OneWire not initialized or hardware problem. File not found ($slaves_file)"
fi

# set +x









share|improve this question





























    0















    I'm working on embedded device where user connects and disconnects onewire sensors sometimes. Sensors are connected to DS2482 device, which is I2C to 1Wire converter. DS2482 is supported by Linux Kernel. There are only temperature sensors on the bus (DS18B20 family), also supported by Kernel.



    I wrote shell script that is supposed to scan onewire bus and return new list of connected devices.



    #!/bin/bash

    file=/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves

    if [ -f $file ]; then
    echo 1 > /sys/bus/w1/devices/w1_bus_master1/w1_master_search
    cat $file
    else
    echo "Error: OneWire not initialized or hardware problem. File not found ($file)"
    fi


    Search doesn't work, disconnected devices still exist when I'm reading /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves.



    I have tried to write bigger number to w1_master_search file. If



    echo 100 > /sys/bus/w1/devices/w1_bus_master1/w1_master_search


    Then I have checked if file decrements:



    cat /sys/bus/w1/devices/w1_bus_master1/w1_master_search


    and it decrements every 10 seconds (w1_master_timeout is set to 10), but device list (w1_master_slaves) remain unchanged for a very long time. Disconnected devices disappear after 10 or more searches.



    Is there a way to get connected devices instantly?





    Edit:



    I wrote another script that removes all devices manuall and starts new device scan, however it works unstable. After I disconnect and connect all sensors somethimes only one sensor is visible.



    #!/bin/bash
    # set -x

    slaves_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
    search_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_search
    remove_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_remove

    # 1. Remove all slaves

    slaves=`cat $slaves_file`;
    newline='
    '
    for slave in $slaves
    do
    if [ ${#slave} == 15 ]; then
    # echo "Removing $slave"
    echo "$slave" > $remove_file;
    fi
    done

    # 2. Scan

    if [ -f $slaves_file ]; then
    # echo "Scanning onewire..."
    echo 1 > $search_file
    # echo "Waiting for devices to settle up"
    sleep 1
    # echo "Device list:"
    cat $slaves_file | grep "^28"
    # echo "End of device list."
    else
    echo "Error: OneWire not initialized or hardware problem. File not found ($slaves_file)"
    fi

    # set +x









    share|improve this question



























      0












      0








      0








      I'm working on embedded device where user connects and disconnects onewire sensors sometimes. Sensors are connected to DS2482 device, which is I2C to 1Wire converter. DS2482 is supported by Linux Kernel. There are only temperature sensors on the bus (DS18B20 family), also supported by Kernel.



      I wrote shell script that is supposed to scan onewire bus and return new list of connected devices.



      #!/bin/bash

      file=/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves

      if [ -f $file ]; then
      echo 1 > /sys/bus/w1/devices/w1_bus_master1/w1_master_search
      cat $file
      else
      echo "Error: OneWire not initialized or hardware problem. File not found ($file)"
      fi


      Search doesn't work, disconnected devices still exist when I'm reading /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves.



      I have tried to write bigger number to w1_master_search file. If



      echo 100 > /sys/bus/w1/devices/w1_bus_master1/w1_master_search


      Then I have checked if file decrements:



      cat /sys/bus/w1/devices/w1_bus_master1/w1_master_search


      and it decrements every 10 seconds (w1_master_timeout is set to 10), but device list (w1_master_slaves) remain unchanged for a very long time. Disconnected devices disappear after 10 or more searches.



      Is there a way to get connected devices instantly?





      Edit:



      I wrote another script that removes all devices manuall and starts new device scan, however it works unstable. After I disconnect and connect all sensors somethimes only one sensor is visible.



      #!/bin/bash
      # set -x

      slaves_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
      search_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_search
      remove_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_remove

      # 1. Remove all slaves

      slaves=`cat $slaves_file`;
      newline='
      '
      for slave in $slaves
      do
      if [ ${#slave} == 15 ]; then
      # echo "Removing $slave"
      echo "$slave" > $remove_file;
      fi
      done

      # 2. Scan

      if [ -f $slaves_file ]; then
      # echo "Scanning onewire..."
      echo 1 > $search_file
      # echo "Waiting for devices to settle up"
      sleep 1
      # echo "Device list:"
      cat $slaves_file | grep "^28"
      # echo "End of device list."
      else
      echo "Error: OneWire not initialized or hardware problem. File not found ($slaves_file)"
      fi

      # set +x









      share|improve this question
















      I'm working on embedded device where user connects and disconnects onewire sensors sometimes. Sensors are connected to DS2482 device, which is I2C to 1Wire converter. DS2482 is supported by Linux Kernel. There are only temperature sensors on the bus (DS18B20 family), also supported by Kernel.



      I wrote shell script that is supposed to scan onewire bus and return new list of connected devices.



      #!/bin/bash

      file=/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves

      if [ -f $file ]; then
      echo 1 > /sys/bus/w1/devices/w1_bus_master1/w1_master_search
      cat $file
      else
      echo "Error: OneWire not initialized or hardware problem. File not found ($file)"
      fi


      Search doesn't work, disconnected devices still exist when I'm reading /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves.



      I have tried to write bigger number to w1_master_search file. If



      echo 100 > /sys/bus/w1/devices/w1_bus_master1/w1_master_search


      Then I have checked if file decrements:



      cat /sys/bus/w1/devices/w1_bus_master1/w1_master_search


      and it decrements every 10 seconds (w1_master_timeout is set to 10), but device list (w1_master_slaves) remain unchanged for a very long time. Disconnected devices disappear after 10 or more searches.



      Is there a way to get connected devices instantly?





      Edit:



      I wrote another script that removes all devices manuall and starts new device scan, however it works unstable. After I disconnect and connect all sensors somethimes only one sensor is visible.



      #!/bin/bash
      # set -x

      slaves_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
      search_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_search
      remove_file=/sys/bus/w1/devices/w1_bus_master1/w1_master_remove

      # 1. Remove all slaves

      slaves=`cat $slaves_file`;
      newline='
      '
      for slave in $slaves
      do
      if [ ${#slave} == 15 ]; then
      # echo "Removing $slave"
      echo "$slave" > $remove_file;
      fi
      done

      # 2. Scan

      if [ -f $slaves_file ]; then
      # echo "Scanning onewire..."
      echo 1 > $search_file
      # echo "Waiting for devices to settle up"
      sleep 1
      # echo "Device list:"
      cat $slaves_file | grep "^28"
      # echo "End of device list."
      else
      echo "Error: OneWire not initialized or hardware problem. File not found ($slaves_file)"
      fi

      # set +x






      devices






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 1 at 14:19







      Kamil

















      asked Mar 1 at 12:58









      KamilKamil

      190416




      190416






















          0






          active

          oldest

          votes











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "106"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503778%2fdisconnected-onewire-devices-still-exist-after-echo-1-w1-master-search%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Unix & Linux Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503778%2fdisconnected-onewire-devices-still-exist-after-echo-1-w1-master-search%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          How to reconfigure Docker Trusted Registry 2.x.x to use CEPH FS mount instead of NFS and other traditional...

          is 'sed' thread safe

          How to make a Squid Proxy server?