Make update-module-firmware.js more robust and able to recover bricked modules (including the left half) by utilizing the newly added wait-for-kboot-idle.js
This commit is contained in:
@@ -102,6 +102,7 @@ exports = module.exports = moduleExports = {
|
|||||||
deviceProtocolVersion: 0,
|
deviceProtocolVersion: 0,
|
||||||
protocolVersions: 1,
|
protocolVersions: 1,
|
||||||
configSizes: 2,
|
configSizes: 2,
|
||||||
|
currentKbootCommand: 3,
|
||||||
},
|
},
|
||||||
modulePropertyIds: {
|
modulePropertyIds: {
|
||||||
protocolVersions: 0,
|
protocolVersions: 0,
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ const blhostBuspal = `${blhostUsb} --buspal i2c,${i2cAddress},100k`;
|
|||||||
config.verbose = true;
|
config.verbose = true;
|
||||||
exec(`${usbDir}/send-kboot-command-to-module.js ping ${moduleSlot}`);
|
exec(`${usbDir}/send-kboot-command-to-module.js ping ${moduleSlot}`);
|
||||||
exec(`${usbDir}/jump-to-module-bootloader.js ${moduleSlot}`);
|
exec(`${usbDir}/jump-to-module-bootloader.js ${moduleSlot}`);
|
||||||
|
exec(`${usbDir}/wait-for-kboot-idle.js`);
|
||||||
exec(`${usbDir}/reenumerate.js buspal`);
|
exec(`${usbDir}/reenumerate.js buspal`);
|
||||||
execRetry(`${blhostBuspal} get-property 1`);
|
execRetry(`${blhostBuspal} get-property 1`);
|
||||||
exec(`${blhostBuspal} flash-erase-all-unsecure`);
|
exec(`${blhostBuspal} flash-erase-all-unsecure`);
|
||||||
|
|||||||
22
packages/usb/wait-for-kboot-idle.js
Executable file
22
packages/usb/wait-for-kboot-idle.js
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
const uhk = require('./uhk');
|
||||||
|
|
||||||
|
function getCurrentKbootCommand() {
|
||||||
|
device.write(uhk.getTransferData(new Buffer([uhk.usbCommands.getDeviceProperty, uhk.devicePropertyIds.currentKbootCommand])));
|
||||||
|
const response = Buffer.from(device.readSync());
|
||||||
|
const currentKbootCommand = response[1];
|
||||||
|
if (currentKbootCommand == 0) {
|
||||||
|
console.log('Bootloader pinged.');
|
||||||
|
process.exit(0);
|
||||||
|
} else {
|
||||||
|
console.log("Cannot ping the bootloader. Please reconnect the left keyboard half. It probably needs several tries, so keep reconnecting until you see this message.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const device = uhk.getUhkDevice();
|
||||||
|
|
||||||
|
getCurrentKbootCommand();
|
||||||
|
|
||||||
|
setInterval(() => {
|
||||||
|
getCurrentKbootCommand();
|
||||||
|
}, 500);
|
||||||
Reference in New Issue
Block a user