After your suggestion, I went back to the NAS and double confirmed that write was enabled. But I could only do this via the NAS gui. I will need to do more research into the location of the conf file having to do with this implementation of FTP.
In the mean time I went to working on Rsync. At first I was blocked up with the passwordless access required by weewx. I eventually got that resolved and now have exactly the same problem... I can manually rsync from the rPi to the NAS without issue, but when weewx tries, it fails. I worked on all sorts of permission and file owner combinations in the relevant strategic locations and weewx always failed. Now I have it running, but only in a temporary workaround mode, meaning I simply setup a cronjob on the rPi to Rsync the html folder over to the NAS every time weewx post another report. Why weewx can not do the same thing is really a head scratcher. On Thursday, December 11, 2025 at 11:31:48 AM UTC-7 vince wrote: > I recreated your error exactly between a weewx 5.2 vagrant vm and another > pi that I had on my LAN. I could log interactively into the ftp server, > but not write to it even though os permissions were ok. > > The issue was the ftp server software configuration (vsftpd in this case) > which defaults to letting you log in, but not letting you write. > Uncommenting one line in /etc/vsftpd.conf and restarting vsftpd fixed > things. See the default answer in > https://askubuntu.com/questions/410947/permission-denied-in-ftp-even-though-im-the-owner > for > details. > > Also - I fiddled with active or passive mode a little. If you see "Failed > uploading...... Reason: '500 Illegal PORT command.'" that means you're > set in weewx to be in active mode and the server wants passive. That > happened to me too. Setting weewx back to the default passive worked fine > afterwards. The FTP uploader worked fine at that point. > > I can't speak to how you might set up the ftp server on your NAS, but > that's where the issue is. > > On Thursday, December 11, 2025 at 10:00:58 AM UTC-8 F Y wrote: > >> Thanks for the input ... this is an interesting challenge for sure and I >> appreciate the help. I understand enough about the nuances of NAT's and >> double NAT's, etc to be dangerous and I understand what you are implying >> regarding what "may" be in the way while using the more complicated path. >> But that then leaves me still wondering what underlying communication >> methods/commands may be taking place within the weewx script that makes it >> eventually fail, while a simple manual FTP entry at the terminal does the >> job without issue. >> >> As to Rsync, you have read my mind and this is the next thing to try if I >> can not get FTP to work. >> >> On Wednesday, December 10, 2025 at 8:40:42 PM UTC-7 vince wrote: >> >>> FTP through NAT and FTP’s use of ephemeral ports can be a pain to handle >>> on the NATing system in the flow between client and server. If there >>> is a function like a stateful firewall on the NATing device it gets more >>> difficult. Stateful firewalls are not always straightforward, >>> >>> If your client works ok to a server when both are on the same subnet >>> with no routes, vpm, or nat in between…and then fails when you go >>> client<==>server via a more complicated path, the issue is likely your more >>> complicated network setup. >>> >>> Can you enable ssh into the NAS and switch to using the Rsync uploader >>> perhaps ? That is simpler, faster, and more reliable than ancient FTP. >>> >>> On Wednesday, December 10, 2025 at 7:03:59 PM UTC-8 F Y wrote: >>> >>>> I figured that "unusual" ip address would come up. That is an ip >>>> address of one of the machines in my "tailnet", which is a mesh virtual >>>> VPN >>>> running thru "Tailscale" (tailscale.com). Since many of my machines >>>> are behind CGNAT, this is the only way to keep them connected remotely. >>>> >>>> In answer to your questions: >>>> >>>> >>>> - >>>> >>>> >>>> - Are your weewx system and your NAS on the same LAN ? >>>> >>>> >>>> - >>>> - They are, but they are communicating thru tailscale with >>>> their mesh ip addresses. The NAS and the rPi each have their own ip >>>> address in the 100.x.x.x segment >>>> - >>>> >>>> >>>> - What is the ip address of each ? >>>> >>>> >>>> - >>>> - As stated above, they each have their own address in that >>>> segment. It is not reachable by anyone but other machines in my >>>> tailnet >>>> ... all of which are in the 100.x.x.x segment >>>> - >>>> >>>> >>>> - Which ip address have you been connecting to when you run ftp >>>> manually ? >>>> >>>> >>>> - >>>> - I can connect manually to the 100.122.175.72 address, which is >>>> the NAS. Manual communication between rPi and the NAS is problem >>>> free. >>>> >>>> From the wee_report (above the logs) you will also see the connection >>>> made to "Diskstation1005". This IS the NAS at the 100.122.175.72 address. >>>> That report indicates a connection since it is able to read the >>>> destination folder and that it exists. However it then "quit" 's after a >>>> PASV command with a weird loopback address of 127.0.0.1, 218,66 and 78 on >>>> subsequient attempts >>>> >>>> The "visibility" of the NAS from the rPi is seamless. There is no DNS >>>> resolution of any sort. The weewx.conf file lists the FTP server simply >>>> with the 100.x.x.x address. I can ping the address from the rPi with >>>> solid >>>> results >>>> On Wednesday, December 10, 2025 at 6:37:06 PM UTC-7 vince wrote: >>>> >>>>> The address indicated in your logs of 100.122.175.72 is a 'very' >>>>> unusual address. A quick lookup at >>>>> https://en.wikipedia.org/wiki/Private_network says it's related to >>>>> carrier-grade NAT. >>>>> >>>>> >>>>> - Are your weewx system and your NAS on the same LAN ? >>>>> - What is the ip address of each ? >>>>> - Which ip address have you been connecting to when you run ftp >>>>> manually ? >>>>> >>>>> I wonder if you're doing a DNS lookup perhaps on your weewx system and >>>>> it's resolving to an external NAT'd address (which I would expect to >>>>> fail) >>>>> rather than to an internal not-NAT'd address which might work. >>>>> >>>>> >>>>> On Wednesday, December 10, 2025 at 5:16:41 PM UTC-8 F Y wrote: >>>>> >>>>>> After setting debug=2, this is the result of the still failing >>>>>> attempts to get FTP to connect from weewx: >>>>>> >>>>>> >>>>>> Restarting weewx after the weewx.conf change and running the report I >>>>>> get this: >>>>>> >>>>>> >>>>>> pi@raspberrypi:/var/log $ sudo /bin/wee_reports /etc/weewx/weewx.conf >>>>>> >>>>>> Generating as of last timestamp in the database. >>>>>> >>>>>> Using configuration file /etc/weewx/weewx.conf >>>>>> >>>>>> *get* '220 Diskstation1005 FTP server ready.\n' >>>>>> >>>>>> *resp* '220 Diskstation1005 FTP server ready.' >>>>>> >>>>>> *cmd* 'USER forrest' >>>>>> >>>>>> *put* 'USER forrest\r\n' >>>>>> >>>>>> *get* '331 Password required for forrest.\n' >>>>>> >>>>>> *resp* '331 Password required for forrest.' >>>>>> >>>>>> *cmd* 'PASS *************' >>>>>> >>>>>> *put* 'PASS *************\r\n' >>>>>> >>>>>> *get* '230 User forrest logged in.\n' >>>>>> >>>>>> *resp* '230 User forrest logged in.' >>>>>> >>>>>> *cmd* 'MKD /web/gsdglobal/Weather_GTB' >>>>>> >>>>>> *put* 'MKD /web/gsdglobal/Weather_GTB\r\n' >>>>>> >>>>>> *get* '550 /web/gsdglobal/Weather_GTB: File exists.\n' >>>>>> >>>>>> *resp* '550 /web/gsdglobal/Weather_GTB: File exists.' >>>>>> >>>>>> *cmd* 'TYPE I' >>>>>> >>>>>> *put* 'TYPE I\r\n' >>>>>> >>>>>> *get* '200 Type set to I.\n' >>>>>> >>>>>> *resp* '200 Type set to I.' >>>>>> >>>>>> *cmd* 'PASV' >>>>>> >>>>>> *put* 'PASV\r\n' >>>>>> >>>>>> *get* '227 Entering Passive Mode (127,0,0,1,218,66)\n' >>>>>> >>>>>> *resp* '227 Entering Passive Mode (127,0,0,1,218,66)' >>>>>> >>>>>> *cmd* 'QUIT' >>>>>> >>>>>> *put* 'QUIT\r\n' >>>>>> >>>>>> *get* '221 Goodbye. You uploaded 0 bytes and downloaded 0 bytes.\n' >>>>>> >>>>>> *resp* '221 Goodbye. You uploaded 0 bytes and downloaded 0 bytes.' >>>>>> >>>>>> *get* '220 Diskstation1005 FTP server ready.\n' >>>>>> >>>>>> *resp* '220 Diskstation1005 FTP server ready.' >>>>>> >>>>>> *cmd* 'USER forrest' >>>>>> >>>>>> *put* 'USER forrest\r\n' >>>>>> >>>>>> *get* '331 Password required for forrest.\n' >>>>>> >>>>>> *resp* '331 Password required for forrest.' >>>>>> >>>>>> *cmd* 'PASS *************' >>>>>> >>>>>> *put* 'PASS *************\r\n' >>>>>> >>>>>> *get* '230 User forrest logged in.\n' >>>>>> >>>>>> *resp* '230 User forrest logged in.' >>>>>> >>>>>> *cmd* 'MKD /web/gsdglobal/Weather_GTB' >>>>>> >>>>>> *put* 'MKD /web/gsdglobal/Weather_GTB\r\n' >>>>>> >>>>>> *get* '550 /web/gsdglobal/Weather_GTB: File exists.\n' >>>>>> >>>>>> *resp* '550 /web/gsdglobal/Weather_GTB: File exists.' >>>>>> >>>>>> *cmd* 'TYPE I' >>>>>> >>>>>> *put* 'TYPE I\r\n' >>>>>> >>>>>> *get* '200 Type set to I.\n' >>>>>> >>>>>> *resp* '200 Type set to I.' >>>>>> >>>>>> *cmd* 'PASV' >>>>>> >>>>>> *put* 'PASV\r\n' >>>>>> >>>>>> *get* '227 Entering Passive Mode (127,0,0,1,218,78)\n' >>>>>> >>>>>> *resp* '227 Entering Passive Mode (127,0,0,1,218,78)' >>>>>> >>>>>> *cmd* 'QUIT' >>>>>> >>>>>> *put* 'QUIT\r\n' >>>>>> >>>>>> *get* '221 Goodbye. You uploaded 0 bytes and downloaded 0 bytes.\n' >>>>>> >>>>>> *resp* '221 Goodbye. You uploaded 0 bytes and downloaded 0 bytes.' >>>>>> >>>>>> *get* '220 Diskstation1005 FTP server ready.\n' >>>>>> >>>>>> *resp* '220 Diskstation1005 FTP server ready.' >>>>>> >>>>>> *cmd* 'USER forrest' >>>>>> >>>>>> *put* 'USER forrest\r\n' >>>>>> >>>>>> *get* '331 Password required for forrest.\n' >>>>>> >>>>>> *resp* '331 Password required for forrest.' >>>>>> >>>>>> *cmd* 'PASS *************' >>>>>> >>>>>> *put* 'PASS *************\r\n' >>>>>> >>>>>> *get* '230 User forrest logged in.\n' >>>>>> >>>>>> *resp* '230 User forrest logged in.' >>>>>> >>>>>> *cmd* 'MKD /web/gsdglobal/Weather_GTB' >>>>>> >>>>>> *put* 'MKD /web/gsdglobal/Weather_GTB\r\n' >>>>>> >>>>>> *get* '550 /web/gsdglobal/Weather_GTB: File exists.\n' >>>>>> >>>>>> *resp* '550 /web/gsdglobal/Weather_GTB: File exists.' >>>>>> >>>>>> *cmd* 'TYPE I' >>>>>> >>>>>> *put* 'TYPE I\r\n' >>>>>> >>>>>> *get* '200 Type set to I.\n' >>>>>> >>>>>> *resp* '200 Type set to I.' >>>>>> >>>>>> *cmd* 'PASV' >>>>>> >>>>>> *put* 'PASV\r\n' >>>>>> >>>>>> *get* '227 Entering Passive Mode (127,0,0,1,218,79)\n' >>>>>> >>>>>> *resp* '227 Entering Passive Mode (127,0,0,1,218,79)' >>>>>> >>>>>> *cmd* 'QUIT' >>>>>> >>>>>> *put* 'QUIT\r\n' >>>>>> >>>>>> *get* '221 Goodbye. You uploaded 0 bytes and downloaded 0 bytes.\n' >>>>>> >>>>>> *resp* '221 Goodbye. You uploaded 0 bytes and downloaded 0 bytes.' >>>>>> >>>>>> pi@raspberrypi:/var/log $ >>>>>> >>>>>> >>>>>> >>>>>> And here is the last 100 lines of the log file after startup: >>>>>> >>>>>> pi@raspberrypi:~ $ journalctl -u weewx | tail -n 100 >>>>>> >>>>>> Dec 10 17:58:02 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: Requesting 200 LOOP packets. >>>>>> >>>>>> Dec 10 17:58:03 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: Successfully woke up Vantage console >>>>>> >>>>>> Dec 10 18:00:14 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: Getting archive packets since 2025-12-10 17:30:00 >>>>>> MST (1765413000) >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: Successfully woke up Vantage console >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: Retrieving 1 page(s); starting index= 3 >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] INFO >>>>>> weewx.manager: Added record 2025-12-10 18:00:00 MST (1765414800) to >>>>>> database 'weewx.sdb' >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] INFO >>>>>> weewx.manager: Added record 2025-12-10 18:00:00 MST (1765414800) to >>>>>> daily >>>>>> summary in 'weewx.sdb' >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: DMPAFT complete: page timestamp 2025-10-18 >>>>>> 11:30:00 >>>>>> MDT (1760808600) less than final timestamp 2025-12-10 18:00:00 MST >>>>>> (1765414800) >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: Catch up complete. >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Running reports for latest time in the database. >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: Requesting 200 LOOP packets. >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Running report 'SeasonsReport' >>>>>> >>>>>> Dec 10 18:00:15 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Found configuration file >>>>>> /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport' >>>>>> >>>>>> Dec 10 18:00:16 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.cheetahgenerator: Using search list >>>>>> ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Current', >>>>>> 'weewx.cheetahgenerator.DisplayOptions', >>>>>> 'weewx.cheetahgenerator.Extras', >>>>>> 'weewx.cheetahgenerator.Gettext', 'weewx.cheetahgenerator.JSONHelpers', >>>>>> 'weewx.cheetahgenerator.PlotInfo', 'weewx.cheetahgenerator.SkinInfo', >>>>>> 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Stats', >>>>>> 'weewx.cheetahgenerator.UnitInfo'] >>>>>> >>>>>> Dec 10 18:00:16 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.manager: Daily summary version is 4.0 >>>>>> >>>>>> Dec 10 18:00:16 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.drivers.vantage: Successfully woke up Vantage console >>>>>> >>>>>> Dec 10 18:00:18 raspberrypi python3[353842]: weewx[353842] INFO >>>>>> weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in >>>>>> 2.25 >>>>>> seconds >>>>>> >>>>>> Dec 10 18:00:18 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.manager: Daily summary version is 4.0 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] INFO >>>>>> weewx.imagegenerator: Generated 54 images for report SeasonsReport in >>>>>> 4.87 >>>>>> seconds >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] INFO >>>>>> weewx.reportengine: Copied 5 files to /var/www/html/weewx >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping. >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Report 'MobileReport' not enabled. Skipping. >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Report 'StandardReport' not enabled. Skipping. >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Running report 'StackedWindRose' >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Found configuration file >>>>>> /etc/weewx/skins/StackedWindRose/skin.conf for report 'StackedWindRose' >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Cannot read localization file >>>>>> /etc/weewx/skins/StackedWindRose/lang/en.conf for report >>>>>> 'StackedWindRose': >>>>>> Config file not found: "/etc/weewx/skins/StackedWindRose/lang/en.conf". >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: **** Using defaults instead. >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.manager: Daily summary version is 4.0 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] INFO >>>>>> user.stackedwindrose: Generated 1 images for StackedWindRose in 0.04 >>>>>> seconds >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Running report 'FTP' >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Found configuration file >>>>>> /etc/weewx/skins/Ftp/skin.conf >>>>>> for report 'FTP' >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: Cannot read localization file >>>>>> /etc/weewx/skins/Ftp/lang/en.conf for report 'FTP': Config file not >>>>>> found: >>>>>> "/etc/weewx/skins/Ftp/lang/en.conf". >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weewx.reportengine: **** Using defaults instead. >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: Attempting connection to 100.122.175.72 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: Connected to 100.122.175.72 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: 0 ./yearvolt.png >>>>>> a2a9c2b124013c1fafaaa0bcd25184333bf0f7ef50147f8ae945b6b24b133d82 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weeutil.ftpupload: Failed uploading /var/www/html/weewx/yearvolt.png to >>>>>> server 100.122.175.72. Reason: '[Errno 111] Connection refused' >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: ftpgenerator: (0): caught exception '<class >>>>>> 'ConnectionRefusedError'>': [Errno 111] Connection refused >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** Traceback (most recent call last): >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File >>>>>> "/usr/share/weewx/weewx/reportengine.py", line 437, in run >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** n = ftp_data.run() >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File >>>>>> "/usr/share/weewx/weeutil/ftpupload.py", line 220, in run >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** ftp_server.storbinary(stor_cmd, fd) >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 491, in storbinary >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** with self.transfercmd(cmd, rest) >>>>>> as >>>>>> conn: >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 386, in transfercmd >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** return self.ntransfercmd(cmd, >>>>>> rest)[0] >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 347, in ntransfercmd >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** conn = >>>>>> socket.create_connection((host, port), self.timeout, >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/socket.py", >>>>>> line 843, in create_connection >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** raise err >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/socket.py", >>>>>> line 831, in create_connection >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** sock.connect(sa) >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** ConnectionRefusedError: [Errno 111] >>>>>> Connection refused >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: Attempting connection to 100.122.175.72 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: Connected to 100.122.175.72 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: 0 ./yearvolt.png >>>>>> a2a9c2b124013c1fafaaa0bcd25184333bf0f7ef50147f8ae945b6b24b133d82 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weeutil.ftpupload: Failed uploading /var/www/html/weewx/yearvolt.png to >>>>>> server 100.122.175.72. Reason: '[Errno 111] Connection refused' >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: ftpgenerator: (1): caught exception '<class >>>>>> 'ConnectionRefusedError'>': [Errno 111] Connection refused >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** Traceback (most recent call last): >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File >>>>>> "/usr/share/weewx/weewx/reportengine.py", line 437, in run >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** n = ftp_data.run() >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File >>>>>> "/usr/share/weewx/weeutil/ftpupload.py", line 220, in run >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** ftp_server.storbinary(stor_cmd, fd) >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 491, in storbinary >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** with self.transfercmd(cmd, rest) >>>>>> as >>>>>> conn: >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 386, in transfercmd >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** return self.ntransfercmd(cmd, >>>>>> rest)[0] >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 347, in ntransfercmd >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** conn = >>>>>> socket.create_connection((host, port), self.timeout, >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/socket.py", >>>>>> line 843, in create_connection >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** raise err >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/socket.py", >>>>>> line 831, in create_connection >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** sock.connect(sa) >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** ConnectionRefusedError: [Errno 111] >>>>>> Connection refused >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: Attempting connection to 100.122.175.72 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: Connected to 100.122.175.72 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] DEBUG >>>>>> weeutil.ftpupload: 0 ./yearvolt.png >>>>>> a2a9c2b124013c1fafaaa0bcd25184333bf0f7ef50147f8ae945b6b24b133d82 >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weeutil.ftpupload: Failed uploading /var/www/html/weewx/yearvolt.png to >>>>>> server 100.122.175.72. Reason: '[Errno 111] Connection refused' >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: ftpgenerator: (2): caught exception '<class >>>>>> 'ConnectionRefusedError'>': [Errno 111] Connection refused >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** Traceback (most recent call last): >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File >>>>>> "/usr/share/weewx/weewx/reportengine.py", line 437, in run >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** n = ftp_data.run() >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File >>>>>> "/usr/share/weewx/weeutil/ftpupload.py", line 220, in run >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** ftp_server.storbinary(stor_cmd, fd) >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 491, in storbinary >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** with self.transfercmd(cmd, rest) >>>>>> as >>>>>> conn: >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 386, in transfercmd >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** return self.ntransfercmd(cmd, >>>>>> rest)[0] >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/ftplib.py", >>>>>> line 347, in ntransfercmd >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** conn = >>>>>> socket.create_connection((host, port), self.timeout, >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/socket.py", >>>>>> line 843, in create_connection >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** raise err >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** File "/usr/lib/python3.9/socket.py", >>>>>> line 831, in create_connection >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** sock.connect(sa) >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: **** ConnectionRefusedError: [Errno 111] >>>>>> Connection refused >>>>>> >>>>>> Dec 10 18:00:23 raspberrypi python3[353842]: weewx[353842] ERROR >>>>>> weewx.reportengine: ftpgenerator: Upload failed >>>>>> >>>>>> >>>>>> pi@raspberrypi:~ $ >>>>>> >>>>>> >>>>>> >>>>>> On Wednesday, December 10, 2025 at 2:52:55 PM UTC-7 F Y wrote: >>>>>> >>>>>>> And yes, weewx was stopped and restarted multiple times as I tried a >>>>>>> variety of things to get it to work. Will try the debug=2 to see what >>>>>>> that >>>>>>> tells me >>>>>>> >>>>>>> On Wednesday, December 10, 2025 at 2:51:04 PM UTC-7 F Y wrote: >>>>>>> >>>>>>>> Yes, weewx.conf file is updated to the correct server and port >>>>>>>> information. And, as stated, I CAN connect to the server manually >>>>>>>> with the >>>>>>>> same info over the same port 21, just won't connect with weewx doing >>>>>>>> the FTP >>>>>>>> >>>>>>>> On Wednesday, December 10, 2025 at 2:13:17 PM UTC-7 vince wrote: >>>>>>>> >>>>>>>>> Connection refused generally means you are trying to connect to a >>>>>>>>> server:port combination that the remote computer isn't listening on. >>>>>>>>> >>>>>>>>> Did you edit weewx.conf to change the 'server' and 'port' settings >>>>>>>>> to match your NAS setup 'and' also restart weewx ? >>>>>>>>> >>>>>>>>> On Wednesday, December 10, 2025 at 12:57:28 PM UTC-8 F Y wrote: >>>>>>>>> >>>>>>>>>> I have an unusual FTP problem. I recently moved my weather >>>>>>>>>> server from online to a locally hosed web server running on a >>>>>>>>>> Synology NAS. >>>>>>>>>> No matter what I do, I can not get the FTP transfer to work with >>>>>>>>>> the new >>>>>>>>>> server on the Synology NAS. >>>>>>>>>> >>>>>>>>>> I'm running weewx 4.10.x >>>>>>>>>> The conf file has all the correct login information and the NAS >>>>>>>>>> is seemingly set up correctly because I can manually FTP into the >>>>>>>>>> NAS and >>>>>>>>>> transfer files with no issue. >>>>>>>>>> >>>>>>>>>> *When weewx used FTP to access the online service over the last 2 >>>>>>>>>> years, everything worked as expected. >>>>>>>>>> >>>>>>>>>> * user and PW are exactly the same if manual or in weewx.conf >>>>>>>>>> >>>>>>>>>> -FTP server = Synology NAS DS718+ >>>>>>>>>> -Using standard FTP, not FTPs or SFTP >>>>>>>>>> -weewx running on Rpi4 (bullseye) >>>>>>>>>> -error from log file is always "ConnectionRefusedError: [Errno >>>>>>>>>> 111] Connection Refused >>>>>>>>>> ftpgenerator: upload failed >>>>>>>>>> >>>>>>>>>> I'd rather not move to weewx v5.x, unless there is no other >>>>>>>>>> solution to my problem >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- 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 [email protected]. To view this discussion visit https://groups.google.com/d/msgid/weewx-user/b38c3475-9e14-4c5d-b3c2-1c161816335an%40googlegroups.com.
