如何在 Linux 上(本地或通过虚拟机)更新 Cardo Packtalk Slim(或 Freecom)的固件?

如何在 Linux 上(本地或通过虚拟机)更新 Cardo Packtalk Slim(或 Freecom)的固件?

Cardo 蓝牙通信系统(Packtalk、freecom...)的固件更新软件仅适用于 Windows 和 Mac OS。我没有本机运行这些操作系统。是否可以通过 Debian 操作系统更新我的 Cardo 设备固件。我通过 wine(版本 5.0.3)安装 Cardo Update.exe 文件失败,并出现以下错误:“安装错误。”请重新启动并重试。

002C:err:ole:cogetClassObject类{A2A9545D-A0C2-42B4-9708-A0B2B2BADD77C8}未注册:err:ole:create_server类{a2a9545d-a0c2-42b4-9708-a0b2badd77c8} 未注册 002c:err:ole:CoGetClassObject 无法为上下文 0x17 创建类对象 {a2a9545d-a0c2-42b4-9708-a0b2badd77c8}

答案1

受到 Tonphai 解决方案的启发,我试图找到一个带有 Virtualbox 的解决方案。

使用以下命令获取已连接 USB 设备的信息。确保 Cardo 包已打开。您需要在 Virtualbox 上安装有效的来宾 Windows。

lsusb

我的输出是:

Bus 002 Device 007: ID 2685:0900 Cardo Systems Inc. Cardo Device

在 Virtualbox Manager 中,转到此 Windows 虚拟机的设置,选择 USB。我将 USB 3.0 控制器保持打开状态。创建新的 USB 过滤器并为名称输入一些有意义的文本。我使用“Cardo(手册)”,供应商 ID 是2685,产品 ID 为0900。序列号我设置为0并端口为4

在此输入图像描述

起初这似乎不起作用,但重新启动我的 Linux 机器后,它似乎没问题。为了确保 USB 设备被识别,请确保您的用户是vbox用户团体

sudo adduser $USER vboxusers

确保按照此处的说明安装最新的 Virtualbox Guest Additions:https://www.virtualbox.org/manual/ch04.html

安装适用于 Windows 的 Cardo 更新程序:https://www.cardosystems.com/download-cardo-updater/

启动 Windows Guest VM 后,转到 VB 菜单并选择“设备 - USB”,然后选择应该列出的 Cardo 设备。这应该使 Cardo 安装软件能够识别您的设备并更新其固件。

希望对你有帮助。

在此输入图像描述

答案2

我能够将 Cardo 设备 (2 Packtalk Slim) 的固件从原始版本 (4.2) 更新到迄今为止的最新版本 (5.7)。我在 Debian 中通过运行 Windows 10 Pro 的虚拟机实现了这一点。它没有开箱即用地更新,因为它要求我在固件更新过程中加载(附加)和卸载(分离)多个 xml 文件。回想起来,在公园散步。

对于 Debian 上的虚拟化,KVM(QEMU、libvirt)似乎是最佳选择。要安装它:

sudo apt-get install qemu-system libvirt-clients libvirt-daemon-system virt-manager

virt-manager 有一个 GUI,可以轻松创建和运行虚拟机。我在上面安装了 Windows 10 Pro .iso。之后我就可以将它作为来宾操作系统运行。

Cardo 更新软件可从 cardosystems 网站获取,完美安装在来宾操作系统 (Win10) 上。

第一个障碍是让来宾操作系统识别 USB 主机设备(Cardo 单元)。为此,请连接它并在主机操作系统 (Debian) 上的终端控制台中运行 lsusb 命令:

lsusb

总线 001 设备 035:ID2685:0900Cardo Peripheral Systems LTD [Packtalk Bold 蓝牙摩托车对讲机]

记下供应商和产品 ID。这里的供应商 ID 是2685产品 ID 为0900

是时候创建第一个 (1/3) .xml 文件以附加到我们的虚拟机了。我们将其命名为“usb_device_cardo.xml”,并将其放置在主机操作系统 (Debian) 的主文件夹中。它应包含以下内容:

<hostdev mode="subsystem" type="usb" managed="yes">
  <source>
    <vendor id="0x2685"/>
    <product id="0x0900"/>
  </source>
  <address type="usb" bus="0" port="4"/>
</hostdev>

让我们测试一下cardo单元是否被识别。当来宾操作系统 (win10) 运行时,在主机操作系统 (Debian) 上打开终端控制台并以 root 身份运行以下命令(将“win10”替换为您的 VM 的名称):

virsh attach-device win10 --file usb_device_cardo.xml --current

设备连接成功

您的 Cardo 设备将在您的来宾操作系统 (win10) 上可用。让我们分离在运行 Cardo Update 软件之前:

virsh detach-device win10 --file usb_device_cardo.xml

设备分离成功

Cardo 更新软件运行后,我们可以重新连接它以开始固件更新:

virsh attach-device win10 --file usb_device_cardo.xml --current

固件更新将开始,但很快就会停止,并且 USB 似乎已从来宾操作系统 (win10) 中弹出。如果您在主机操作系统 (Debian) 的终端中再次运行 lsusb,您将看到 Cardo 设备有一个新的产品 ID(在我的例子中是 0901,而不是 0900。)是时候创建第二个 (2/3) 了。 xml 文件附加到我们的虚拟机。我们将其命名为“usb_device_cardo_2.xml”。除了更新的产品 ID 之外,它应该与前一个类似(0x0901)和端口地址(5):

<hostdev mode="subsystem" type="usb" managed="yes">
  <source>
    <vendor id="0x2685"/>
    <product id="0x0901"/>
  </source>
  <address type="usb" bus="0" port="5"/>
</hostdev>

让我们在固件更新超时之前附加它。在主机操作系统 (Debian) 的终端中运行:

virsh attach-device win10 --file usb_device_cardo_2.xml --current

设备连接成功

固件更新将继续,直到再次停止并“弹出”来宾操作系统(win10)上的设备。

在主机操作系统 (Debian) 上再次运行 lsusb,Cardo 设备将再次拥有新的产品 ID(在我的例子中为 0001)。是时候创建第三个也是最后一个 .xml 文件“usb_device_cardo_3.xml”并更新产品 ID(0x0001)和地址端口(6):

<hostdev mode="subsystem" type="usb" managed="yes">
  <source>
    <vendor id="0x2685"/>
    <product id="0x0001"/>
  </source>
  <address type="usb" bus="0" port="6"/>
</hostdev>

再次以 root 身份进入主机操作系统 (Debian) 的终端:

virsh attach-device win10 --file usb_device_cardo_3.xml --current

设备连接成功

要完成固件更新,您可能必须使用“在三个不同的 xml 文件之间来回附加/分离”virsch 连接设备“命令。要知道要附加哪一个,只需运行LSSB在您的主机操作系统 (Debian) 上,并附加具有相同产品 ID 的 xml 文件(在我的例子中为 0x0900、0x901 或 0x0001)。

固件更新了!让我知道是否有帮助!

相关内容