
Geschlossen
Veröffentlicht
Bezahlt bei Lieferung
Fix STM32 Firmware Update in Flutter Android App - Boat Lift Controller Project Overview We have a Flutter Android application (Atlantis Dealer Tool Kit) that communicates with an STM32H743VIT6-based boat lift controller via USB-to-serial adapter. The app successfully reads/writes commands in text mode, but firmware updates fail to sync with the STM32 bootloader. What Works: Arduino IDE successfully uploads firmware to the same controller using the same USB connection and UPDATE button procedure. What Fails: Our Flutter app cannot sync with the STM32 bootloader (AN3155 protocol) - we get "Timeout waiting for ACK/NACK" with no response when sending 0x7F sync byte. The Problem When attempting to flash firmware via our app: 1. User presses physical UPDATE button on controller (enters STM32 bootloader mode) 2. App sends 0x7F sync byte repeatedly over UART (115200 baud, EVEN parity) 3. Expected: Bootloader responds with 0x79 (ACK) 4. Actual: Timeout - no response from bootloader Arduino IDE works perfectly with identical hardware and procedure. What We've Tried (All Failed) 1. ✗ Dart implementation using Flutter's usb_serial package with EVEN parity switching 2. ✗ Native Kotlin implementation using usb-serial-for-android library (same library Arduino IDE uses) 3. ✗ Proper timing sequence matching Arduino IDE (set parity before UPDATE button press) 4. ✗ Buffer clearing and null byte skipping 5. ✗ Multiple retry attempts with delays between attempts 6. ✗ Repeated 0x7F transmission for 3+ seconds 7. ✗ Extended timeouts (up to 30 seconds) 8. ✗ Various approaches to USB disconnect/reconnect sequences All attempts result in: "Timeout waiting for ACK/NACK" Requirements Must Have: - Expert knowledge of Android USB Host API - Experience with STM32 bootloader protocol (AN3155) - Flutter + native Android (Kotlin/Java) integration via method channels - Understanding of UART serial communication (baud rate, parity, stop bits) - Ability to debug why bootloader won't respond despite correct protocol implementation - Experience with usb-serial-for-android library or similar - Available to start immediately Nice to Have: - Experience with Arduino IDE's upload mechanism - Prior success implementing STM32 bootloader on Android - Knowledge of stm32flash or stm32loader command-line tools - Flutter plugin development experience - Experience debugging with USB protocol analyzers The Solution We Need Implement a working STM32 firmware update that: 1. Receives firmware binary from Flutter (Uint8List) 2. Opens USB device natively using Android USB Host API (or fixes existing USB connection) 3. Communicates with STM32 bootloader using correct settings (115200 baud, EVEN parity, 8N1) 4. Successfully flashes firmware following AN3155 protocol: - Send 0x7F, receive 0x79 (ACK) ← Fix this critical sync issue - GET command (bootloader version) - GET_ID command (chip ID) - EXTENDED_ERASE (mass erase) - WRITE_MEMORY (256-byte chunks) - GO command (jump to application) 5. Reports progress back to Flutter via EventChannel 6. Handles errors gracefully with clear error messages 7. Works reliably in the field (no Arduino IDE dependency) Approach is flexible: You can fix our existing Dart code, implement pure native Android code, use command-line tools (stm32flash/stm32loader), or any proven method that works. Deliverables 1. ✅ Working native Android code (Kotlin/Java) or fixed Dart implementation that successfully flashes STM32 firmware 2. ✅ Method channel integration with Flutter (if using native approach) 3. ✅ Progress callbacks streamed to Flutter UI via EventChannel 4. ✅ Comprehensive error handling with clear user-facing messages 5. ✅ Brief documentation explaining what was wrong and how you fixed it 6. ✅ Code integrated into our existing Flutter app 7. ✅ Tested and verified on actual hardware (we can provide remote testing access) Technical Details Hardware: - STM32H743VIT6 microcontroller - USB-to-serial adapter (CH340/CP2102/FTDI compatible) - Android tablet with USB-OTG support - User presses physical UPDATE button to enter bootloader mode Serial Settings: - Baud rate: 115200 - Parity: EVEN - Data bits: 8 - Stop bits: 1 Procedure (Same as Arduino IDE): 1. User presses UPDATE button on controller (enters bootloader mode) 2. App sends 0x7F sync byte over UART at 115200 baud, EVEN parity 3. Bootloader should respond with 0x79 (ACK) ← This never happens in our app 4. Flash process continues with GET, ERASE, WRITE, GO commands Current Codebase: - Flutter app with existing USB service (works for JSON text mode communication) - Partial Dart bootloader implementation (lib/services/[login to view URL]) - Partial native Kotlin implementation (android/app/src/main/kotlin/.../[login to view URL]) - GitHub repo will be shared with selected freelancer STM32 Bootloader Protocol (AN3155): Full protocol documentation available at STMicroelectronics website. We've correctly implemented the protocol on paper, but something is preventing the initial ACK response. Budget $500-$1000 USD - negotiable based on experience and approach Timeline 1-2 weeks - prefer quick turnaround for field deployment To Apply Please include: 1. Your experience with Android USB Host API and STM32 bootloaders 2. Any previous STM32 or firmware update work (links to similar projects if available) 3. Your theory on why Arduino IDE works but our app doesn't 4. Your proposed approach to solve this (Dart fix, native Android, external tools, etc.) 5. Estimated timeline and availability 6. Any questions you have about the project Questions We'll Ask: - Have you successfully implemented STM32 bootloader communication on Android before? - Do you have access to STM32 hardware for testing? (We can provide remote access if needed) - What debugging tools/methods would you use to diagnose this sync failure? - Will you implement in Dart, native Android (Kotlin), or use external tools? - Have you worked with EVEN parity serial communication on Android? --- This is a paid project with potential for ongoing work on the app. We need someone who can dive deep, figure out why Arduino IDE succeeds where we fail, and implement a rock-solid solution that works in production.
Projekt-ID: 40105357
36 Vorschläge
Remote Projekt
Aktiv vor 4 Tagen
Legen Sie Ihr Budget und Ihren Zeitrahmen fest
Für Ihre Arbeit bezahlt werden
Skizzieren Sie Ihren Vorschlag
Sie können sich kostenlos anmelden und auf Aufträge bieten
36 Freelancer bieten im Durchschnitt $915 USD für diesen Auftrag

