summaryrefslogtreecommitdiff
path: root/keyboards/ymd96/program
diff options
context:
space:
mode:
authorAndrew <4030760+sparkyman215@users.noreply.github.com>2017-10-14 13:01:02 -0400
committerJack Humbert <jack.humb@gmail.com>2017-10-14 07:01:02 -1000
commit6531d64ac75b1614e2b4b4d92abb9a3586014584 (patch)
treee3d5391fb245f9dc63da03ee02cde7b937d20b43 /keyboards/ymd96/program
parentf9f3afd76778c0ec152b25affb05a9b7d237dc52 (diff)
Add YMD96 Keyboard (#1838)
* add ymd96 base currently not working correctly. * Update honestly not really sure what I've been doing but I'm just more or less brute forcing this until I can get the pcb schematic or something * honestly just trying stuff out * Update keymaps Getting closer hopefully * ymd96 works! at least for me * Update readme * Update readme * Update readme
Diffstat (limited to 'keyboards/ymd96/program')
-rw-r--r--keyboards/ymd96/program74
1 files changed, 74 insertions, 0 deletions
diff --git a/keyboards/ymd96/program b/keyboards/ymd96/program
new file mode 100644
index 0000000000..a88d9cd9b0
--- /dev/null
+++ b/keyboards/ymd96/program
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+# Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import print_function
+
+import os
+import sys
+import time
+import usb
+
+if len(sys.argv) < 2:
+ print('Usage: %s <firmware.hex>' % sys.argv[0])
+ sys.exit(1)
+
+print('Searching for ps2avrGB... ', end='')
+
+dev = usb.core.find(idVendor=0x20A0, idProduct=0x422D)
+if dev is None:
+ raise ValueError('Device not found')
+
+print('Found', end='\n\n')
+
+print('Device Information:')
+print(' idVendor: %d (0x%04x)' % (dev.idVendor, dev.idVendor))
+print(' idProduct: %d (0x%04x)' % (dev.idProduct, dev.idProduct))
+print('Manufacturer: %s' % (dev.iManufacturer))
+print('Serial: %s' % (dev.iSerialNumber))
+print('Product: %s' % (dev.iProduct), end='\n\n')
+
+print('Transferring control to bootloader... ', end='')
+
+dev.set_configuration()
+
+request_type = usb.util.build_request_type(
+ usb.util.CTRL_OUT,
+ usb.util.CTRL_TYPE_CLASS,
+ usb.util.CTRL_RECIPIENT_DEVICE)
+
+USBRQ_HID_SET_REPORT = 0x09
+HID_REPORT_OPTION = 0x0301
+
+
+try:
+ dev.ctrl_transfer(
+ request_type,
+ USBRQ_HID_SET_REPORT,
+ HID_REPORT_OPTION,
+ 0,
+ [0, 0, 0xFF] + [0] * 5
+ )
+except usb.core.USBError:
+ # for some reason I keep getting USBError, but it works!
+ pass
+
+# wait a bit until bootloader starts up
+time.sleep(2)
+
+print('OK')
+print('Programming...')
+if os.system('bootloadHID -r "%s"' % sys.argv[1]) == 0:
+ print('\nDone!')