Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    FiPy FTP upload in C# returns (451) Local error in processing.

    Scheduled Pinned Locked Moved FiPy
    ftp
    15 Posts 3 Posters 74 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T Offline
      Tasha Weidler @livius
      last edited by

      @livius Thank you for your quick response! But unfortunately I tried that too and I get the same error result...

      L 1 Reply Last reply Reply Quote 0
      • L Offline
        livius @Tasha Weidler
        last edited by

        @Tasha-Weidler

        it should work but try different way:

        using (Stream fileStream = File.OpenRead(appFilepath))
        using (Stream ftpStream = request.GetRequestStream())
        {
            fileStream.CopyTo(ftpStream);
        }
        

        think about people first, then computers

        T 1 Reply Last reply Reply Quote 0
        • T Offline
          Tasha Weidler @livius
          last edited by

          @livius No luck, same error is thrown when exiting the using block.

          I've also tried this way and get the same error from the UploadFile function:

                          WebClient client = new WebClient();
                          client.Credentials = new NetworkCredential(UserId, Password);
                          client.UploadFile(deviceFilepath, appFilepath);
          

          I can't figure out why it works fine for writing fipy.bin to flash/sys/appimg.bin for the firmware but it doesn't work for writing a .py/.txt/etc directly to the flash directory. I wondered if its maybe a permissions issue but the permissions looked fine and worked fine in Filezilla and I'm not sure how to check them directly on the fipy.

          robert-hhR 1 Reply Last reply Reply Quote 0
          • robert-hhR Offline
            robert-hh @Tasha Weidler
            last edited by

            @Tasha-Weidler appimg.bin will not be written to the file system. Instead it is stored directly to the unused firmware partition. So the problem lies in the file name you use. Can you try just main.py as file name. Can you get hold of the raw ftp log to see, which ftp commands are generated.

            T 1 Reply Last reply Reply Quote 0
            • T Offline
              Tasha Weidler @robert-hh
              last edited by

              @robert-hh Ah, I see, that makes sense. Thanks for your response!

              I'm not sure what you mean, are you saying var deviceFilepath = "ftp://192.168.4.1/flash/main.py"; should be var deviceFilepath = "ftp://192.168.4.1/main.py";?

              FTP Log:

              System.Net Information: 0 : [28564] Current OS installation type is 'Client'.
              System.Net Information: 0 : [28564] FtpWebRequest#3741682::.ctor(ftp://192.168.4.1/flash/main.py)
              System.Net Information: 0 : [28564] FtpWebRequest#3741682::GetRequestStream(Method=STOR.)
              System.Net Information: 0 : [28564] RAS supported: True
              System.Net Error: 0 : [28564] Can't retrieve proxy settings for Uri 'ftp://192.168.4.1/flash/main.py'. Error code: 12180.
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Created connection from 192.168.4.2:62970 to 192.168.4.1:21.
              System.Net Information: 0 : [28564] Associating FtpWebRequest#3741682 with FtpControlStream#34640832
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [220 Micropython FTP Server]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Sending command [USER micro]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [331 ]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Sending command [PASS ********]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [230 ]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Sending command [OPTS utf8 on]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [502 ]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Sending command [PWD]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [257 /]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Sending command [TYPE I]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [200 ]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Sending command [PASV]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [227 (192,168,4,1,7,232)]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Sending command [STOR flash/main.py]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [150 ]
              System.Net Information: 0 : [28564] FtpControlStream#34640832 - Received response [451 ]
              System.Net Information: 0 : [28564] FtpWebRequest#3741682::(Releasing FTP connection#34640832.)
              
              robert-hhR 3 Replies Last reply Reply Quote 0
              • robert-hhR Offline
                robert-hh @Tasha Weidler
                last edited by robert-hh

                This post is deleted!
                1 Reply Last reply Reply Quote 0
                • robert-hhR Offline
                  robert-hh @Tasha Weidler
                  last edited by

                  @Tasha-Weidler No, it lloks okay. PWD is / so the file name has to be flash/main.py.

                  1 Reply Last reply Reply Quote 0
                  • robert-hhR Offline
                    robert-hh @Tasha Weidler
                    last edited by

                    @Tasha-Weidler Looking into the code, it tells that the actual file open of flash/main.py succeeds, but writing to that file fails. That is strange. The port used for data transfer is 2024. Since filezilla works, that should not be a problem.

                    T 1 Reply Last reply Reply Quote 0
                    • T Offline
                      Tasha Weidler @robert-hh
                      last edited by

                      @robert-hh Right, I am stumped. And that error message is less than helpful. This is what the file structure looks like in FileZilla so the flash directory exists and there's a top level folder labelled "/" so that's where the slash for PWD comes from. Anything look fishy there?

                      43a75e94-4f3b-44e7-b320-6e6493833d49-image.png

                      Then I tried var deviceFilepath = "ftp://192.168.4.1//flash/main.py"; to see if that helped anything with the file name and I got this output. STOR changed to /flash/main.py but PWD stayed as "/". Maybe I could try to manually set PWD to /flash?

                      System.Net Information: 0 : [6548] Current OS installation type is 'Client'.
                      System.Net Information: 0 : [6548] FtpWebRequest#3741682::.ctor(ftp://192.168.4.1//flash/main.py)
                      System.Net Information: 0 : [6548] FtpWebRequest#3741682::GetRequestStream(Method=STOR.)
                      System.Net Information: 0 : [6548] RAS supported: True
                      System.Net Error: 0 : [6548] Can't retrieve proxy settings for Uri 'ftp://192.168.4.1//flash/main.py'. Error code: 12180.
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Created connection from 192.168.4.2:60371 to 192.168.4.1:21.
                      System.Net Information: 0 : [6548] Associating FtpWebRequest#3741682 with FtpControlStream#34640832
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [220 Micropython FTP Server]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Sending command [USER micro]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [331 ]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Sending command [PASS ********]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [230 ]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Sending command [OPTS utf8 on]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [502 ]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Sending command [PWD]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [257 /]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Sending command [TYPE I]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [200 ]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Sending command [PASV]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [227 (192,168,4,1,7,232)]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Sending command [STOR /flash/main.py]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [150 ]
                      System.Net Information: 0 : [6548] FtpControlStream#34640832 - Received response [451 ]
                      System.Net Information: 0 : [6548] FtpWebRequest#3741682::(Releasing FTP connection#34640832.)
                      
                      robert-hhR 1 Reply Last reply Reply Quote 0
                      • robert-hhR Offline
                        robert-hh @Tasha Weidler
                        last edited by

                        @Tasha-Weidler said in FiPy FTP upload in C# returns (451) Local error in processing.:

                        I guess the line below points at the problem.

                        System.Net Error: 0 : [6548] Can't retrieve proxy settings for Uri 'ftp://192.168.4.1//flash/main.py'. Error code: 12180.

                        T 2 Replies Last reply Reply Quote 0
                        • T Offline
                          Tasha Weidler @robert-hh
                          last edited by

                          @robert-hh Great..... I considered that when I first saw it but a quick google didn't come up with anything helpful. I'll look again. Any ideas for fixing it?

                          1 Reply Last reply Reply Quote 0
                          • T Offline
                            Tasha Weidler @robert-hh
                            last edited by

                            @robert-hh Looks like I can just disable proxy and that error in the log goes away. I have no clue if I need that to be enabled or not, disabling didn't seem to affect anything else, still getting the 451 error and the FTP Proxy settings in Filezilla are set to None so I don't think that's the issue.

                            System.Net Information: 0 : [24900] Current OS installation type is 'Client'.
                            System.Net Information: 0 : [24900] FtpWebRequest#3741682::.ctor(ftp://192.168.4.1/flash/main.py)
                            System.Net Information: 0 : [24900] FtpWebRequest#3741682::GetRequestStream(Method=STOR.)
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Created connection from 192.168.4.2:56579 to 192.168.4.1:21.
                            System.Net Information: 0 : [24900] Associating FtpWebRequest#3741682 with FtpControlStream#43332040
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [220 Micropython FTP Server]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Sending command [USER micro]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [331 ]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Sending command [PASS ********]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [230 ]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Sending command [OPTS utf8 on]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [502 ]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Sending command [PWD]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [257 /]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Sending command [TYPE I]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [200 ]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Sending command [PASV]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [227 (192,168,4,1,7,232)]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Sending command [STOR flash/main.py]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [150 ]
                            System.Net Information: 0 : [24900] FtpControlStream#43332040 - Received response [451 ]
                            System.Net Information: 0 : [24900] FtpWebRequest#3741682::(Releasing FTP connection#43332040.)
                            
                            1 Reply Last reply Reply Quote 0
                            • T Offline
                              Tasha Weidler
                              last edited by

                              In case someone else comes across this post looking for help:

                              I solved the issue by using a different third party FTP library that was suggested to me on the Stack Overflow post I made:
                              https://stackoverflow.com/questions/67011710/ftpwebrequest-to-microcontroller-always-results-in-451-local-error-in-processi/67079870#67079870

                              Not exactly sure what the underlying issue was, it might've been that the fipy explicitly wants you to change your working directory to the flash directory before uploading or it might've been something else in the library that handled it better. Either way, my FTP log now more closely matches the one from FileZilla and no more errors!

                              My New Code:

                                      FtpClient client = new FtpClient("ftp://192.168.4.1");
                                      client.Credentials = new NetworkCredential(UserId, Password);
                                      client.DataConnectionType = FtpDataConnectionType.PASV;
                                      client.Connect();
                                      client.SetWorkingDirectory("/flash");
                              
                                      client.UploadFile(appFilepath, "rwis_config.py", FtpRemoteExists.NoCheck);
                              
                                      client.Disconnect();
                              

                              New FTP Log Output:

                              # Connect()
                              Status:   Connecting to ***:21
                              Response: 220 Micropython FTP Server
                              Command:  USER ***
                              Response: 331 
                              Command:  PASS ***
                              Response: 230 
                              Command:  FEAT
                              Response: 211 no-features
                              Status:   Text encoding: System.Text.ASCIIEncoding
                              Command:  SYST
                              Response: 215 UNIX Type: L8
                              
                              # SetWorkingDirectory("/flash")
                              Command:  CWD /flash
                              Response: 250 
                              
                              # UploadFile("rwis\rwis_config.py", "rwis_config.py", NoCheck, False, None)
                              
                              # OpenWrite("rwis_config.py", Binary)
                              Command:  TYPE I
                              Response: 200 
                              
                              # OpenPassiveDataStream(PASV, "STOR rwis_config.py", 0)
                              Command:  PASV
                              Response: 227 (192,168,4,1,7,232)
                              Status:   Connecting to ***:2024
                              Command:  STOR rwis_config.py
                              Response: 150 
                              Status:   Disposing FtpSocketStream...
                              Response: 226 
                              Status:   Testing connectivity using Socket.Poll()...
                              Command:  QUIT
                              Response: 221 
                              Status:   Disposing FtpSocketStream...
                              
                              1 Reply Last reply Reply Quote 0

                              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                              With your input, this post could be even better 💗

                              Register Login
                              • 1 / 1
                              • First post
                                Last post

                              Pycom on Twitter

                              Pycom