summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md56
-rw-r--r--fw-update.c19
2 files changed, 75 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..bd9d177
--- /dev/null
+++ b/README.md
@@ -0,0 +1,56 @@
+# Logitech Unifying firmware updater for Linux
+This repository contains an experimental firmware updater for the Logitech
+Wireless Rechargeable Touchpad T650. It was successfully tested on Lekensteyn's
+T650 device.
+
+The tool is created using reverse engineering on the [official Logitech firmware
+updater][1] and a virtual, fake [Logitech Unifying Receiver device in QEMU][2].
+It may therefore not work in certain edge cases although I have tried my best to
+match the behavior of the firmware updater. See also the comments in
+`fw-update.c`. The custom QEMU sources are based on v2.2.0, with
+v2.2.0-76-g5ac86ef being the latest version which was used for REing ("unifying:
+acknowledge device when entering LTx").
+
+If the DFU (Device Firmware Updater) process is generic to all Logitech devices,
+then this tool could be modified to handle other devices as well. As of now
+(December 2014), it contains some hard-coded details.
+
+Feel free to risk your device by trying this tool, it worked for me, but YMMV.
+
+## Building
+This tool depends on an experimental ltunify library. The expected directory
+layout is:
+
+ - ltunify: https://git.lekensteyn.nl/ltunify.git, branch refactor-lib, tested
+ with commit 1b3247bc573314e4b05ce5bc60cf9f14c93228a5
+ - ltunify/t650-dfu: this repository, tested with commit
+ 4cc4c75708811d8ef54edd2384b14d00b736c874
+
+ cd ltunify/lib
+ make
+ cd ../t650-dfu
+ make
+
+This should produce a `fw-update` binary (tested with Clang 3.5.0).
+
+## Usage
+The command is used as follows:
+
+ ./fw-update /dev/hidrawX device_index flash-file
+
+Example for my T650 device which is paired on index 2 (use `ltunify list` to
+find out the index):
+
+ ./fw-update /dev/hidraw1 2 RQM_041_001_00038.bin
+
+## Copyright
+The `RQM_041_001_00038.bin` firmware blob is from Logitech. License unknown, but
+it was retrieved from USB communications between the firmware updater and the
+virtual USB device.
+
+The `fw-update.c` is authored by Peter Wu (peter@lekensteyn.nl). It is released
+under the terms of the GPL license version 3 (or any latter version, at your
+choice).
+
+ [1]: http://www.logitech.com/en-us/support/articles/unifying-firmware-t650
+ [2]: https://git.lekensteyn.nl/peter/qemu/log/?h=logitech-unifying-2.2
diff --git a/fw-update.c b/fw-update.c
index 4bd712e..f596f7b 100644
--- a/fw-update.c
+++ b/fw-update.c
@@ -1,3 +1,22 @@
+/*
+ * Unofficial firmware updater for the Logitech T650 touchpad.
+ *
+ * Copyright (C) 2014 Peter Wu <peter@lekensteyn.nl>
+ *
+ * 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 3 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/>.
+ */
+
#include <stdbool.h>
#include <stdio.h>
#include <fcntl.h>