Since 2003 I am working in Digital Electronic. So more than 18 years of experience in Electronics. Arduino NANO/UNO/MEGA, ESP32 and Raspberry PI to build a digital device to read sensor data and send it to the web server, motor control, control relay switches and LEDs. More than 5(five) years of experience in Arduino design and build. If you want an excellent and error-free project delivery, then send a message to me, please. Have more than 7(seven) years of experience in C/C++ to build Windows/Linux applications and micro-controller firmware building. If you want a good job delivery, then send a message to me, please.
$1.750 USD in 15 Tagen
6,4
6,4

As a seasoned and highly experienced full-stack development team specializing in various hardware and software technologies, I can confidently say we are the perfect fit for your project. With over 5 years in the industry, we have gained expert knowledge in Android USB Host API, an essential skill to address your bootloader issue. We also have prior experience with the STM32 bootloader protocol (AN3155) and deeply understand UART serial communication, qos-abiding by bootloading procedure requirements. Moreover, we have hands-on experience with similar projects where we successfully implemented firmware flashing protocols, including handling communication errors gracefully and integrating them with Flutter UI- a skill that would be highly valuable for your project. Whether you want us to fix your existing Dart implementation or develop pure native Android code using Java/Kotlin method, we are well-equipped to make it a success. Additionally, our broad skillset encompasses not only mobile application development but also Arduino, Raspberry Pi and ESP32 systems. Apart from STM32 know-how, we have vast experience in trading solutions and hardware/electronic projects. This diverse expertise makes us uniquely qualified to handle every aspect of your project efficiently from start to finish ensuring you get high-quality work meeting all your requirements within stipulated timeframes. Partner with us for an exceptional Electronic Systems update!
$1.000 USD in 15 Tagen
6,6
6,6

