First Day with WeeWX Some Good, but...

348 views
Skip to first unread message

scott pierce

unread,
Feb 1, 2025, 9:34:23 PM2/1/25
to weewx-user
Successfully installed WeeWX on Rpi 5 and it's ingesting data from Davis Envoy USB Weather Link data logger.  
Also, I have been able to view reports...so that's nice.
I'm just beginning this journey so still a lot to learn and set up.
One quick question I can't find an answer to in the group or in notes...
when I run a status check this is the result...
× weewx.service - WeeWX
     Loaded: loaded (/lib/systemd/system/weewx.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Sat 2025-02-01 21:18:12 EST; 7min ago
   Duration: 35min 33.415s
       Docs: https://weewx.com/docs
    Process: 6313 ExecStart=weewxd /etc/weewx/weewx.conf (code=exited, status=4)
   Main PID: 6313 (code=exited, status=4)
        CPU: 2.339s

Feb 01 21:18:12 spi-1 weewxd[6313]: CRITICAL weewx.engine:     ****      log.debug("Hardware name: %s", self.hardware_name)
Feb 01 21:18:12 spi-1 weewxd[6313]: CRITICAL weewx.engine:     ****                                     ^^^^^^^^^^^^^^^^^^
Feb 01 21:18:12 spi-1 weewxd[6313]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 1416, in hardware_name
Feb 01 21:18:12 spi-1 weewxd[6313]: CRITICAL weewx.engine:     ****      raise weewx.UnsupportedFeature("Unknown hardware type %d" % self.hardware_type)
Feb 01 21:18:12 spi-1 weewxd[6313]: CRITICAL weewx.engine:     ****  weewx.UnsupportedFeature: Unknown hardware type 10
Feb 01 21:18:12 spi-1 weewxd[6313]: CRITICAL __main__: Unable to load driver: Unknown hardware type 10
Feb 01 21:18:12 spi-1 weewxd[6313]: CRITICAL __main__:     ****  Exiting...
Feb 01 21:18:12 spi-1 systemd[1]: weewx.service: Main process exited, code=exited, status=4/NOPERMISSION
Feb 01 21:18:12 spi-1 systemd[1]: weewx.service: Failed with result 'exit-code'.
Feb 01 21:18:12 spi-1 systemd[1]: weewx.service: Consumed 2.339s CPU time.

I'm guessing I put the hardware name in wrong in setup...not sure.  Also don't know where to look to check.
Any suggestions are appreciated.
Thanks
Scott

John Kline

unread,
Feb 1, 2025, 10:51:51 PM2/1/25
to weewx...@googlegroups.com, weewx-user
If you set debug = 1 and restart weewx, we’ll get to see the hardware_type read from the envoy.
The line in the log will contain “Hardware type is “

On Feb 1, 2025, at 6:34 PM, scott pierce <johnsco...@gmail.com> wrote:

Successfully installed WeeWX on Rpi 5 and it's ingesting data from Davis Envoy USB Weather Link data logger.  
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/b5df5db2-394b-4467-8c33-f50631f7f65dn%40googlegroups.com.

scott pierce

unread,
Feb 2, 2025, 12:03:03 PM2/2/25
to weewx-user
Hi,
I was able to update the confi file and change the Debug to 1...which in itself is a huge win as it took me a while to figure out how to even access the file. (permissions have been a bear to learn).  I have read a lot in the last 24 hours!
That said, I still don't know how to access any additional log information.  When I run the status check, it comes back with basically the same info...
× weewx.service - WeeWX
     Loaded: loaded (/lib/systemd/system/weewx.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Sun 2025-02-02 11:35:11 EST; 23min ago
   Duration: 18min 49.054s
       Docs: https://weewx.com/docs
    Process: 1261 ExecStart=weewxd /etc/weewx/weewx.conf (code=exited, status=4)
   Main PID: 1261 (code=exited, status=4)
        CPU: 873ms

Feb 02 11:35:11 spi-1 weewxd[1261]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 1444, in _setup
Feb 02 11:35:11 spi-1 weewxd[1261]: CRITICAL weewx.engine:     ****      self.hardware_type = self._determine_hardware()
Feb 02 11:35:11 spi-1 weewxd[1261]: CRITICAL weewx.engine:     ****                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 02 11:35:11 spi-1 weewxd[1261]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 1435, in _determine_hardware
Feb 02 11:35:11 spi-1 weewxd[1261]: CRITICAL weewx.engine:     ****      raise weewx.WeeWxIOError("Unable to read hardware type")
Feb 02 11:35:11 spi-1 weewxd[1261]: CRITICAL weewx.engine:     ****  weewx.WeeWxIOError: Unable to read hardware type
Feb 02 11:35:11 spi-1 weewxd[1261]: CRITICAL __main__: Unable to load driver: Unable to read hardware type
Feb 02 11:35:11 spi-1 weewxd[1261]: CRITICAL __main__:     ****  Exiting...
Feb 02 11:35:11 spi-1 systemd[1]: weewx.service: Main process exited, code=exited, status=4/NOPERMISSION
Feb 02 11:35:11 spi-1 systemd[1]: weewx.service: Failed with result 'exit-code'.
~

Thanks
Scott

scott pierce

unread,
Feb 2, 2025, 2:33:42 PM2/2/25
to weewx-user
Also....where are the executables?  In the documentation it says:

This is a reference guide to the executable utilities that come with WeeWX:

  • wee_config for changing the configuration file, and configuring new device drivers;
  • wee_database for reconfiguring the database;
  • wee_debug for producing debug reports for remote support;
  • wee_device for configuring your hardware;
  • wee_extension for installing and removing extensions;
  • wee_import for importing historical data from external sources;
  • wee_reports for running reports without running WeeWX itself;
  • weewxd the main weewx program;
  • wunderfixer for resending data missing on the Weather Underground site.

And then to find them....

Location of WeeWX components


Executables
BIN_ROOT/usr/share/weewx/



But when I look in that directory....

@spi-1:/usr/share/weewx $ ls
__pycache__  weecfg     weectl.py  weeimport  weeutil  weewx_data
schemas      weectllib  weedb      weeplot    weewx    weewxd.py
@spi-1:/usr/share/weewx $ 

None of them show up.  What am I missing?

Thanks
Scott


michael.k...@gmx.at

unread,
Feb 2, 2025, 2:37:45 PM2/2/25
to weewx-user
Maybe you missed that you refer to a 4.9 version of the docs, but you've installed a 5.1 version?

scott pierce

unread,
Feb 2, 2025, 3:01:39 PM2/2/25
to weewx-user
Yes, big rookie mistake.  Working through it now.  Thanks for pointing out!!
Scott

scott pierce

unread,
Feb 2, 2025, 3:10:39 PM2/2/25
to weewx-user
Here is the info that came through after running weectl debug:

System info
  Platform:       Linux-6.6.74+rpt-rpi-2712-aarch64-with-glibc2.36
  Python Version: 3.11.2

Load Information
   1 minute load average:  0.00    
   5 minute load average:  0.04    
  15 minute load average:  0.13    

General Weewx info
  Weewx version 5.1.0 detected.

Currently installed extensions
No extensions installed.

Archive info
  Database name:        weewx.sdb
  Table name:           archive
  Version               4.0
  Unit system:          1 (US)
  First good timestamp: 2025-01-30 14:50:00 EST (1738266600)
  Last good timestamp:  2025-02-02 15:00:00 EST (1738526400)
  Number of records:    434
  weewx (weewx.conf) is set to use an archive interval of 300 seconds.
  The station hardware was not interrogated to determine the archive interval.

Supported SQL keys
  dateTime                  usUnits                   interval                
  altimeter                 appTemp                   appTemp1                
  barometer                 batteryStatus1            batteryStatus2          
  batteryStatus3            batteryStatus4            batteryStatus5          
  batteryStatus6            batteryStatus7            batteryStatus8          
  cloudbase                 co                        co2                      
  consBatteryVoltage        dewpoint                  dewpoint1                
  ET                        extraHumid1               extraHumid2              
  extraHumid3               extraHumid4               extraHumid5              
  extraHumid6               extraHumid7               extraHumid8              
  extraTemp1                extraTemp2                extraTemp3              
  extraTemp4                extraTemp5                extraTemp6              
  extraTemp7                extraTemp8                forecast                
  hail                      hailBatteryStatus         hailRate                
  heatindex                 heatindex1                heatingTemp              
  heatingVoltage            humidex                   humidex1                
  inDewpoint                inHumidity                inTemp                  
  inTempBatteryStatus       leafTemp1                 leafTemp2                
  leafWet1                  leafWet2                  lightning_distance      
  lightning_disturber_count lightning_energy          lightning_noise_count    
  lightning_strike_count    luminosity                maxSolarRad              
  nh3                       no2                       noise                    
  o3                        outHumidity               outTemp                  
  outTempBatteryStatus      pb                        pm10_0                  
  pm1_0                     pm2_5                     pressure                
  radiation                 rain                      rainBatteryStatus        
  rainRate                  referenceVoltage          rxCheckPercent          
  signal1                   signal2                   signal3                  
  signal4                   signal5                   signal6                  
  signal7                   signal8                   snow                    
  snowBatteryStatus         snowDepth                 snowMoisture            
  snowRate                  so2                       soilMoist1              
  soilMoist2                soilMoist3                soilMoist4              
  soilTemp1                 soilTemp2                 soilTemp3                
  soilTemp4                 supplyVoltage             txBatteryStatus          
  UV                        uvBatteryStatus           windBatteryStatus        
  windchill                 windDir                   windGust                
  windGustDir               windrun                   windSpeed                

Databases configured in weewx.conf:
  archive_sqlite:
     database_name weewx.sdb          
            driver weedb.sqlite        
       SQLITE_ROOT /var/lib/weewx      
  archive_mysql:
     database_name weewx              
            driver weedb.mysql        
              host localhost          
              user weewx              
          password weewx              

--- Start configuration file /etc/weewx/weewx.conf ---
# WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2024 Tom Keffer 
# See the file LICENSE.txt for your rights.

##############################################################################

# This section is for general configuration information.

# Set to 1 for extra debug info, otherwise comment it out or set to zero.
debug = 1

# Whether to log successful operations. May get overridden below.
log_success = True

# Whether to log unsuccessful operations. May get overridden below.
log_failure = True

# This configuration file was created by ...
version = 5.1.0
config_path = /etc/weewx/weewx.conf
WEEWX_ROOT = /etc/weewx

##############################################################################

#   This section is for information about the station.

[Station]
   
    # Description of the station location, such as your town.
    location = "Savannah, GA"
   
    # Latitude in decimal degrees. Negative for southern hemisphere.
    latitude = 31.919095
    # Longitude in decimal degrees. Negative for western hemisphere.
    longitude = -81.075874
   
    # Altitude of the station, with the unit it is in. This is used only
    # if the hardware cannot supply a value.
    altitude = 14, foot    # Choose 'foot' or 'meter' for unit
   
    # Set to type of station hardware. There must be a corresponding stanza
    # in this file, which includes a value for the 'driver' option.
    station_type = Vantage
   
    # If you have a website, you may specify an URL
    station_url = XXXXXX
   
    # The start of the rain year (1=January; 10=October, etc.). This is
    # downloaded from the station if the hardware supports it.
    rain_year_start = 1
   
    # Start of week (0=Monday, 6=Sunday)
    week_start = 0

##############################################################################

[Vantage]
    # This section is for the Davis Vantage series of weather stations.
   
    # Connection type: serial or ethernet
    #  serial (the classic VantagePro)
    #  ethernet (the WeatherLinkIP or Serial-Ethernet bridge)
    type = serial
   
    # If the connection type is serial, a port must be specified:
    #   Debian, Ubuntu, Redhat, Fedora, and SuSE:
    #     /dev/ttyUSB0 is a common USB port name
    #     /dev/ttyS0   is a common serial port name
    #   BSD:
    #     /dev/cuaU0   is a common serial port name
    port = /dev/ttyUSB0
   
    # If the connection type is ethernet, an IP Address/hostname is required:
    host = 1.2.3.4
   
    ######################################################
    # The rest of this section rarely needs any attention.
    # You can safely leave it "as is."
    ######################################################
   
    # Serial baud rate (usually 19200)
    baudrate = 19200
   
    # TCP port (when using the WeatherLinkIP)
    tcp_port = 22222
   
    # TCP send delay (when using the WeatherLinkIP):
    tcp_send_delay = 0.5
   
    # The type of LOOP packet to request: 1 = LOOP1; 2 = LOOP2; 3 = both
    loop_request = 1
   
    # The id of your ISS station (usually 1). If you use a wind meter connected
    # to a anemometer transmitter kit, use its id
    iss_id = 1
   
    # How long to wait for a response from the station before giving up (in
    # seconds; must be greater than 2)
    timeout = 4
   
    # How long to wait before trying again (in seconds)
    wait_before_retry = 1.2
   
    # How many times to try before giving up:
    max_tries = 4
   
    # Vantage model Type: 1 = Vantage Pro; 2 = Vantage Pro2
    model_type = 2
   
    # The driver to use:
    driver = weewx.drivers.vantage

##############################################################################

[Simulator]
    # This section is for the weewx weather station simulator.
   
    # The time (in seconds) between LOOP packets.
    loop_interval = 2.5
   
    # The simulator mode can be either 'simulator' or 'generator'.
    # Real-time simulator. Sleep between each LOOP packet.
    mode = simulator
    # Generator.  Emit LOOP packets as fast as possible (useful for testing).
    #mode = generator
   
    # The start time. Format is YYYY-mm-ddTHH:MM. If not specified, the
    # default is to use the present time.
    #start = 2011-01-01T00:00
   
    # The driver to use.
    driver = weewx.drivers.simulator

##############################################################################

#   This section is for uploading data to Internet sites

[StdRESTful]
   
    # Uncomment and change to override logging for uploading services.
    # log_success = True
    # log_failure = True
   
    [[StationRegistry]]
        # To register this weather station at weewx.com, set this to true, and
        # set option 'station_url', located in the [Station] section above.
        register_this_station = True
   
    [[AWEKAS]]
        # This section is for configuring posts to AWEKAS.
       
        # If you wish to post to AWEKAS, set the option 'enable' to true, then
        # specify a username and password.
        # Use quotes around the password to guard against parsing errors.
        enable = false
        username = XXXXXX
        password = XXXXXX
   
    [[CWOP]]
        # This section is for configuring posts to CWOP.
       
        # If you wish to post to CWOP, set the option 'enable' to true,
        # then specify the station ID (e.g., CW1234).
        enable = false
        station = XXXXXX
        # If this is an APRS (radio amateur) station, specify the
        # passcode (e.g., 12345). Otherwise, ignore.
        passcode = XXXXXX
   
    [[PWSweather]]
        # This section is for configuring posts to PWSweather.com.
       
        # If you wish to post to PWSweather.com, set the option 'enable' to
        # true, then specify a station and password.
        # Use quotes around the password to guard against parsing errors.
        enable = false
        station = XXXXXX
        password = XXXXXX
   
    [[WOW]]
        # This section is for configuring posts to WOW.
       
        # If you wish to post to WOW, set the option 'enable' to true, then
        # specify a station and password.
        # Use quotes around the password to guard against parsing errors.
        enable = false
        station = XXXXXX
        password = XXXXXX
   
    [[Wunderground]]
        # This section is for configuring posts to the Weather Underground.
       
        # If you wish to post to the Weather Underground, set the option
        # 'enable' to true,  then specify a station (e.g., 'KORHOODR3'). Use
        # the station key (find it at
        # https://www.wunderground.com/member/devices) for the password.
        enable = false
        station = XXXXXX
        password = XXXXXX
       
        # Set the following to True to have weewx use the WU "Rapidfire"
        # protocol. Not all hardware can support it. See the User's Guide.
        rapidfire = False

##############################################################################

#   This section specifies what reports, using which skins, to generate.

[StdReport]
   
    # Where the skins reside, relative to WEEWX_ROOT
    SKIN_ROOT = skins
   
    # Where the generated reports should go, relative to WEEWX_ROOT
    HTML_ROOT = /var/www/html/weewx
   
    # Uncomment and change to override logging for reports.
    # log_success = True
    # log_failure = True
   
    # The database binding indicates which data should be used in reports.
    data_binding = wx_binding
   
    # Each of the following subsections defines a report that will be run.
    # See the customizing guide to change the units, plot types and line
    # colors, modify the fonts, display additional sensor data, and other
    # customizations. Many of those changes can be made here by overriding
    # parameters, or by modifying templates within the skin itself.
   
    [[SeasonsReport]]
        # The SeasonsReport uses the 'Seasons' skin, which contains the
        # images, templates and plots for the report.
        skin = Seasons
        enable = true
   
    [[SmartphoneReport]]
        # The SmartphoneReport uses the 'Smartphone' skin, and the images and
        # files are placed in a dedicated subdirectory.
        skin = Smartphone
        enable = false
        HTML_ROOT = /var/www/html/weewx/smartphone
   
    [[MobileReport]]
        # The MobileReport uses the 'Mobile' skin, and the images and files
        # are placed in a dedicated subdirectory.
        skin = Mobile
        enable = false
        HTML_ROOT = /var/www/html/weewx/mobile
   
    [[StandardReport]]
        # This is the old "Standard" skin. By default, it is not enabled.
        skin = Standard
        enable = false
   
    [[FTP]]
        # FTP'ing the results to a webserver is treated as just another report,
        # albeit one with an unusual report generator!
        skin = Ftp
       
        # If you wish to use FTP, set "enable" to "true", then fill out the
        # next four lines.
        # Use quotes around the password to guard against parsing errors.
        enable = false
        user = XXXXXX
        password = XXXXXX
        server = XXXXXX    # The ftp server name, e.g, www.myserver.org
        path = replace_me    # The destination directory, e.g., /weather
       
        # Set to True for an FTP over TLS (FTPS) connection. Not all servers
        # support this.
        secure_ftp = False
       
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = /var/www/html/weewx
       
        # Most FTP servers use port 21.
        port = 21
       
        # Set to 1 to use passive mode, zero for active mode
        passive = 1
   
    [[RSYNC]]
        # rsync'ing to a webserver is treated as just another report.
        skin = Rsync
       
        # If you wish to use rsync, you must configure passwordless ssh using
        # public/private key authentication from the user account that weewx
        # runs to the user account on the remote machine where the files
        # will be copied.
        #
        # If you wish to use rsync, set "enable" to "true", then
        # fill out server, user, and path.
        # The server should appear in your .ssh/config file.
        # The user is the username used in the identity file.
        # The path is the destination directory, such as /var/www/html/weather.
        # Be sure that the user has write permissions on the destination!
        enable = false
        server = XXXXXX
        user = XXXXXX
        path = replace_me
       
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = /var/www/html/weewx
       
        # Rsync can be configured to remove files from the remote server if
        # they don't exist under HTML_ROOT locally. USE WITH CAUTION: if you
        # make a mistake in the remote path, you could could unintentionally
        # cause unrelated files to be deleted. Set to 1 to enable remote file
        # deletion, zero to allow files to accumulate remotely.
        delete = 0
   
    # Options in the [[Defaults]] section below will apply to all reports.
    # What follows are a few of the more popular options you may want to
    # uncomment, then change.
    [[Defaults]]
       
        # Which language to use for all reports. Not all skins support all
        # languages.  You can override this for individual reports.
        lang = en
       
        # Which unit system to use for all reports. Choices are 'us', 'metric',
        # or 'metricwx'.  You can override this for individual reports.
        unit_system = us
       
        [[[Units]]]
           
            # Option "unit_system" above sets the general unit system, but
            # overriding specific unit groups is possible. These are popular
            # choices. Uncomment and set as appropriate.  The unit is always
            # in the singular, e.g., 'mile_per_hour', NOT 'miles_per_hour'
            [[[[Groups]]]]
                # group_altitude     = meter              # Options are 'foot' or 'meter'
                # group_pressure     = mbar               # Options are 'inHg', 'mmHg', 'mbar', or 'hPa'
                # group_rain         = mm                 # Options are 'inch', 'cm', or 'mm'
                # group_rainrate     = mm_per_hour        # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour'
                # group_temperature  = degree_C           # Options are 'degree_C', 'degree_F', or 'degree_K'
                # The following line is used to keep the above lines indented
                # properly. It can be ignored.
                unused = unused
           
            # Uncommenting the following section frequently results in more
            # attractive formatting of times and dates, but may not work in
            # your locale.
            [[[[TimeFormats]]]]
                # day        = %H:%M
                # week       = %H:%M on %A
                # month      = %d-%b-%Y %H:%M
                # year       = %d-%b-%Y %H:%M
                # rainyear   = %d-%b-%Y %H:%M
                # current    = %d-%b-%Y %H:%M
                # ephem_day  = %H:%M
                # ephem_year = %d-%b-%Y %H:%M
                # The following line is used to keep the above lines indented
                # properly. It can be ignored.
                unused = unused
       
        [[[Labels]]]
            # Users frequently change the labels for these observation types.
            [[[[Generic]]]]
                # inHumidity     = Inside Humidity
                # inTemp         = Inside Temperature
                # outHumidity    = Outside Humidity
                # outTemp        = Outside Temperature
                # extraTemp1     = Temperature1
                # extraTemp2     = Temperature2
                # extraTemp3     = Temperature3
                # The following line is used to keep the above lines indented
                # properly. It can be ignored.
                unused = unused

##############################################################################

#   This service converts the unit system coming from the hardware to a unit
#   system in the database.

[StdConvert]
   
    # The target_unit affects only the unit system in the database. Once
    # chosen it cannot be changed without converting the entire database.
    # Modification of target_unit after starting weewx will result in
    # corrupt data - the database will contain a mix of US and METRIC data.
    #
    # The value of target_unit does not affect the unit system for
    # reporting - reports can display US, Metric, or any combination of units.
    #
    # In most cases, target_unit should be left as the default: US
    #
    # In particular, those migrating from a standard wview installation
    # should use US since that is what the wview database contains.
   
    # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING!
    target_unit = US    # Options are 'US', 'METRICWX', or 'METRIC'

##############################################################################

#   This section can adjust data using calibration expressions.

[StdCalibrate]
   
    [[Corrections]]
        # For each type, an arbitrary calibration expression can be given.
        # It should be in the units defined in the StdConvert section.
        # Example:
        foo = foo + 0.2

##############################################################################

#   This section is for quality control checks. If units are not specified,
#   values must be in the units defined in the StdConvert section.

[StdQC]
   
    [[MinMax]]
        barometer = 26, 32.5, inHg
        pressure = 24, 34.5, inHg
        outTemp = -40, 120, degree_F
        inTemp = 10, 120, degree_F
        outHumidity = 0, 100
        inHumidity = 0, 100
        windSpeed = 0, 120, mile_per_hour
        rain = 0, 10, inch

##############################################################################

#   This section controls the origin of derived values.

[StdWXCalculate]
   
    [[Calculations]]
        # How to calculate derived quantities.  Possible values are:
        #  hardware        - use the value provided by hardware
        #  software        - use the value calculated by weewx
        #  prefer_hardware - use value provide by hardware if available,
        #                      otherwise use value calculated by weewx
       
        pressure = prefer_hardware
        altimeter = prefer_hardware
        appTemp = prefer_hardware
        barometer = prefer_hardware
        cloudbase = prefer_hardware
        dewpoint = prefer_hardware
        ET = prefer_hardware
        heatindex = prefer_hardware
        humidex = prefer_hardware
        inDewpoint = prefer_hardware
        maxSolarRad = prefer_hardware
        rainRate = prefer_hardware
        windchill = prefer_hardware
        windrun = prefer_hardware

##############################################################################

#   For hardware that supports it, this section controls how often the
#   onboard clock gets updated.

[StdTimeSynch]
   
    # How often to check the weather station clock for drift (in seconds)
    clock_check = 14400
   
    # How much it can drift before we will correct it (in seconds)
    max_drift = 5

##############################################################################

#   This section is for configuring the archive service.

[StdArchive]
   
    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    archive_interval = 300
   
    # If possible, new archive records are downloaded from the station
    # hardware. If the hardware does not support this, then new archive
    # records will be generated in software.
    # Set the following to "software" to force software record generation.
    record_generation = hardware
   
    # Whether to include LOOP data in hi/low statistics.
    loop_hilo = True
   
    # Uncomment and change to override logging for archive operations.
    # log_success = True
    # log_failure = True
   
    # The data binding used to save archive records.
    data_binding = wx_binding

##############################################################################

#   This section binds a data store to a database.

[DataBindings]
   
    [[wx_binding]]
        # The database must match one of the sections in [Databases].
        # This is likely to be the only option you would want to change.
        database = archive_sqlite
        # The name of the table within the database.
        table_name = archive
        # The manager handles aggregation of data for historical summaries.
        manager = weewx.manager.DaySummaryManager
        # The schema defines the structure of the database.
        # It is *only* used when the database is created.
        schema = schemas.wview_extended.schema

##############################################################################

#   This section defines various databases.

[Databases]
   
    # A SQLite database is simply a single file.
    [[archive_sqlite]]
        database_name = weewx.sdb
        database_type = SQLite
   
    # MySQL
    [[archive_mysql]]
        database_name = weewx
        database_type = MySQL

##############################################################################

#   This section defines defaults for the different types of databases.

[DatabaseTypes]
   
    # Defaults for SQLite databases.
    [[SQLite]]
        driver = weedb.sqlite
        # Directory in which database files are located, relative to WEEWX_ROOT
        SQLITE_ROOT = /var/lib/weewx
   
    # Defaults for MySQL databases.
    [[MySQL]]
        driver = weedb.mysql
        # The host where the database is located.
        host = localhost
        # The user name for logging in to the host.
        user = XXXXXX
        # Use quotes around the password to guard against parsing errors.
        password = XXXXXX

##############################################################################

#   This section configures the internal weewx engine.

[Engine]
   
    # This section specifies which services should be run and in what order.
    [[Services]]
        prep_services = weewx.engine.StdTimeSynch
        data_services = ,
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        xtype_services = weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta
        archive_services = weewx.engine.StdArchive
        restful_services = weewx.restx.StdStationRegistry, weewx.restx.StdWunderground, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport
scott@spi-1:~ $


scott pierce

unread,
Feb 2, 2025, 3:15:45 PM2/2/25
to weewx-user
and here are the results when I run weectl device...still showing an unknown hardware issue:

@-1:~ $ weectl device
Using configuration file /etc/weewx/weewx.conf
Using driver weewx.drivers.vantage.
Using Vantage driver version 3.6.2 (weewx.drivers.vantage)
Unable to wake up console... sleeping
Unable to wake up console... retrying
Traceback (most recent call last):
  File "/usr/share/weewx/weectl.py", line 75, in <module>
    main()
  File "/usr/share/weewx/weectl.py", line 42, in main
    weectllib.device_actions.device()
  File "/usr/share/weewx/weectllib/device_actions.py", line 91, in device
    configurator.configure(config_dict)
  File "/usr/share/weewx/weewx/drivers/__init__.py", line 71, in configure
    self.do_options(options, parser, config_dict, not options.noprompt)
  File "/usr/share/weewx/weewx/drivers/vantage.py", line 2238, in do_options
    station = Vantage(**config_dict[DRIVER_NAME])
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/weewx/weewx/drivers/vantage.py", line 540, in __init__

    log.debug("Hardware name: %s", self.hardware_name)
                                   ^^^^^^^^^^^^^^^^^^

  File "/usr/share/weewx/weewx/drivers/vantage.py", line 1416, in hardware_name
    raise weewx.UnsupportedFeature("Unknown hardware type %d" % self.hardware_type)
weewx.UnsupportedFeature: Unknown hardware type 10
@1:~ $

vince

unread,
Feb 2, 2025, 4:10:06 PM2/2/25
to weewx-user
weewx.service: Main process exited, code=exited, status=4/NOPERMISSION generally means the user running the command is not in the required unix groups, which can be a little tricky to get right especially as a new linuc user.

Try ‘groups’ to see which groups your account is in, and ‘groups weewx’ to see which groups the weewx user is in. Your shell prompt is a bit unusual so I can’t see which account you are using in your log excerpts.

scott pierce

unread,
Feb 2, 2025, 6:22:56 PM2/2/25
to weewx-user
Here is what I have:
scott@spi-1:~ $ groups
scott adm dialout cdrom sudo audio video plugdev games users input render netdev lpadmin weewx gpio i2c spi
scott@spi-1:~ $ 

and

scott@spi-1:~ $ groups weewx
weewx : weewx

scott pierce

unread,
Feb 2, 2025, 7:01:50 PM2/2/25
to weewx-user
Ran the journal log and it produced this:

Feb 01 16:48:38 scott systemd[1]: Started weewx.service - WeeWX.
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Initializing weewxd version 5.1.0
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Command line: /usr/share/weewx/weewxd.py /etc/weewx/weewx.conf
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Using Python: 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Located at:   /usr/bin/python3
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Platform:     Linux-6.6.74+rpt-rpi-2712-aarch64-with-glibc2.36
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Locale:       'en_US.UTF-8'
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Entry path:   /usr/share/weewx/weewxd.py
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: WEEWX_ROOT:   /etc/weewx
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Config file:  /etc/weewx/weewx.conf
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: User module:  /etc/weewx/bin/user
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Debug:        0
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: User:         weewx
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Group:        weewx
Feb 01 16:48:38 scott weewxd[3395]: INFO __main__: Groups:       weewx
Feb 01 16:48:38 scott weewxd[3395]: INFO weewx.engine: Loading station type Vantage (weewx.drivers.vantage)
Feb 01 16:48:38 scott weewxd[3395]: ERROR weewx.engine: Import of driver failed: [Errno 2] could not open port /dev/ttyUSB0: [Errno 2] No such file or directory: '/dev/ttyUSB0' (<class 'serial.serialutil.SerialException'>)
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****  Traceback (most recent call last):
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 322, in open
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****      self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****  FileNotFoundError: [Errno 2] No such file or directory: '/dev/ttyUSB0'

Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****  During handling of the above exception, another exception occurred:
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****  Traceback (most recent call last):
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/engine.py", line 115, in setupStation
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****      self.console = loader_function(config_dict, self)
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 32, in loader
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****      return VantageService(engine, config_dict)
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 2046, in __init__
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****      Vantage.__init__(self, **config_dict[DRIVER_NAME])
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 536, in __init__
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****      self.port.openPort()
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 319, in openPort
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****      self.serial_port = serial.Serial(self.port, self.baudrate, timeout=self.timeout)
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****    File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 244, in __init__
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****      self.open()
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 325, in open
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****      raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL weewx.engine:     ****  serial.serialutil.SerialException: [Errno 2] could not open port /dev/ttyUSB0: [Errno 2] No such file or directory: '/dev/ttyUSB0'
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL __main__: Unable to load driver: [Errno 2] could not open port /dev/ttyUSB0: [Errno 2] No such file or directory: '/dev/ttyUSB0'
Feb 01 16:48:38 scott weewxd[3395]: CRITICAL __main__:     ****  Exiting...
Feb 01 16:48:38 scott systemd[1]: weewx.service: Main process exited, code=exited, status=4/NOPERMISSION
Feb 01 16:48:38 scott systemd[1]: weewx.service: Failed with result 'exit-code'.
Feb 01 20:26:36 spi-1 systemd[1]: Started weewx.service - WeeWX.
Feb 01 20:26:36 spi-1 weewxd[6036]: INFO __main__: Initializing weewxd version 5.1.0
Feb 01 20:26:36 spi-1 weewxd[6036]: INFO __main__: Command line: /usr/share/weewx/weewxd.py /etc/weewx/weewx.conf
Feb 01 20:26:36 spi-1 weewxd[6036]: INFO __main__: Using Python: 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]
Feb 01 20:26:36 spi-1 weewxd[6036]: INFO __main__: Located at:   /usr/bin/python3
Feb 01 20:26:36 spi-1 weewxd[6036]: INFO __main__: Platform:     Linux-6.6.74+rpt-rpi-2712-aarch64-with-glibc2.36
Feb 01 20:26:36 spi-1 weewxd[6036]: INFO __main__: Locale:       'en_US.UTF-8'
Feb 01 20:26:36 spi-1 weewxd[6036]: INFO __main__: Entry path:   /usr/share/weewx/weewxd.py
lines 1-56

To an uneducated brain, this looks like a problem with the driver for the USB data logger from the Envoy.  I have NO idea what port the USB is going to on the Rpi so I just selected "the most common" option in the auto install process.  Could this be the issue?
Thanks
Scott

vince

unread,
Feb 2, 2025, 7:09:27 PM2/2/25
to weewx-user
Sure it could, try “lsusb” to list the usb devices found. You might need to preface it with sudo.  Alternately unplug it, wait a couple seconds, plug it back in and run “sudo dmesg” to see kernel messages that usually have enough info to figure it out.

scott pierce

unread,
Feb 2, 2025, 7:15:01 PM2/2/25
to weewx-user
scott@spi-1:/etc/weewx $ sudo lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 045e:07f8 Microsoft Corp. Wired Keyboard 600 (model 1576)
Bus 003 Device 002: ID 046d:c077 Logitech, Inc. Mouse
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 10c4:ea61 Silicon Labs CP210x UART Bridge
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Does this help?

vince

unread,
Feb 2, 2025, 7:25:55 PM2/2/25
to weewx-user
Do the unplug plugin test and show ‘sudo dmesg’ please
Message has been deleted

scott pierce

unread,
Feb 2, 2025, 7:38:57 PM2/2/25
to weewx-user
[    3.419141] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    3.419150] Bluetooth: BNEP filters: protocol multicast
[    3.419158] Bluetooth: BNEP socket layer initialized
[    3.448003] Adding 524272k swap on /var/swap.  Priority:-2 extents:8 across:2228224k SS
[    3.608444] macb 1f00100000.ethernet eth0: PHY [1f00100000.ethernet-ffffffff:01] driver [Broadcom BCM54213PE] (irq=POLL)
[    3.608455] macb 1f00100000.ethernet eth0: configuring for phy/rgmii-id link mode
[    3.619475] pps pps0: new PPS source ptp0
[    3.619574] macb 1f00100000.ethernet: gem-ptp-timer ptp clock registered.
[    3.726149] Bluetooth: hci0: BCM: features 0x2f
[    3.727482] Bluetooth: hci0: BCM43455 37.4MHz Raspberry Pi 3+-0190
[    3.727486] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0382
[    3.727823] Bluetooth: hci0: BCM: Using default device address (43:45:c0:00:1f:ac)
[    3.744882] Bluetooth: MGMT ver 1.22
[    3.748127] NET: Registered PF_ALG protocol family
[    3.881694] Bluetooth: hci0: Bad flag given (0x1) vs supported (0x0)
[    4.174074] Bluetooth: RFCOMM TTY layer initialized
[    4.174090] Bluetooth: RFCOMM socket layer initialized
[    4.174100] Bluetooth: RFCOMM ver 1.11
[    7.710953] macb 1f00100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[ 5561.979006] cp210x ttyUSB0: failed set request 0x12 status: -110
[29984.768718] usb 1-1: USB disconnect, device number 2
[29984.768964] cp210x ttyUSB0: failed set request 0x7 status: -19
[29984.768969] cp210x ttyUSB0: failed set request 0x12 status: -19
[29984.768972] cp210x ttyUSB0: failed set request 0x0 status: -19
[29984.769535] cp210x ttyUSB0: cp210x converter now disconnected from ttyUSB0
[29984.769564] cp210x 1-1:1.0: device disconnected
[30002.060850] usb 1-1: new full-speed USB device number 3 using xhci-hcd
[30002.229887] usb 1-1: New USB device found, idVendor=10c4, idProduct=ea61, bcdDevice= 1.00
[30002.229894] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[30002.229898] usb 1-1: Product: CP2102 USB to UART Bridge Controller
[30002.229901] usb 1-1: Manufacturer: Silicon Labs
[30002.229903] usb 1-1: SerialNumber: 1545623535
[30002.236955] cp210x 1-1:1.0: cp210x converter detected
[30002.244987] usb 1-1: cp210x converter now attached to ttyUSB0


