From 510dde748510dd83ed1402397e11e2cfd9117b91 Mon Sep 17 00:00:00 2001 From: Dominic Spill Date: Tue, 21 Jul 2015 16:42:24 +0100 Subject: [PATCH] Update rad1o firmware and libhackrf to use rad1o PID --- firmware/hackrf_usb/usb_descriptor.c | 4 +++- host/libhackrf/53-hackrf.rules | 1 + host/libhackrf/src/hackrf.c | 14 ++++++++++++-- host/libhackrf/src/hackrf.h | 1 + host/misc/udev/53-hackrf.rules.in | 2 ++ host/python/max2837_dump.py | 4 ++++ host/python/set_transceiver_mode.py | 8 ++++++-- 7 files changed, 29 insertions(+), 5 deletions(-) diff --git a/firmware/hackrf_usb/usb_descriptor.c b/firmware/hackrf_usb/usb_descriptor.c index b049da60..aaf5b019 100644 --- a/firmware/hackrf_usb/usb_descriptor.c +++ b/firmware/hackrf_usb/usb_descriptor.c @@ -26,10 +26,12 @@ #define USB_VENDOR_ID (0x1D50) -#if (defined HACKRF_ONE || defined RAD1O) +#ifdef HACKRF_ONE #define USB_PRODUCT_ID (0x6089) #elif JAWBREAKER #define USB_PRODUCT_ID (0x604B) +#elif RAD1O +#define USB_PRODUCT_ID (0x6089) /* TBD: (0xCC15) */ #else #define USB_PRODUCT_ID (0xFFFF) #endif diff --git a/host/libhackrf/53-hackrf.rules b/host/libhackrf/53-hackrf.rules index 0338ea8c..a982f4a4 100644 --- a/host/libhackrf/53-hackrf.rules +++ b/host/libhackrf/53-hackrf.rules @@ -1,3 +1,4 @@ ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="plugdev" ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="plugdev" +ATTR{idVendor}=="1d50", ATTR{idProduct}=="cc15", SYMLINK+="rad1o-%k", MODE="660", GROUP="plugdev" ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="nxp-dfu-%k", MODE="660", GROUP="plugdev" diff --git a/host/libhackrf/src/hackrf.c b/host/libhackrf/src/hackrf.c index 2902a800..05b28c09 100644 --- a/host/libhackrf/src/hackrf.c +++ b/host/libhackrf/src/hackrf.c @@ -117,6 +117,7 @@ volatile bool do_exit = false; static const uint16_t hackrf_usb_vid = 0x1d50; static const uint16_t hackrf_jawbreaker_usb_pid = 0x604b; static const uint16_t hackrf_one_usb_pid = 0x6089; +static const uint16_t rad1o_usb_pid = 0xcc15; static libusb_context* g_libusb_context = NULL; @@ -291,7 +292,9 @@ hackrf_device_list_t* ADDCALL hackrf_device_list() libusb_get_device_descriptor(list->usb_devices[i], &device_descriptor); if( device_descriptor.idVendor == hackrf_usb_vid ) { - if( (device_descriptor.idProduct == hackrf_one_usb_pid) || (device_descriptor.idProduct == hackrf_jawbreaker_usb_pid) ) { + if((device_descriptor.idProduct == hackrf_one_usb_pid) || + (device_descriptor.idProduct == hackrf_jawbreaker_usb_pid) || + (device_descriptor.idProduct == rad1o_usb_pid)) { int idx = list->devicecount++; list->usb_board_ids[idx] = device_descriptor.idProduct; list->usb_device_index[idx] = i; @@ -360,7 +363,9 @@ libusb_device_handle* hackrf_open_usb(const char* const desired_serial_number) libusb_get_device_descriptor(devices[i], &device_descriptor); if( device_descriptor.idVendor == hackrf_usb_vid ) { - if( (device_descriptor.idProduct == hackrf_one_usb_pid) || (device_descriptor.idProduct == hackrf_jawbreaker_usb_pid) ) { + if((device_descriptor.idProduct == hackrf_one_usb_pid) || + (device_descriptor.idProduct == hackrf_jawbreaker_usb_pid) || + (device_descriptor.idProduct == rad1o_usb_pid)) { printf("USB device %4x:%4x:", device_descriptor.idVendor, device_descriptor.idProduct); if( desired_serial_number != NULL ) { @@ -477,6 +482,11 @@ int ADDCALL hackrf_open(hackrf_device** device) usb_device = libusb_open_device_with_vid_pid(g_libusb_context, hackrf_usb_vid, hackrf_jawbreaker_usb_pid); } + if( usb_device == NULL ) + { + usb_device = libusb_open_device_with_vid_pid(g_libusb_context, hackrf_usb_vid, rad1o_usb_pid); + } + if( usb_device == NULL ) { return HACKRF_ERROR_NOT_FOUND; diff --git a/host/libhackrf/src/hackrf.h b/host/libhackrf/src/hackrf.h index 6f043444..c07435b5 100644 --- a/host/libhackrf/src/hackrf.h +++ b/host/libhackrf/src/hackrf.h @@ -72,6 +72,7 @@ enum hackrf_board_id { enum hackrf_usb_board_id { USB_BOARD_ID_JAWBREAKER = 0x604B, USB_BOARD_ID_HACKRF_ONE = 0x6089, + USB_BOARD_ID_RAD1O = 0xCC15, USB_BOARD_ID_INVALID = 0xFFFF, }; diff --git a/host/misc/udev/53-hackrf.rules.in b/host/misc/udev/53-hackrf.rules.in index 951c424d..05144a7f 100644 --- a/host/misc/udev/53-hackrf.rules.in +++ b/host/misc/udev/53-hackrf.rules.in @@ -2,5 +2,7 @@ ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="@HACKRF_GROUP@" # HackRF One ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="@HACKRF_GROUP@" +# HackRF One +ATTR{idVendor}=="1d50", ATTR{idProduct}=="CC15", SYMLINK+="rad1o-%k", MODE="660", GROUP="@HACKRF_GROUP@" # HackRF DFU ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="nxp-dfu-%k", MODE="660", GROUP="@HACKRF_GROUP@" diff --git a/host/python/max2837_dump.py b/host/python/max2837_dump.py index c1732b2e..d0e80f48 100755 --- a/host/python/max2837_dump.py +++ b/host/python/max2837_dump.py @@ -32,6 +32,10 @@ else: if device: print 'Find: HackRF One' else: + device = usb.core.find(idVendor=0x1d50, idProduct=0xCC15) + if device: + print 'Find: Rad1o' + else: print 'Not find any HackRF device.' sys.exit() device.set_configuration() diff --git a/host/python/set_transceiver_mode.py b/host/python/set_transceiver_mode.py index c1307532..fe013709 100755 --- a/host/python/set_transceiver_mode.py +++ b/host/python/set_transceiver_mode.py @@ -31,8 +31,12 @@ else: if device: print 'Find: HackRF One' else: - print 'Not find any HackRF device.' - sys.exit() + device = usb.core.find(idVendor=0x1d50, idProduct=0xCC15) + if device: + print 'Find: Rad1o' + else: + print 'Not find any HackRF device.' + sys.exit() device.set_configuration() def set_rx():