diff --git a/openhantek-extractfw/90-hantek-dso.rules.in b/openhantek-extractfw/90-hantek.rules.in index 9736d13..945d7da 100644 --- a/openhantek-extractfw/90-hantek-dso.rules.in +++ b/openhantek-extractfw/90-hantek.rules.in @@ -1,23 +1,23 @@ # Hantek DSO-2090 -SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/2090/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/DSO2090_firmware.hex -s @hantekfirmwaredir@/DSO2090_loader.hex -D $env{DEVNAME}" +SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/2090/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/dso2090-firmware.hex -s @hantekfirmwaredir@/dso2090-loader.hex -D $env{DEVNAME}" SYSFS{idVendor}=="04b5", SYSFS{idProduct}=="2090", MODE="0660", GROUP="plugdev" # Hantek DSO-2100 -SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="547/1006/*", RUN+="/sbin/fxload -t an21 -I @hantekfirmwaredir@/DSO2100_firmware.hex -s @hantekfirmwaredir@/DSO2100_loader.hex -D $env{DEVNAME}" +SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="547/1006/*", RUN+="/sbin/fxload -t an21 -I @hantekfirmwaredir@/dso2100-firmware.hex -s @hantekfirmwaredir@/dso2100-loader.hex -D $env{DEVNAME}" SYSFS{idVendor}=="0547", SYSFS{idProduct}=="1002", MODE="0660", GROUP="plugdev" # Hantek DSO-2150 -SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/2150/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/DSO2150_firmware.hex -s @hantekfirmwaredir@/DSO2150_loader.hex -D $env{DEVNAME}" +SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/2150/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/dso2150-firmware.hex -s @hantekfirmwaredir@/dso2150-loader.hex -D $env{DEVNAME}" SYSFS{idVendor}=="04b5", SYSFS{idProduct}=="2150", MODE="0660", GROUP="plugdev" # Hantek DSO-2250 -SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/2250/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/DSO2250_firmware.hex -s @hantekfirmwaredir@/DSO2250_loader.hex -D $env{DEVNAME}" +SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/2250/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/dso2250-firmware.hex -s @hantekfirmwaredir@/dso2250-loader.hex -D $env{DEVNAME}" SYSFS{idVendor}=="04b5", SYSFS{idProduct}=="2250", MODE="0660", GROUP="plugdev" # Hantek DSO-5200 -SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/5200/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/DSO5200_firmware.hex -s @hantekfirmwaredir@/DSO5200_loader.hex -D $env{DEVNAME}" +SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/5200/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/dso5200-firmware.hex -s @hantekfirmwaredir@/dso5200-loader.hex -D $env{DEVNAME}" SYSFS{idVendor}=="04b5", SYSFS{idProduct}=="5200", MODE="0660", GROUP="plugdev" # Hantek DSO-5200A -SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/520A/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/DSO520A_firmware.hex -s @hantekfirmwaredir@/DSO520A_loader.hex -D $env{DEVNAME}" +SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="4b4/520A/*", RUN+="/sbin/fxload -t fx2 -I @hantekfirmwaredir@/dso520a-firmware.hex -s @hantekfirmwaredir@/dso520a-loader.hex -D $env{DEVNAME}" SYSFS{idVendor}=="04b5", SYSFS{idProduct}=="520A", MODE="0660", GROUP="plugdev" diff --git a/openhantek-extractfw/ChangeLog b/openhantek-extractfw/ChangeLog index 114ddb7..cc52458 100644 --- a/openhantek-extractfw/ChangeLog +++ b/openhantek-extractfw/ChangeLog @@ -27,3 +27,8 @@ 2011-02-03 Oliver Haag * Input files are given as commandline parameters (Not hardcoded anymore) * Cleaned up the code + +2011-02-08 Oliver Haag +* Version 0.7.0: +* Renamed this extraction tool to openhantek-extractfw +* Added fwget.sh for automatic driver download and firmware extraction diff --git a/openhantek-extractfw/Makefile.am b/openhantek-extractfw/Makefile.am index bc38f1c..06d3904 100644 --- a/openhantek-extractfw/Makefile.am +++ b/openhantek-extractfw/Makefile.am @@ -1,6 +1,6 @@ METASOURCES = AUTO -dsoextractfw_LDFLAGS = $(all_libraries) -bin_PROGRAMS = dsoextractfw -dsoextractfw_LDADD = -lbfd -dsoextractfw_SOURCES = dsoextractfw.c -noinst_DATA = 90-hantek-dso.rules +bin_PROGRAMS = openhantek-extractfw +openhantek_extractfw_LDFLAGS = $(all_libraries) +openhantek_extractfw_LDADD = -lbfd +openhantek_extractfw_SOURCES = extractfw.c +noinst_DATA = 90-hantek.rules diff --git a/openhantek-extractfw/configure.in b/openhantek-extractfw/configure.in index 74a0656..38fe7f2 100644 --- a/openhantek-extractfw/configure.in +++ b/openhantek-extractfw/configure.in @@ -1,5 +1,5 @@ -AC_INIT([dsoextract], [0.6.2], [oliver.haag@gmail.com]) -AC_CONFIG_SRCDIR([dsoextractfw.c]) +AC_INIT([openhantek-extractfw], [0.7.0], [oliver.haag@gmail.com]) +AC_CONFIG_SRCDIR([extractfw.c]) # Generates a config.h #AC_CONFIG_HEADERS([config.h]) @@ -32,12 +32,12 @@ AC_ARG_WITH( [firmware-dir], [with_firmware_dir="/usr/local/share"], ) -hantekfirmwaredir="$with_firmware_dir/hantekdso" +hantekfirmwaredir="$with_firmware_dir/hantek" AC_SUBST(hantekfirmwaredir) AC_CONFIG_FILES( [Makefile] - [90-hantek-dso.rules] + [90-hantek.rules] ) AC_OUTPUT diff --git a/openhantek-extractfw/dsoextractfw.c b/openhantek-extractfw/extractfw.c index 89ab26c..89ab26c 100644 --- a/openhantek-extractfw/dsoextractfw.c +++ b/openhantek-extractfw/extractfw.c diff --git a/openhantek-extractfw/fwget.sh b/openhantek-extractfw/fwget.sh new file mode 100755 index 0000000..42f3fe8 --- /dev/null +++ b/openhantek-extractfw/fwget.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +BASEURL="http://www.hantek.com.cn/Product/32Driver" +TARGETDIR="./firmware" +ARCHIVE="Driver.rar" +EXTRACTFW="openhantek-extractfw" + +if [ -x "./$EXTRACTFW" ]; then + EXTRACTFW="./$EXTRACTFW" +fi + +if [ $# -ge 1 ]; then + TARGETDIR="$1" +fi + +if [ ! -d "$TARGETDIR" ]; then + mkdir -p "$TARGETDIR" +fi + +for MODEL in "2090" "2150" "2250" "5200" "5200A"; do + echo "Downloading official drivers for DSO$MODEL..." + wget -O "$ARCHIVE" -q "$BASEURL/$MODEL/$ARCHIVE" + + echo "Extracting useful parts from driver archive..." + unrar e -inul -n"Driver/*1.*" -y "Driver.rar" "$TARGETDIR" +done + +if [ -e "$ARCHIVE" ]; then + rm "$ARCHIVE" +fi + +ORIGINALIFS="$IFS" +IFS=" +" +for FILENAME in $(find "$TARGETDIR" -iname "*.sys"); do + echo "" + echo "Extracting firmware from $FILENAME..." + "$EXTRACTFW" "$FILENAME" 2>&1 | grep -v "^BFD:.*IMAGE_SCN_MEM_NOT_PAGED" + rm "$FILENAME" +done +IFS="$ORIGINALIFS"