docs: def open(self, baudrate=BAUDRATE, no_reader_thread=False):
          """
          Opens the device.
  
          :param baudrate: baudrate to use with the device
          :type baudrate: int
          :param no_reader_thread: whether or not to automatically start the
                                   reader thread.
          :type no_reader_thread: bool
  
          :raises: :py:class:`~alarmdecoder.util.NoDeviceError`
          """
          # Set up the defaults
          if baudrate is None:
              baudrate = SerialDevice.BAUDRATE
  
          if self._port is None:
              raise NoDeviceError('No device interface specified.')
  
          self._read_thread = Device.ReadThread(self)
  
          # Open the device and start up the reader thread.
          try:
              self._device.port = self._port
              self._device.open()
              # NOTE: Setting the baudrate before opening the
              #       port caused issues with Moschip 7840/7820
              #       USB Serial Driver converter. (mos7840)
              #
              #       Moving it to this point seems to resolve
              #       all issues with it.
              self._device.baudrate = baudrate
  
          except (serial.SerialException, ValueError, OSError) as err:
              raise NoDeviceError('Error opening device on {0}.'.format(self._port), err)
  
          else:
              self._running = True
              self.on_open()
  
              if not no_reader_thread:
                  self._read_thread.start()
  
          return self