Hi there, I’ve reviewed your project and I’m confident I can fix the STM32 firmware update issue in your Flutter Android app. With strong experience in STM32 bootloader (AN3155), Android USB Host API, and Flutter–native integration, I’ve previously implemented reliable firmware flashing tools for STM32 devices using usb-serial-for-android and custom UART parity handling. I’ll ensure your app successfully synchronizes with the STM32 bootloader by resolving the 0x7F ACK timeout issue and enabling clean, stable flashing through the same hardware used by Arduino IDE. The final solution will include: Working Kotlin or Dart implementation that flashes firmware via the STM32 bootloader. Method channel integration with Flutter (progress updates and error handling). Thorough documentation explaining the root cause and applied fix. I can start immediately and deliver a tested, field-ready solution within your 1–2 week timeframe. Best regards, Samuel Tshibangu
$750 USD in 7 Tagen
5,9
5,9

Hi, I have good understanding of firmware update and OTA. I have recently completed firmware update on Portenta H7 which uses same series controller. 1. I have good control on STM32 and it's toolchain. I am fully aware of all the technical details of the application note for STM32 you have mentioned above. 2. I will support you all through the development and testing till you accept the solution. 3. I have worked in industry for more than 20 years and I have developed several cutting-edge products. Now I am working as full time freelancer since last two years. 4. I have worked on all the technologies involved for IoT from device to cloud. I can also play a role of solution architecture for the complete system. 5. I am preferred freelancer and I deliver good quality so customers have given me five star rating. Let's connect to resolve the firmware update issue. Regards, Vishal
$950 USD in 15 Tagen
4,0
4,0

Hello, I’m excited about the opportunity to help resolve the issues you're facing with the STM32 firmware update process in your Flutter app. With extensive experience in Android development, STM32 bootloaders, and USB communication, I’m confident that I can diagnose the synchronization issue you're encountering and provide a robust solution. I believe the core issue could be related to how the initial sync byte (0x7F) is being transmitted or handled in your app compared to the Arduino IDE. I would investigate the differences in timing or protocol handling, and I’ll aim to fix the critical sync failure by ensuring proper sequencing and ensuring the bootloader receives and responds to commands as expected. For this, I would work on refining your existing Dart implementation, integrating native Android code via method channels if necessary, and ensuring real-time progress reporting to the Flutter UI. My approach will involve debugging the USB connection, implementing the bootloader communication in a reliable manner, and performing end-to-end testing on actual hardware. I’ll ensure error handling is in place and that your app functions seamlessly with no dependence on Arduino IDE. Looking forward to collaborating with you on this project, and I'm ready to dive in immediately. Best regards, Juan
$500 USD in 7 Tagen
2,8
2,8

Hi, I have carefully studied your detailed project description regarding the STM32 firmware update sync failure in your Flutter Android app. With extensive experience in Android USB Host API and deep familiarity with STM32 bootloader protocols (AN3155), I am confident I can resolve the sync issue causing the timeout at the 0x7F sync byte stage. Having worked on embedded systems and mobile USB serial communication, I understand the nuances of parity settings and bootloader handshakes. My approach involves a thorough review of your native Kotlin and Dart implementations, debugging USB connections on a low-level with tool-assisted analysis, and applying precise timing and protocol fixes to achieve the ACK response reliably. I will integrate method channels for smooth Flutter-native communication and implement robust progress and error feedback for seamless user experience. I can start immediately and aim to deliver a thoroughly tested, fully integrated solution within 10 days, ensuring your firmware flash works as reliably as the Arduino IDE but independently. Could you share access to the current native Kotlin code and details on the USB serial hardware adapters you are testing with? Best regards,
$835 USD in 18 Tagen
2,6
2,6

Lake worth, United States
Zahlungsmethode verifiziert
Mitglied seit Sept. 5, 2021
$15-25 USD / Stunde
$30-250 USD
$30-250 USD
$250-750 USD
$30-250 USD
€5000-10000 EUR
$3000-5000 USD
$250-750 USD
$500-1000 USD
$30-250 USD
$5000-10000 USD
$10-30 USD
$8-15 USD / Stunde
$30-250 USD
$30-250 USD
$250-750 USD
$30-250 AUD
$10-30 CAD
$10-30 USD
$250-750 CAD
₹12500-37500 INR
$2-8 USD / Stunde
$25-50 USD / Stunde
$2-8 AUD / Stunde
₹1500-12500 INR