RELEASE NOTES
BMAPI SDK Release Notes
Review new features, refinements, and fixes before upgrading, or trace changes in an earlier release.
- Latest entry
- v1.14.2.43
- Releases
- 24
- Change items
- 123
Release details are currently published in Chinese.
01BMAPI SDK v1.14.2.43Latest entry6
优化多设备、多通道 CAN/CAN FD 发送调度,避免繁忙或暂时阻塞的通道影响其他通道。
完善设备打开、关闭和热插拔恢复事务,失败时完整回滚资源和通道状态,避免产生不可用的半连接句柄。
提升并发写入、批量发送和周期发送过程中的队列一致性,修复竞争条件可能导致的发送异常。
修复远程通道启用后发送线程未及时唤醒的问题,缩短远程连接建立后的首次发送等待时间。
加强设备重连后的能力重新探测及多句柄恢复,避免沿用断线前的过期设备能力。
完善 Windows XP 与 .NET 4.0 兼容性,并提升 C#、VB.NET 和 Qt 多通道例程在持续高流量下的接收、重开和退出稳定性。
02BMAPI SDK v1.14.1.421
修复异步 CAN/CAN FD 写入在 USB bulk 部分传输时的静默丢帧:从精确字节偏移继续提交,并仅在整批数据完整提交后释放主机 TX 队列,从而正确支持设备背压。
03BMAPI SDK v1.14.0.426
重构 C#、VB.NET 和 Qt CAN Analyzer 例程的多通道接收与显示流程:轮询全部通道直至每个通道返回 `BM_ERROR_QRCVEMPTY`、批量刷新界面并将显示历史限制为 5000 条,提升持续高流量下的接收完整性与界面响应性。
新增面向 GWR/BMAPI 多客户端控制仲裁的公开远程控制会话 API:`BM_QueryRemoteSession`、`BM_ClaimRemoteSession`、`BM_GetRemoteSessionInfo` 和 `BM_ReleaseRemoteSession`,其带版本号的 ABI 支持能力与结果状态查询、受保护控制操作的独占所有权、自动心跳续约和超时清理,同时普通数据收发仍保持共享。
完成 Windows 平台 `BM_AutosetEx` 运行库导出及导入库对齐,确保公开头文件与发布二进制提供一致的 API。
修复 BMAPI 默认接收缓冲区初始化失败时清理过程崩溃的问题。
完善 Windows XP 与 .NET 4.0 兼容路径:BMAPI 运行库在 XP 上采用非阻塞 USB 事件轮询以避免同步 Open/Close 控制 I/O 卡顿,C# 例程在 XP 上跳过不受支持的 PTP 同步并加强通道打开失败后的资源清理。
修复 `multichannel_rx_cpp` 和 `multichannel_logger` 在起始通道编号不为 0 时清除错误 pending 位的问题,并修正多通道 PTP 同步数量,避免接收循环无法正确结束或遗漏同步通道。
04BMAPI SDK v1.13.10.414
新增 `BM_AutosetEx`,支持显式选择被动监听和主动探测策略,同时保持现有 `BM_Autoset` 函数签名及行为不变。
将 `BM_AutosetCallbackHandle` ABI 返回类型更新为 `uint32_t`(返回 0 表示继续,非 0 表示取消),并新增可配置的确认次数、监听/发送超时、探测报文及常见 CAN/CAN FD 波特率组合探索。
同步更新 C/C++、LabVIEW、C#、VB.NET、python-can 和 python-lin 绑定中的 AutoSet 声明。
按固件能力调整 `BM_RecoverBusOff` 路径:二代/二代半固件 2.6.0.0+ 与三代固件 3.1.0.0+ 使用固件侧恢复;更早的二代/二代半固件及三代 3.0.x 保留主机侧兼容方案。
05BMAPI SDK v1.13.8.412
新增 LIN header-only SYNC_BREAK 支持:应用程序可通过 `BM_LIN_MESSAGE_FLAGS_SYNC_BREAK` / `BM_LinMessageCtrlTypeDef.SYNC_BREAK` 主动发送 LIN header only(break + sync + PID,不发送 data/checksum)。TEF/RX 报文通过 `BM_LinMessageCtrlTypeDef.SYNC_BREAK` 标记该 header-only 操作。该字段复用原未使用的 `ID_PARITY` bit。
C# 例程(`can_analyzer_csharp`)兼容性提升:用内置 `ComCheckBoxList` 实现替换第三方 `ComboBoxCustomer.dll`,例程可在 Windows XP 与 .NET 4.0 环境运行。
06BMAPI SDK v1.13.7.402
修复背景 CAN/CAN FD 流量下 ISO-TP 超时处理问题,提升诊断通信中软件 ISO-TP 的稳定性。
修复 BMAPI Python 绑定中 TX task 结构体以及 python-can、udsoncan 使用的 ISO-TP 收发路径兼容性问题。
07BMAPI SDK v1.13.6.403
新增 `BM_RecoverBusOff` 接口,主动恢复 Bus-off 状态,避免周期性轮询对其他通道发送周期的影响;增加 `BM_CAN_DISABLE_AUTO_BUSOFF_RECOVERY` 模式标志,允许用户禁用自动恢复
新增 `BM_HardwareLastMsgStat` 接口,获取硬件最新发送报文状态
Python LIN 库去除 python-can 依赖,补充 aenum 模块,新增 `store_task=False` 硬件发送任务 demo
08BMAPI SDK v1.13.5.395
从本版本开始使用 CICD 全自动构建,将在四位版本号(例如 1.13.5.39)基础上追加第五位版本号代表构建号(Build Number)
修复 CANFD 协议(而不是 CAN2.0)下,`BM_WriteIsotp` 在报文负载长度小于 DLC 可承载长度时,发送的报文不符合 ISOTP 约定的问题
移除对 libusb 动态库的依赖!今后在编译应用程序的时候不再需要 `-lusb` 这个链接选项了
整理 SDK 文件夹内容,规范化命名,优化一些启动脚本等,如有困扰欢迎联系技术支持
修复 Python 环境下使用 32 位时间戳意外翻转的问题,现在时间戳获取完全依赖 BMAPI.DLL
09BMAPI SDK v1.13.3.382
**关键 BUGFIX!** 修复 2025 年 9 月新引入的,由于 BMAPI 基础库中的内存管理错误导致的长时间接收挂机自动停止,需要 Disconnect 再 Connect 才能恢复接收的问题
`BM_CanfdMessageTypeDef` 的 `ctrl.tx` 成员新增 `ECHO` 属性,当置位此属性时,即使阻塞式调用 `BM_Write`,也可以额外收到一条 ACK 报文,用于回显
10BMAPI SDK v1.13.2.377
恢复对 mingw 编译环境的支持
修复 x86 以及 arm 以及 aarch64 平台下,提供的 bmapi*.so 文件缺失 libudev 等动态库符号的运行时错误
修复第二代产品调用 `BM_Close` 会卡死的兼容性问题
优化 python-can 的平台和版本兼容性
优化 python-can 的 busoff recovery 逻辑,提升多线程支持能力
修复 Linux 系统由于变量未初始化导致的在部分环境下 `BM_Close` 崩溃问题
通过调整 USB 发送使能逻辑,优化第三代设备在频繁 busoff 环境下的发送自恢复能力
11BMAPI SDK v1.13.1.355
添加 `BM_IsotpConfigTypeDef.flowcontrol.hardwareIsotpDisabled` 选项,用于禁用 ISOTP 流控的硬件加速功能,默认不会禁用(如果硬件支持)
修复 `BM_WriteIsotp` 函数在需要多帧流控的情况下,CF SEQ 被意外重置的问题
修复 python-can 在未插入硬件设备时,由于 Virtual Channel 不支持 PTP 而导致抛出异常中止运行的问题
`BM_GetDataPtpTimestamp` 函数返回的时间戳从微秒改为纳秒,从而与 `BM_GetPtpTime` 以及 `BM_GetHostPtpTime` 保持一致,各个例程也做了同样的修改
提升第三代设备的报文发送效率和收发稳定性
12BMAPI SDK v1.13.0.354
全面添加 PTP 相关 API,并在 can_analyzer_qt 等多个例程中演示 PTP 功能(第二代和第三代产品均可调用相关 API)
优化 `BM_WriteIsotp` 的硬件 ISOTP 发送效率
`BM_WriteMultiple` 和 `BM_WriteMultipleCanMessage` 在调用失败时,可以通过函数参数获取到实际成功发送了多少条
优化对第三代设备的底层收发参数,提高收发效率
13BMAPI SDK v1.12.3.343
python-can 增加 `sync_timestamp` demo,并修复时间戳偏移 bug
优化 `BM_Enumerate` 在枚举设备时的命名,例如将 PCIE 板卡的多个通道统一命名
更新 `BM_TxTaskTypeDef` 的定义并保持与历史版本兼容,添加了发送周期内的 frame delay,用于 LIN 调度表等定时设计
14BMAPI SDK v1.12.2.333
优化各个例程中新增的 64 位 UTC 时间戳功能与第三代以前的旧设备的兼容性
修复 Virtual Channel 两个通道之间无法对发等问题
优化 python-can 的时间戳同步精度
15BMAPI SDK v1.12.1.335
修复 LIN 相关 API 的若干早期问题,现在 LIN API 已经可以用于量产环境
**新特性!** 支持第三代硬件设备的 64 位 UTC 时间戳(位于 `BM_DataTailTypeDef`),并在多个例程中演示如何获取 UTC 时间戳,从此以后再也不用担心时间戳翻转问题
python-can 增加 `recoverFromError` demo
独家推出 python-lin 软件包,可用 Python 语言来进行 LIN 总线的控制和报文收发,编程接口类似 python-can
在 Linux 上添加 thread priority tuning API 供有需要的客户使用,常规应用下建议保持默认值
16BMAPI SDK v1.12.0.323
此版本开始正式支持 LIN 功能,与 LIN 相关的 API 和例程初步固化
对通道数超出 16 的 GWR 设备的支持:`BM_DataTypeDef` 中,在原来的 `schn` 和 `dchn` 的基础上,引入 group 的概念,每个设备最多支持 8 个 group,每个 group 固定为 16 个 channel,进而每个设备最多支持 128 个通道
添加 `BM_MapTimestamp` 新 API,用于将 `BM_DataTypeDef` 中的 32 位硬件本地时间戳映射为 64 位 UTC 时间戳,方便长时间采集记录
17BMAPI SDK v1.11.0.3119
新增系列 API,实现对新款 LIN 设备的支持
新增系列 API,实现对 GWR 等支持以太网的新款设备的支持,可以通过网络进行设备远程控制和报文收发等,可以将配置信息离线保存到 TF 卡中
`BM_WriteIsotp` 支持超高效率(接近理论极限)的 ISOTP 发送操作,需要 X2 或者 X4 设备,且需要 2.4.12.x 或者更高版本的固件,否则无法生效(但仍可以使用默认软件实现正常发送,不存在兼容性问题)
新增 `BM_CancelWrite` API,从而修复 python-can 环境下使用 `send_periodic` 函数时,资源泄露的问题
新增 `bmapi_lin_txrx` 例程,演示如何进行 LIN 报文收发,支持主机和从机
新增 `lin_analyzer_qt` 例程,演示如何通过 Qt 图形界面进行 LIN 报文收发,支持主机和从机
C++ 和 python-can 新增 `bmapi_remote_connection` 例程,演示如何通过网络远程控制 GWR 等支持以太网的新款设备
python-can 新增 `loopback_test` 例程,演示如何使用硬件进行自发自收
修复 `BM_WriteIsotp` 与 ISO15765 在某些 corner case 下的 CANFD 短包分包方式不一致的问题
修复 `BM_WriteIsotp` 在收到 FC 帧之后帧序号被错误重置的问题
新增系列 API,支持新款 X2R/X4R/GWR 设备的授时功能
优化 Windows 操作系统下的 BMAPI 极限接收帧率
在 python-can 中使用 `BM_SetTxTask` 硬件发送任务来实现 `send_periodic` 这个 Python API,保证报文的周期精度在 1ms 以内
优化 `BM_OpenEx` 的错误码,当 channelinfo 为空或者全零时,返回 `BM_ERROR_ILLPARAMVAL`
新增两个虚拟通道,可以实现虚拟通道之间的互相收发,其他功能完善中
修复 `BM_WriteIsotp` 函数在编码 CF 请求 id 时,在多个 FC 的场景下,id 被错误重置的问题
修复 `BM_ReadIsotp` 函数在一个会话中收到另外一个 SF 请求(例如 3E 80)导致当前会话被重置的问题
`can_analyzer_qt` 例程添加自动错误恢复机制,支持 USB 设备拔出检测以及 busoff 检测
BMAPI 内部新增对 `BM_NO_ACK` 模式的实现,从而支持在异步模式下快速发送报文而无需处理发送完成事件,请注意在这种模式下无法得知报文是否发送成功
18BMAPI SDK v1.10.2.306
新增 `multichannel_logger` 例程,额外演示了如何同时将多个通道捕获的报文录制到一个 ASC 文件中
修复 `BM_ReadMultiple` 和 `BM_ReadMultipleCanMessage` 在某些场景下无法通过 nmessages 参数获取已经接收到的报文数量的 bug
优化 `BM_ReadMultiple` 和 `BM_ReadMultipleCanMessage` 的返回值定义
消除 `BM_OpenEx` 在 Linux 的额外调试打印信息
修复 `BM_Enumerate` 在 Linux 下反复多次枚举时会重复枚举已经打开的设备,导致程序概率性崩溃的问题
修复 `multichannel_bmapi_demo.py` 例程收到报文后抛出 `BM_ERROR_QRCVEMPTY` 异常的问题
19BMAPI SDK v1.10.1.295
新增 `bmapi_cyclic_tx_task` 例程,演示如何使用 BUSMUST 特有的 TXTASK API 来进行周期性报文发送
新增 `multichannel_isotp_txrx_cpp` 例程,演示多通道 ISOTP(ISO15765)通信
新增对 python-can-4.0.0 的支持(理论上支持更高的 4.x.x 版本)
新增 python-can ECU UDS 模拟器例程
新增若干 API,用于支持离线配置/记录/回放相关功能
20BMAPI SDK v1.9.0.234
新增对 VB.Net 语言框架的支持
恢复对 Mingw 编译器的支持
优化 C#.Net 以及 VB.Net 的若干库导入声明
修复 C#.Net 的 example 点击 Close 无法真正关闭对应的硬件设备的问题
21BMAPI SDK v1.8.1.223
新增 `BM_ResetDevice` API,用于重启整个 USB 设备
修复 `can_analyzer_csharp` 例程在未选中任何通道时点击 Open 按钮时报错的问题
修复 C# 程序通过 `BM_Enumerate` 获取到的通道名称尾部有乱码的问题
22BMAPI SDK v1.8.0.214
支持最新的八通道硬件设备 X8PI
增加若干新的 API,支持最新的支持离线报文录制播放的设备 X4R、X2R
新增 C++ 多通道并行接收例程 `multichannel_rx_cpp`
BMAPI 在 Linux 上部分重构,CPU 占用率大幅降低
23BMAPI SDK v1.7.1.2015
支持 Python 2.7.18
Python-can 新增 `send_multiple` API 以及对应的 example
更新 raspbian64 平台的各个二进制文件
在 python-can 中自带了 aenum package
更新 udsoncan 的 `download_hex_file` 例程,现已支持加载 CANoe 格式的 security DLL
## 1.7.0.19
Qt/C#/pyqt 示例程序从此版本起支持多通道操作
新增 `bmapi_receive_only` 和 `bmapi_transmit_only` 例程
修复 Unix 系统下同时打开多通道时的卡死问题
优化 python-can 对多平台兼容性的自适应能力
## 1.6.0.18
修复远程帧无法实时发送的问题
Python-can 创建 bus 对象时允许指定采样点位置
`BM_ReadIsotp` 支持同时侦听指定的 UDS Request ID 和功能寻址地址
修复 `BM_Reset` 在多线程环境的句柄资源释放问题
## 1.6.0.17 [Alpha]
新增 `BM_GetVersion` 接口
新增 `BM_GetLogLevel` 和 `BM_SetLogLevel` 接口
24BMAPI SDK v1.5.4.166
针对 X1PRO 和 X1 设备修正了 `BM_OpenEx` 时正在接收报文导致设备无法正确配置的 bug
修正 Debian 下 `BM_ClearBuffer` 递归锁导致程序阻塞的问题
udsoncan 增加 `example.run.sh` 启动器
修正 `BM_WriteIsotp` 和 `BM_ReadIsotp` 的首个 CF 帧的序列号不对的问题
--
5.4.16 以前的历史版本,变更记录位于 BUSMASTER 上位机安装包的 changelist 中。