BSL430.NET  1.3.4
BSL430.NET Documentation
BSL430.NET

BSL430.NET - The cheapest way to flash MSP430

Github tag (BSL430.NET) NuGet version (BSL430.NET) fuget version (BSL430.NET) License: MIT

DOWNLOAD HERE - TI MSP430 Bootloader (BSL) .NET Cross-Platform Toolchain


  1. Main Features
  2. GUI App (Windows)
  3. Console App (Windows, Linux)
  4. Library
  5. Firmware Tools

1. Main Features

  • Replace expensive original MSP FET programmer with cheap FTDI FT232 or Serial COM port
  • Upload, Download or Erase MSP430 MCU memory with minimal effort via generic UART converter
  • Fexible way how to upgrade device firmware with .NET library, integrable into any app (also production)
  • Most common firmware format support: TI-TXT, Intel-HEX, SREC, ELF
  • Original C# code implementing TI bootloader protocols 5xx/6xx and 1xx/2xx/4xx (TI doc)
    Note: Old 1xx/2xx/4xx bootloader protocol not tested yet!

2. GUI App (Windows)

Wiki docs - First start quick go-through for ease of use

  • Download code from MCU:
    Download
  • Upload firmware to MCU (Dark Mode):
    Upload
  • Erase whole MCU:
    Erase
  • Shell Extension & Association:
    Shell

3. Console App (Windows, Linux)

Wiki docs - Tutorials how to use console app

  • Upload firmware to MCU:
    Upload
  • Scan for available devices:
    Scan

4. BSL430.NET Library

Wiki docs - Documentation and code samples for easy start and copy & paste

public interface IBsl430Net
{
ScanAllResult ScanAllEx(ScanOptions ScanOpt);
ScanResult<Bsl430NetDevice> ScanAll(ScanOptions ScanOpt);
ScanResult<Tdev> Scan<Tdev>(ScanOptions ScanOpt) where Tdev : Bsl430NetDevice;
StatusEx Erase(Bsl430NetDevice Device);
StatusEx Erase(string DeviceName);
StatusEx Upload(string FirmwarePath, Bsl430NetDevice Device, byte[] Password);
StatusEx Upload(string FirmwarePath, string DeviceName, byte[] Password);
StatusEx Download(byte[] Password, int AddrStart, int DataSize, out List<byte> Data, Bsl430NetDevice Device);
StatusEx Download(byte[] Password, int AddrStart, int DataSize, out List<byte> Data, string DeviceName);
Status SetBaudRate(BaudRate BaudRate);
Status SetInvokeMechanism(InvokeMechanism InvokeMechanism);
Status SetMCU(MCU Mcu);
BaudRate GetBaudRate();
InvokeMechanism GetInvokeMechanism();
MCU GetMCU();
Mode GetMode();
}



BSL430.NET.FirmwareTools BSL430.NET.FirmwareTools - FW manipulation made easy

Github tag (BSL430.NET) NuGet version (BSL430.NET.FirmwareTools) fuget version (BSL430.NET.FirmwareTools) License: MIT

DOWNLOAD HERE - Firmware Tools as BSL430.NET sub package



  1. Main Features
  2. GUI & Console App
  3. Library

5. Main Features

  • Multiple firmware format support: TI-TXT, Intel-HEX, SREC, ELF
  • Parse (read from file) and Create (write to file or string)
  • Convert, Combine and Compare between any of these formats
  • Validate firmware file and get information like addresses, CRC, sizes..
  • [MSP430 only] Get BSL password used to correctly download fw by BSL430.NET



6. GUI & Console App

Wiki docs - BSL430.NET GUI App docs and tutorials

Note: BSL430.NET and Firmware Tools are integrated into single GUI and Console Apps!
  • Firmware Tools (Dark Mode):
    Firmware Tools
  • Firmware Hex-Edit:
    Firmware Hex Edit

7. FirmwareTools Library

Wiki docs - Ready to use code samples and tutorials

public static Firmware Parse(string FirmwarePath, FwFormat Format, bool FillFF,StringWriter Log);
public static string Create(Firmware Firmware, FwFormat Format, int LineLength);
public static string Create(IEnumerable<byte> Data, int AddrStart, FwFormat Format, int LineLength);
public static string Create(ICollection<FwNode> Data, FwFormat Format, int LineLength);
public static (string Fw, FwFormat Format) Convert(string FirmwarePath, FwFormat Format, bool FillFF, int LineLength);
public static (string Fw, FwFormat Format1, FwFormat Format2) Combine(string FirmwarePath1, string FirmwarePath2, FwFormat Format, bool FillFF, int LineLength);
public static BslPasswords GetPassword(string FirmwarePath);
public static FwInfo Validate(string FirmwarePath, StringWriter Log);
public static (bool Equal, double Match, int BytesDiff) Compare(string FirmwarePath1, string FirmwarePath2);
public static (bool Equal, double Match, int BytesDiff) Compare(Firmware Firmware1, Firmware Firmware2);