From 272663b2753c28ee8d459822c56a60b7eb4172d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Wed, 12 Oct 2016 12:51:50 +0200 Subject: [PATCH] Add read-eeprom.js and write-eeprom.js --- usb/read-eeprom.js | 37 +++++++++++++++++++++++++++++++++++++ usb/write-eeprom.js | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100755 usb/read-eeprom.js create mode 100755 usb/write-eeprom.js diff --git a/usb/read-eeprom.js b/usb/read-eeprom.js new file mode 100755 index 00000000..48d48b0f --- /dev/null +++ b/usb/read-eeprom.js @@ -0,0 +1,37 @@ +#!/usr/bin/env node +'use strict'; + +var usb = require('usb'); +var util = require('./util'); + +var vid = 0x16d3; +var pid = 0x05ea; +var readEepromCommandId = 6; + +var device = usb.findByIds(vid, pid); +device.open(); + +var usbInterface = device.interface(0); +if (usbInterface.isKernelDriverActive()) { + usbInterface.detachKernelDriver(); +} +usbInterface.claim(); + +var endpointIn = usbInterface.endpoints[0]; +var endpointOut = usbInterface.endpoints[1]; + +var payload = new Buffer([readEepromCommandId, 63, 0x00, 0x00]); +console.log('Sending ', util.bufferToString(payload)); +endpointOut.transfer(payload, function(err) { + if (err) { + console.error("USB error: %s", err); + process.exit(1); + } + endpointIn.transfer(64, function(err2, receivedBuffer) { + if (err2) { + console.error("USB error: %s", err2); + process.exit(2); + } + console.log('Received', util.bufferToString(receivedBuffer)); + }) +}); diff --git a/usb/write-eeprom.js b/usb/write-eeprom.js new file mode 100755 index 00000000..8db73e8e --- /dev/null +++ b/usb/write-eeprom.js @@ -0,0 +1,43 @@ +#!/usr/bin/env node +'use strict'; + +var usb = require('usb'); +var util = require('./util'); + +var vid = 0x16d3; +var pid = 0x05ea; +var writeEepromCommandId = 5; + +var device = usb.findByIds(vid, pid); +device.open(); + +var usbInterface = device.interface(0); +if (usbInterface.isKernelDriverActive()) { + usbInterface.detachKernelDriver(); +} +usbInterface.claim(); + +var endpointIn = usbInterface.endpoints[0]; +var endpointOut = usbInterface.endpoints[1]; +var arg = process.argv[2] || ''; + +if (arg.length === 0) { + console.log('Gotta specify a string to be written to the EEPROM as the argument of this script'); + process.exit(1); +} + +var payload = Buffer.concat([new Buffer([writeEepromCommandId, arg.length+2, 0x00, 0x00]), new Buffer(arg, 'utf8')]); +console.log('Sending ', util.bufferToString(payload)); +endpointOut.transfer(payload, function(err) { + if (err) { + console.error("USB error: %s", err); + process.exit(1); + } + endpointIn.transfer(64, function(err2, receivedBuffer) { + if (err2) { + console.error("USB error: %s", err2); + process.exit(2); + } + console.log('Received', util.bufferToString(receivedBuffer)); + }) +});