docs: def watch(self, enable=True, gpsd_protocol=PROTOCOL, devicepath=None):
          """watch gpsd in various gpsd_protocols or devices.
          Arguments:
              enable: (bool) stream data to socket
              gpsd_protocol: (str) 'json' | 'nmea' | 'rare' | 'raw' | 'scaled' | 'split24' | 'pps'
              devicepath: (str) device path - '/dev/ttyUSBn' for some number n or '/dev/whatever_works'
          Returns:
              command: (str) e.g., '?WATCH={"enable":true,"json":true};'
          """
          # N.B.: 'timing' requires special attention, as it is undocumented and lives with dragons.
          command = '?WATCH={{"enable":true,"{0}":true}}'.format(gpsd_protocol)
  
          if gpsd_protocol == 'rare':  # 1 for a channel, gpsd reports the unprocessed NMEA or AIVDM data stream
              command = command.replace('"rare":true', '"raw":1')
          if gpsd_protocol == 'raw':  # 2 channel that processes binary data, received data verbatim without hex-dumping.
              command = command.replace('"raw":true', '"raw",2')
          if not enable:
              command = command.replace('true', 'false')  # sets -all- command values false .
          if devicepath:
              command = command.replace('}', ',"device":"') + devicepath + '"}'
  
          return self.send(command)