It returned a lot more information, but i figured the bottom lines are the one's we're interested in.
Scott

vince

unread,
Feb 2, 2025, 7:55:08 PM2/2/25
to weewx-user
Sure looks like /dev/ttyUSB0 to me.

Lets eliminate group membership - give https://github.com/weewx/weewx/wiki/Understanding-permissions#more-details-about-which-groups-can-do-what a quick read and note the mention of group 'dialout' being the typical one needed for accessing USB devices.  Using the example above there, the command to add the weewx user to group dialout would be "sudo usermod -a -G dialout weewx" and you likely should restart weewx afterward. See if that cleans up your permission denied errors.

scott pierce

unread,
Feb 2, 2025, 8:25:42 PM2/2/25
to weewx-user
Hey,
Looks like that may have done it!  Not seeing those errors any longer:
Here is what I get now when I run weectl device:

scott@spi-1:~ $ weectl device

Using configuration file /etc/weewx/weewx.conf
Using driver weewx.drivers.vantage.
Using Vantage driver version 3.6.2 (weewx.drivers.vantage)
scott@spi-1:~ $ 

I'm going to keep drilling down, but I "think" this is a big step.
Thanks,  Vince, for your help!!!

Scott

scott pierce

unread,
Feb 2, 2025, 8:28:36 PM2/2/25
to weewx-user
Spoke too soon...

here is the latest error log.  I ran this same command right after restarting and there were no errors...I guess it needed time to run more processes:

scott@spi-1:~ $ sudo systemctl status weewx

× weewx.service - WeeWX
     Loaded: loaded (/lib/systemd/system/weewx.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Sun 2025-02-02 20:23:01 EST; 3min 30s ago
   Duration: 14min 43.920s
       Docs: https://weewx.com/docs
    Process: 1280 ExecStart=weewxd /etc/weewx/weewx.conf (code=exited, status=4)
   Main PID: 1280 (code=exited, status=4)
        CPU: 1.365s

Feb 02 20:23:01 spi-1 weewxd[1280]: CRITICAL weewx.engine:     ****      self.hardware_type = self._determine_hardware()
Feb 02 20:23:01 spi-1 weewxd[1280]: CRITICAL weewx.engine:     ****                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 02 20:23:01 spi-1 weewxd[1280]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 1435, in _determine_hardware
Feb 02 20:23:01 spi-1 weewxd[1280]: CRITICAL weewx.engine:     ****      raise weewx.WeeWxIOError("Unable to read hardware type")
Feb 02 20:23:01 spi-1 weewxd[1280]: CRITICAL weewx.engine:     ****  weewx.WeeWxIOError: Unable to read hardware type
Feb 02 20:23:01 spi-1 weewxd[1280]: CRITICAL __main__: Unable to load driver: Unable to read hardware type
Feb 02 20:23:01 spi-1 weewxd[1280]: CRITICAL __main__:     ****  Exiting...
Feb 02 20:23:01 spi-1 systemd[1]: weewx.service: Main process exited, code=exited, status=4/NOPERMISSION
Feb 02 20:23:01 spi-1 systemd[1]: weewx.service: Failed with result 'exit-code'.
Feb 02 20:23:01 spi-1 systemd[1]: weewx.service: Consumed 1.365s CPU time.


Scott

vince

unread,
Feb 2, 2025, 9:36:37 PM2/2/25
to weewx-user
It's really difficult to read partial truncated logs.

All I can suggest is (a) verify which groups 'weewx' is in and (b) perhaps try to run weewx interactively - just run "weewxd" and it should do the right thing thing.  You'd need to hit control-C once or twice to kill the process.    I don't have that hardware so I can't try to recreate it, but it still looks like a user group membership thing best guess.

Graham Eddy

unread,
Feb 2, 2025, 11:46:26 PM2/2/25
to WeeWX User
weewx is reporting permission error. it seems to be using /dev/ttyUSB0 ➔ check perms on that file:
  $ ls -l /dev/ttyUSB0
it will probably show group ‘dialout’ has read/write on it, so make sure user ‘weewx’ is in that group
  e.g. $ sudo adduser weewx dialout
⊣GE⊢

scott pierce

unread,
Feb 3, 2025, 11:33:57 AM2/3/25
to weewx-user
Yep, WeeWx is already a member of that group. Here is the latest systems status I just ran.  Seems the unknown hardware issue is still there.  
Is there another log or status that I can run that will provide more/complete information?
Thanks
Scott

     Loaded: loaded (/lib/systemd/system/weewx.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Mon 2025-02-03 11:17:57 EST; 11min ago
   Duration: 9min 1.723s
       Docs: https://weewx.com/docs
    Process: 1091 ExecStart=weewxd /etc/weewx/weewx.conf (code=exited, status=4)
   Main PID: 1091 (code=exited, status=4)
        CPU: 474ms

Feb 03 11:17:57 spi-1 weewxd[1091]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 540, in __init__
Feb 03 11:17:57 spi-1 weewxd[1091]: CRITICAL weewx.engine:     ****      log.debug("Hardware name: %s", self.hardware_name)
Feb 03 11:17:57 spi-1 weewxd[1091]: CRITICAL weewx.engine:     ****                                     ^^^^^^^^^^^^^^^^^^
Feb 03 11:17:57 spi-1 weewxd[1091]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 1416, in hardware_name
Feb 03 11:17:57 spi-1 weewxd[1091]: CRITICAL weewx.engine:     ****      raise weewx.UnsupportedFeature("Unknown hardware type %d" % self.hardware_type)
Feb 03 11:17:57 spi-1 weewxd[1091]: CRITICAL weewx.engine:     ****  weewx.UnsupportedFeature: Unknown hardware type 10
Feb 03 11:17:57 spi-1 weewxd[1091]: CRITICAL __main__: Unable to load driver: Unknown hardware type 10
Feb 03 11:17:57 spi-1 weewxd[1091]: CRITICAL __main__:     ****  Exiting...
Feb 03 11:17:57 spi-1 systemd[1]: weewx.service: Main process exited, code=exited, status=4/NOPERMISSION
Feb 03 11:17:57 spi-1 systemd[1]: weewx.service: Failed with result 'exit-code'.



Tom Keffer

unread,
Feb 3, 2025, 12:06:53 PM2/3/25
to weewx...@googlegroups.com
There have been a few other incidents of "Unknown hardware type 10". The solution seems to be to clear the logger. Try this procedure: 

 weectl device --dump
 weectl device --clear-memory

The "--dump" command will attempt to salvage any data on the logger. It will probably fail because of the "unknown hardware type" error, but it's worth a try.

-tk

--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.

scott pierce

unread,
Feb 3, 2025, 12:26:34 PM2/3/25
to weewx-user
Doesn't look like it worked.

× weewx.service - WeeWX

     Loaded: loaded (/lib/systemd/system/weewx.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Mon 2025-02-03 12:18:41 EST; 5min ago
   Duration: 5min 21.472s
       Docs: https://weewx.com/docs
    Process: 1103 ExecStart=weewxd /etc/weewx/weewx.conf (code=exited, status=4)
   Main PID: 1103 (code=exited, status=4)
        CPU: 411ms

Feb 03 12:18:41 spi-1 weewxd[1103]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 1444, in _setup
Feb 03 12:18:41 spi-1 weewxd[1103]: CRITICAL weewx.engine:     ****      self.hardware_type = self._determine_hardware()
Feb 03 12:18:41 spi-1 weewxd[1103]: CRITICAL weewx.engine:     ****                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
Feb 03 12:18:41 spi-1 weewxd[1103]: CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 1435, in _determine_hardware
Feb 03 12:18:41 spi-1 weewxd[1103]: CRITICAL weewx.engine:     ****      raise weewx.WeeWxIOError("Unable to read hardware type")
Feb 03 12:18:41 spi-1 weewxd[1103]: CRITICAL weewx.engine:     ****  weewx.WeeWxIOError: Unable to read hardware type
Feb 03 12:18:41 spi-1 weewxd[1103]: CRITICAL __main__: Unable to load driver: Unable to read hardware type
Feb 03 12:18:41 spi-1 weewxd[1103]: CRITICAL __main__:     ****  Exiting...
Feb 03 12:18:41 spi-1 systemd[1]: weewx.service: Main process exited, code=exited, status=4/NOPERMISSION
Feb 03 12:18:41 spi-1 systemd[1]: weewx.service: Failed with result 'exit-code'.
~

Tom Keffer

unread,
Feb 3, 2025, 12:37:32 PM2/3/25
to weewx...@googlegroups.com
Now you're back to a permissions error. 

scott pierce

unread,
Feb 3, 2025, 2:39:21 PM2/3/25
to weewx-user
This is getting a tad frustrating!

vince

unread,
Feb 3, 2025, 2:50:44 PM2/3/25
to weewx-user
ok - lets go back to the beginning.  Is weewx getting data from your station and continuing to run other than these messages, or is it not ?   In other words do we have something breaking it from working, or is this just an annoyance in the logging/reporting stuff ?   If it's working - you 'could' just ignore it.  If it is 'not' working, we should keep trying to fix whatever is going on.

Again going back to one of your posts, you reported....

Here is what I have:
scott@spi-1:~ $ groups
scott 
adm dialout cdrom sudo audio video plugdev games users input render netdev lpadmin weewx gpio i2c spi

So if you wanted to put weewx into the same list of groups that a default pi user is in, you would do it via something like:

for group in adm dialout cdrom sudo audio video plugdev games users input render netdev lpadmin weewx gpio i2c spi
do
  sudo usermod -aG $group weewx
done

Then run 'groups weewx' to verify it's in all the default pi groups.  Then stop/restart weewx and test again.  If that doesn't work, personally I'd restart the pi, leaving it powered down for 30 seconds, for lack of a better idea I suppose.

Only other thing I can think of is whether you're using some whacked niche os or if it's the default Raspi OS (which is known to work).

Warren Gill

unread,
Feb 3, 2025, 3:14:41 PM2/3/25
to weewx...@googlegroups.com
The system install should have put a udev rule in place. This causes the kernel to create an alias to the device whenever it detects it plugging in (or at boot). Because if you have more than one serial device the envoy could get a different device name (ttyUSB1, ttyUSB3, etc.) every time it plugs in (like after a power bounce).
You can read the rules at /usr/lib/udev/rules.d/60-weewx.rules. The idVendor and idProduct values match what you saw in the lsdev command.

## udev rule
SUBSYSTEM=="tty",ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea61",MODE="0664",GROUP="weewx",SYMLINK+="vantage"

## lsusb
Bus 001 Device 002: ID 10c4:ea61 Silicon Labs CP210x UART Bridge

If that worked you should see  /dev/ttyUSB0 with group weewx and /dev/vantage as a symlink to ttyUSB0.

#> ls -l /dev |grep USB
crw-rw-r-- 1 root weewx   188,   0 Feb  3 14:10 ttyUSB0
lrwxrwxrwx 1 root root           7 Jan 31 09:59 vantage -> ttyUSB0

So... your weewx.conf file should point to /dev/vantage

    # If the connection type is serial, a port must be specif
    #   Debian, Ubuntu, Redhat, Fedora, and SuSE:
    #     /dev/ttyUSB0 is a common USB port name
    #     /dev/ttyS0   is a common serial port name
    #   BSD:
    #     /dev/cuaU0   is a common serial port name
    port = /dev/vantage



vince

unread,
Feb 3, 2025, 7:05:50 PM2/3/25
to weewx-user
Worth a try.  I do like the "ls -l /dev | grep USB" command to better see what's what in /dev given that it looked like he has a USB keyboard and mouse plugged in.
Reply all
Reply to author
Forward
0 new messages