├── .gitignore ├── COPYING ├── README.md ├── TRADEMARK ├── firmware ├── Makefile ├── README ├── assembly_test │ ├── Makefile │ ├── README │ └── assembly_test.c ├── blinky │ ├── Makefile │ ├── README │ └── blinky.c ├── bluetooth_rxtx │ ├── Makefile │ ├── README │ ├── bluetooth.c │ ├── bluetooth.h │ ├── bluetooth_le.c │ ├── bluetooth_le.h │ ├── bluetooth_rxtx.c │ ├── cc2400_rangetest.c │ ├── cc2400_rangetest.h │ ├── ego.c │ ├── ego.h │ ├── ubertooth_usb.c │ └── ubertooth_usb.h ├── bootloader │ ├── Makefile │ ├── README │ ├── bootloader.cpp │ ├── dfu.cpp │ ├── dfu.h │ ├── flash.h │ ├── iap.cpp │ └── iap.h ├── cc2400_test │ ├── Makefile │ ├── README │ └── cc2400_test.c ├── clock_test │ ├── Makefile │ ├── README │ └── clock_test.c ├── common.mk ├── common │ ├── LPC17xx_Interrupts.c │ ├── LPC17xx_Linker_Script_bootloader.ld │ ├── LPC17xx_Linker_Script_with_bootloader.ld │ ├── LPC17xx_Linker_Script_without_bootloader.ld │ ├── LPC17xx_Startup.c │ ├── README │ ├── cc2400.h │ ├── lpc17.h │ ├── lpcusb │ │ ├── README │ │ └── target │ │ │ ├── debug.h │ │ │ ├── type.h │ │ │ ├── usbapi.h │ │ │ ├── usbcontrol.c │ │ │ ├── usbhw_lpc.c │ │ │ ├── usbhw_lpc.h │ │ │ ├── usbinit.c │ │ │ ├── usbstdreq.c │ │ │ └── usbstruct.h │ ├── sections.ld │ ├── serial_fifo.c │ ├── serial_fifo.h │ ├── types.h │ ├── ubertooth.c │ ├── ubertooth.h │ ├── usb_serial.c │ └── usb_serial.h ├── ctags.mk ├── tc13badge │ ├── Makefile │ ├── R5F212L4.ld │ ├── README │ ├── bitmaps.h │ ├── cc2400.h │ ├── init.S │ ├── ivects.S │ ├── mkports │ ├── r8c2l.io │ ├── tc13badge.c │ ├── tc13badge.h │ └── toorcon.c └── usb_test │ ├── Makefile │ ├── README │ └── usb_test.c ├── hardware ├── artichoke │ ├── README │ ├── artichoke │ ├── artichoke-cache.lib │ ├── artichoke.brd │ ├── artichoke.cmp │ ├── artichoke.net │ ├── artichoke.pro │ └── artichoke.sch ├── broccoli │ ├── README │ ├── broccoli │ ├── broccoli-cache.lib │ ├── broccoli.brd │ ├── broccoli.cmp │ ├── broccoli.net │ ├── broccoli.pro │ └── broccoli.sch ├── celery │ ├── README │ ├── celery │ ├── celery-cache.lib │ ├── celery.brd │ ├── celery.cmp │ ├── celery.net │ ├── celery.pro │ └── celery.sch ├── endive │ ├── README │ ├── endive-cache.lib │ ├── endive.brd │ ├── endive.cmp │ ├── endive.net │ ├── endive.pro │ └── endive.sch ├── kicad │ ├── ubertooth-symbols.dcm │ ├── ubertooth-symbols.lib │ ├── ubertooth.mdc │ └── ubertooth.mod ├── pogoprog │ ├── pogoprog-cache.lib │ ├── pogoprog.brd │ ├── pogoprog.cmp │ ├── pogoprog.net │ ├── pogoprog.pro │ └── pogoprog.sch ├── tc13badge │ ├── README │ ├── tc13badge │ ├── tc13badge-cache.lib │ ├── tc13badge.brd │ ├── tc13badge.cmp │ ├── tc13badge.net │ ├── tc13badge.pro │ └── tc13badge.sch ├── ubertooth-one │ ├── README │ ├── ubertooth-one │ ├── ubertooth-one-cache.lib │ ├── ubertooth-one.brd │ ├── ubertooth-one.cmp │ ├── ubertooth-one.net │ ├── ubertooth-one.pro │ └── ubertooth-one.sch └── ubertooth-zero │ ├── README │ ├── ubertooth-zero-bom.csv │ ├── ubertooth-zero.brd │ └── ubertooth-zero.sch ├── host ├── CMakeLists.txt ├── README.btle ├── README.cmake ├── README.md ├── cmake │ ├── cmake_uninstall.cmake.in │ └── modules │ │ ├── FindBLUETOOTH.cmake │ │ ├── FindBTBB.cmake │ │ ├── FindPackageHandleStandardArgs.cmake │ │ ├── FindPythonInterp.cmake │ │ ├── FindUBERTOOTH.cmake │ │ ├── FindUSB1.cmake │ │ ├── GetGitRevisionDescription.cmake │ │ └── GetGitRevisionDescription.cmake.in ├── kismet │ ├── README │ ├── plugin-ubertooth-phyneutral │ │ ├── Makefile │ │ ├── README │ │ ├── README.developers │ │ ├── kismet_ubertooth.cc │ │ ├── packet_btbb.cc │ │ ├── packet_btbb.h │ │ ├── packet_btbb_types.cc │ │ ├── packetsource_ubertooth.cc │ │ ├── packetsource_ubertooth.h │ │ ├── phy_btbb.cc │ │ └── phy_btbb.h │ └── plugin-ubertooth │ │ ├── Makefile │ │ ├── README │ │ ├── kismet_ubertooth.cc │ │ ├── packet_btbb.cc │ │ ├── packet_btbb.h │ │ ├── packet_btbb_types.cc │ │ ├── packetsource_ubertooth.cc │ │ ├── packetsource_ubertooth.h │ │ ├── tracker_btbb.cc │ │ ├── tracker_btbb.h │ │ └── ubertooth_ui.cc ├── libubertooth │ ├── CMakeLists.txt │ └── src │ │ ├── CMakeLists.txt │ │ ├── ubertooth.c │ │ ├── ubertooth.h │ │ ├── ubertooth_control.c │ │ ├── ubertooth_control.h │ │ ├── ubertooth_interface.h │ │ ├── version.c.in │ │ └── version.h ├── misc │ ├── CMakeLists.txt │ └── udev │ │ ├── 40-ubertooth.rules.in │ │ └── CMakeLists.txt ├── packaging │ ├── Portfile │ └── ubertooth.rb ├── python │ ├── CMakeLists.txt │ ├── extcap │ │ ├── README │ │ └── btle-extcap.py │ └── specan_ui │ │ ├── CMakeLists.txt │ │ ├── README │ │ ├── build │ │ └── lib.linux-x86_64-2.7 │ │ │ └── specan │ │ │ ├── Ubertooth.py │ │ │ └── __init__.py │ │ ├── setup.py │ │ ├── setup.py.in │ │ ├── specan │ │ ├── Ubertooth.py │ │ └── __init__.py │ │ └── ubertooth-specan-ui └── ubertooth-tools │ ├── CMakeLists.txt │ ├── getopt │ ├── getopt.c │ └── getopt.h │ └── src │ ├── CMakeLists.txt │ ├── arglist.c │ ├── arglist.h │ ├── cc2400.c │ ├── cc2400.h │ ├── dfu.h │ ├── ubertooth-btle.c │ ├── ubertooth-debug.c │ ├── ubertooth-dfu.c │ ├── ubertooth-dump.c │ ├── ubertooth-ego.c │ ├── ubertooth-follow.c │ ├── ubertooth-rx.c │ ├── ubertooth-scan.c │ ├── ubertooth-specan.c │ └── ubertooth-util.c ├── tools ├── RELEASENOTES ├── ubertooth-release.sh └── ubertooth-release.txt └── web ├── Makefile ├── README ├── Rakefile ├── Rules ├── config.yaml ├── content ├── firmware │ └── develop.html ├── hardware │ ├── build.html │ ├── one.html │ ├── program.html │ └── zero.html ├── host │ └── develop.html ├── images │ ├── kismet.png │ ├── pogoprog-placement.jpeg │ ├── pogoprog.jpeg │ ├── specan_ui.png │ ├── u1_roadmap.png │ ├── ubertooth-lap.png │ ├── ubertooth-one-zero.jpeg │ ├── ubertooth-one.jpeg │ └── ubertooth-zero.jpeg ├── index.html ├── stylesheet.css └── usage │ ├── build.html │ └── start.html ├── layouts └── default.html └── lib └── default.rb /.gitignore: -------------------------------------------------------------------------------- 1 | # host and firmware 2 | *.o 3 | *.so.* 4 | *.pyc 5 | host/build/* 6 | 7 | # firmware build output 8 | *.bin 9 | *.d 10 | *.dfu 11 | *.elf 12 | *.hex 13 | *.lss 14 | *.lst 15 | *.map 16 | *.srec 17 | *.sym 18 | 19 | # host utilities 20 | ubertooth-btle 21 | ubertooth-debug 22 | ubertooth-dump 23 | ubertooth-follow 24 | ubertooth-rx 25 | ubertooth-scan 26 | ubertooth-specan 27 | ubertooth-util 28 | 29 | host/python/*/build/* 30 | 31 | # kismet plugins 32 | ubertooth.so 33 | ubertooth_ui.so 34 | 35 | # r8c stuff 36 | r8c2l.h 37 | r8c2l.inc 38 | 39 | # web output 40 | web/output/* 41 | web/tmp/* 42 | 43 | # Source code indexing files. 44 | tags 45 | tags.log 46 | TAGS 47 | TAGS.log 48 | cscope* 49 | ID 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Ubertooth 2 | ========= 3 | 4 | Project Ubertooth is an open source wireless development platform 5 | suitable for Bluetooth experimentation. Ubertooth ships with a capable 6 | BLE (Bluetooth Smart) sniffer and can sniff some data from Basic Rate 7 | (BR) Bluetooth Classic connections. 8 | 9 | The latest release is [2014-02-R2](https://github.com/greatscottgadgets/ubertooth/releases/tag/2014-02-R2). 10 | The latest firmware build can be found on the release page. 11 | 12 | This release is paired with [libbtbb 2014-02-R2](https://github.com/greatscottgadgets/libbtbb/releases/tag/2014-02-R2). 13 | 14 | Instructions for flashing the firmware can be found [on the corresponding Wiki page](https://github.com/greatscottgadgets/ubertooth/wiki/Firmware). 15 | 16 | History 17 | ------- 18 | 19 | The first hardware revision is called Ubertooth Zero and was demonstrated at 20 | ToorCon 12 on October 24th, 2010. Ubertooth Zero has been superseded. 21 | 22 | The current hardware revision is called Ubertooth One and was demonstrated at 23 | ShmooCon 7 on January 29th, 2011. 24 | 25 | More Info 26 | --------- 27 | 28 | Additional documentation can be found in README files within the various 29 | subdirectories and on the web site in the web directory or at the URL below. 30 | 31 | [project site](http://ubertooth.sourceforge.net/) 32 | 33 | [Ubertooth GitHub](https://github.com/greatscottgadgets/ubertooth) 34 | 35 | Contributors 36 | ------------ 37 | 38 | - Michael Ossmann 39 | - Dominic Spill 40 | - Mike Ryan 41 | - Will Code 42 | - Jared Boone 43 | - Many others 44 | -------------------------------------------------------------------------------- /TRADEMARK: -------------------------------------------------------------------------------- 1 | "Ubertooth" is a trademark of Michael Ossmann. Permission to use the trademark 2 | with attribution to Michael Ossmann is granted to all licensees of Project 3 | Ubertooth for the purpose of naming or describing copies or derived works. 4 | (See COPYING.) 5 | -------------------------------------------------------------------------------- /firmware/Makefile: -------------------------------------------------------------------------------- 1 | #-*- makefile -*- 2 | # 3 | # Copyright 2010 Michael Ossmann 4 | # 5 | # This file is part of Project Ubertooth. 6 | # 7 | # This program is free software; you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation; either version 2, or (at your option) 10 | # any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program; see the file COPYING. If not, write to 19 | # the Free Software Foundation, Inc., 51 Franklin Street, 20 | # Boston, MA 02110-1301, USA. 21 | 22 | DIRS = blinky bluetooth_rxtx cc2400_test clock_test usb_test assembly_test 23 | 24 | all: $(DIRS) 25 | 26 | clean: $(DIRS:%=%_clean) 27 | 28 | ctags: $(DIRS:%=%_ctags) 29 | 30 | ctags_clean: $(DIRS:%=%_ctags_clean) 31 | 32 | $(DIRS): 33 | $(MAKE) -C $@ 34 | 35 | $(DIRS:%=%_clean): 36 | $(MAKE) -C $(@:%_clean=%) clean 37 | 38 | $(DIRS:%=%_ctags): 39 | @$(MAKE) --no-print-directory -C $(@:%_ctags=%) ctags 40 | 41 | $(DIRS:%=%_ctags_clean): 42 | @$(MAKE) -C $(@:%_ctags_clean=%) ctags_clean 43 | 44 | .PHONY : clean all $(DIRS) 45 | -------------------------------------------------------------------------------- /firmware/README: -------------------------------------------------------------------------------- 1 | For testing a new board, see: assembly_test/README 2 | 3 | The general purpose firmware including Bluetooth functions is bluetooth_rxtx. 4 | 5 | This firmware is intended to be compiled with a particular toolchain: 6 | 7 | https://launchpad.net/gcc-arm-embedded 8 | 9 | If you are using a recent Ubuntu or Debian system, the toolchain can be installed 10 | from their apt repositorities as follows: 11 | 12 | apt-get install gcc-arm-none-eabi 13 | 14 | The default hardware target is Ubertooth One. If you are compiling for 15 | Ubertooth Zero, you must set the environment variable BOARD=UBERTOOTH_ZERO. 16 | -------------------------------------------------------------------------------- /firmware/assembly_test/Makefile: -------------------------------------------------------------------------------- 1 | # Hey Emacs, this is a -*- makefile -*- 2 | 3 | # Target file name (without extension). 4 | TARGET = assembly_test 5 | 6 | # List C source files here. (C dependencies are automatically generated.) 7 | SRC = $(TARGET).c \ 8 | $(LIBS_PATH)/usb_serial.c \ 9 | $(LIBS_PATH)/serial_fifo.c \ 10 | $(LIBS_PATH)/LPC17xx_Startup.c \ 11 | $(LIBS_PATH)/LPC17xx_Interrupts.c \ 12 | $(LIBS_PATH)/ubertooth.c \ 13 | $(LPCUSB_PATH)/usbcontrol.c \ 14 | $(LPCUSB_PATH)/usbinit.c \ 15 | $(LPCUSB_PATH)/usbhw_lpc.c \ 16 | $(LPCUSB_PATH)/usbstdreq.c 17 | 18 | # The assembly_test firmware should be installed via ISP or JTAG without a 19 | # bootloader present. After the test succeeds, install the bootloader with ISP 20 | # or JTAG. 21 | LINKER_SCRIPT = LPC17xx_Linker_Script_without_bootloader.ld 22 | 23 | include ../common.mk 24 | -------------------------------------------------------------------------------- /firmware/blinky/Makefile: -------------------------------------------------------------------------------- 1 | # Hey Emacs, this is a -*- makefile -*- 2 | 3 | # Target file name (without extension). 4 | TARGET = blinky 5 | 6 | # List C source files here. (C dependencies are automatically generated.) 7 | SRC = $(TARGET).c \ 8 | $(LIBS_PATH)/LPC17xx_Startup.c \ 9 | $(LIBS_PATH)/LPC17xx_Interrupts.c \ 10 | $(LIBS_PATH)/ubertooth.c 11 | 12 | include ../common.mk 13 | -------------------------------------------------------------------------------- /firmware/blinky/README: -------------------------------------------------------------------------------- 1 | This is the simplest example firmware for Project Ubertooth. It leaves the 2 | CC2400 wireless transceiver and the USB peripheral off and flashes three LEDs 3 | with a period of 2 seconds. 4 | -------------------------------------------------------------------------------- /firmware/blinky/blinky.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #include "ubertooth.h" 23 | 24 | int main() 25 | { 26 | gpio_init(); 27 | 28 | while (1) { 29 | USRLED_SET; 30 | TXLED_SET; 31 | RXLED_SET; 32 | wait(1); 33 | USRLED_CLR; 34 | TXLED_CLR; 35 | RXLED_CLR; 36 | wait(1); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /firmware/bluetooth_rxtx/Makefile: -------------------------------------------------------------------------------- 1 | # Hey Emacs, this is a -*- makefile -*- 2 | 3 | # Target file name (without extension). 4 | TARGET = bluetooth_rxtx 5 | 6 | # List C source files here. (C dependencies are automatically generated.) 7 | SRC = $(TARGET).c \ 8 | bluetooth.c \ 9 | bluetooth_le.c \ 10 | ubertooth_usb.c \ 11 | cc2400_rangetest.c \ 12 | ego.c \ 13 | $(LIBS_PATH)/usb_serial.c \ 14 | $(LIBS_PATH)/serial_fifo.c \ 15 | $(LIBS_PATH)/LPC17xx_Startup.c \ 16 | $(LIBS_PATH)/LPC17xx_Interrupts.c \ 17 | $(LIBS_PATH)/ubertooth.c \ 18 | $(LPCUSB_PATH)/usbcontrol.c \ 19 | $(LPCUSB_PATH)/usbinit.c \ 20 | $(LPCUSB_PATH)/usbhw_lpc.c \ 21 | $(LPCUSB_PATH)/usbstdreq.c 22 | 23 | include ../common.mk 24 | -------------------------------------------------------------------------------- /firmware/bluetooth_rxtx/README: -------------------------------------------------------------------------------- 1 | bluetooth_rxtx.c performs Bluetooth functions controlled by a custom USB 2 | interface. 3 | 4 | You can use the bluetooth_rxtx host code or Kismet plugin with this firmware. 5 | -------------------------------------------------------------------------------- /firmware/bluetooth_rxtx/bluetooth.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 Dominic Spill 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | 23 | #ifndef __BLUETOOTH_H 24 | #define __BLUETOOTH_H 25 | 26 | #include "ubertooth.h" 27 | 28 | #define CHANNELS 79 29 | #define MAX_SYNCWORD_ERRS 5 30 | 31 | bdaddr target; 32 | u64 syncword; 33 | u8 afh_enabled; 34 | u8 afh_map[10]; 35 | 36 | /* Barker distance/correct gains us very little when sniffing a known AC 37 | static const u8 ao_barker_distance[] = { 38 | 3,2,3,3,2,1,3,2,2,1,3,2,1,0,2,1,3,3,2,3,3,2,3,3,3,2,3,3,2,1,3,2, //0x00-0x1f 39 | 3,3,2,3,3,2,3,3,3,2,3,3,2,1,3,2,2,3,1,2,3,3,2,3,3,3,2,3,3,2,3,3, //0x20-0x3f 40 | 3,3,2,3,3,2,3,3,3,2,3,3,2,1,3,2,2,3,1,2,3,3,2,3,3,3,2,3,3,2,3,3, //0x40-0x5f 41 | 2,3,1,2,3,3,2,3,3,3,2,3,3,2,3,3,1,2,0,1,2,3,1,2,2,3,1,2,3,3,2,3};//0x60-0x7f 42 | 43 | static const u8 ao_barker_correct[] = { 44 | 0x0d, 0x0d, 0x72, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 45 | 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x72, 0x0d, 0x72, 0x72, 0x0d, 0x0d, 46 | 0x72, 0x0d, 0x0d, 0x0d, 0x72, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x72, 47 | 0x0d, 0x72, 0x72, 0x0d, 0x0d, 0x72, 0x0d, 0x0d, 0x0d, 0x72, 0x0d, 48 | 0x0d, 0x0d, 0x0d, 0x0d, 0x72, 0x72, 0x72, 0x72, 0x72, 0x0d, 0x72, 49 | 0x72, 0x72, 0x0d, 0x72, 0x72, 0x0d, 0x0d, 0x72, 0x0d, 0x72, 0x0d, 50 | 0x72, 0x72, 0x0d, 0x0d, 0x72, 0x0d, 0x0d, 0x0d, 0x72, 0x0d, 0x0d, 51 | 0x0d, 0x0d, 0x0d, 0x72, 0x72, 0x72, 0x72, 0x72, 0x0d, 0x72, 0x72, 52 | 0x72, 0x0d, 0x72, 0x72, 0x0d, 0x0d, 0x72, 0x0d, 0x72, 0x72, 0x72, 53 | 0x72, 0x72, 0x0d, 0x72, 0x72, 0x72, 0x0d, 0x72, 0x72, 0x0d, 0x0d, 54 | 0x72, 0x0d, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 55 | 0x72, 0x72, 0x72, 0x72, 0x0d, 0x72, 0x72}; 56 | */ 57 | 58 | void precalc(); 59 | u16 next_hop(u32 clkn); 60 | int find_access_code(u8 *idle_rxbuf); 61 | 62 | #endif /* __BLUETOOTH_H */ 63 | -------------------------------------------------------------------------------- /firmware/bluetooth_rxtx/cc2400_rangetest.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 Dominic Spill, Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __CC2400_RANGETEST_H 23 | #define __CC2400_RANGETEST_H 24 | 25 | #include "ubertooth.h" 26 | 27 | rangetest_result rr; 28 | 29 | void cc2400_rangetest(volatile u16 *chan_ptr); 30 | 31 | void cc2400_repeater(volatile u16 *chan_ptr); 32 | 33 | void cc2400_txtest(volatile u8 *mod_ptr, volatile u16 *chan_ptr); 34 | 35 | #endif /* __CC2400_RANGETEST_H */ 36 | -------------------------------------------------------------------------------- /firmware/bluetooth_rxtx/ego.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Mike Ryan 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EGO_H 23 | #define __EGO_H 24 | 25 | #include "ubertooth.h" 26 | 27 | typedef enum _ego_mode_t { 28 | EGO_FOLLOW = 0, 29 | EGO_CONTINUOUS_RX, 30 | EGO_JAM, 31 | } ego_mode_t; 32 | 33 | void ego_main(ego_mode_t mode); 34 | 35 | #endif /* __EGO_H */ 36 | -------------------------------------------------------------------------------- /firmware/bluetooth_rxtx/ubertooth_usb.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | /* 23 | LPCUSB, an USB device driver for LPC microcontrollers 24 | Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) 25 | 26 | Redistribution and use in source and binary forms, with or without 27 | modification, are permitted provided that the following conditions are met: 28 | 29 | 1. Redistributions of source code must retain the above copyright 30 | notice, this list of conditions and the following disclaimer. 31 | 2. Redistributions in binary form must reproduce the above copyright 32 | notice, this list of conditions and the following disclaimer in the 33 | documentation and/or other materials provided with the distribution. 34 | 3. The name of the author may not be used to endorse or promote products 35 | derived from this software without specific prior written permission. 36 | 37 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 38 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 39 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 40 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 41 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 42 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 43 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 44 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 45 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 46 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 47 | */ 48 | 49 | 50 | #ifndef __UBERTOOTH_USB_H 51 | #define __UBERTOOTH_USB_H 52 | 53 | #include "ubertooth.h" 54 | #include "ubertooth_interface.h" 55 | 56 | typedef int (VendorRequestHandler)(u8 request, u16 *request_params, u8 *data, int *data_len); 57 | 58 | int ubertooth_usb_init(VendorRequestHandler *vendor_req_handler); 59 | void queue_init(); 60 | usb_pkt_rx *usb_enqueue(); 61 | usb_pkt_rx *dequeue(); 62 | void handle_usb(u32 clkn); 63 | 64 | #endif /* __UBERTOOTH_USB_H */ 65 | -------------------------------------------------------------------------------- /firmware/bootloader/README: -------------------------------------------------------------------------------- 1 | bootloader.c is the first level firmware on the Ubertooth. With this installed 2 | you can update the main application over USB. 3 | 4 | The bootloader must be installed using a hardware programmer (serial or JTAG). 5 | For example, a Pogoprog (serial programmer) may be used with the In-System 6 | Programming (ISP) mode. Once the bootloader is installed, application firmware 7 | may be loaded repeatedly over USB without requiring additional hardware. 8 | Commercially produced Ubertooth devices should have the bootloader installed at 9 | the factory. 10 | 11 | Operation: 12 | 13 | The bootloader executes every time the device starts up from reset or power 14 | cycle. Normally it just gets out of the way and passes control to the 15 | application firmware very quickly. Alternatively it can enter DFU mode which 16 | permits firmware upload and download over USB. There are two ways to tell the 17 | bootloader that you want it to enter DFU mode: 18 | 19 | 1. soft bootloader entry: By setting a flag in RAM, the application firmware 20 | can instruct the bootloader to enter DFU mode following a reset (without loss 21 | of power). For example, with the bluetooth_rxtx firmware running you can 22 | update the firmware via DFU mode using the 'ubertooth-dfu' (located in 23 | host/ubertooth-tools/src/). Soft entry only works on Ubertooth One, not 24 | Ubertooth Zero. 25 | 26 | 2. hard bootloader entry (aka pin entry): By connecting two pins on the 27 | expansion header with a jumper during reset (either soft or hard boot), you can 28 | force the bootloader into DFU mode. When using pin entry, the bootloader will 29 | enter DFU mode for only a few seconds and will then execute the application if 30 | no DFU activity has started during that period. This allows developers to 31 | permanently or semi-permanently jumper the pins providing a DFU opportunity on 32 | every reset. The permanent jumper method works on Ubertooth One but not 33 | Ubertooth Zero. 34 | 35 | The bootloader indicates DFU mode by flashing the LEDs in a distinctive 36 | pattern. It also identifies itself as "usb_bootloader" on USB. 37 | 38 | During DFU mode, firmware may be uploaded or downloaded using ubertooth-dfu. 39 | For usage instructions, run 'ubertooth-dfu -h'. 40 | 41 | It is possible that soft bootloader entry may be broken by installing a faulty 42 | application or an application that does not provide a method of triggering soft 43 | entry. In this case, pin entry must be used (e.g. by holding a paper clip in 44 | the expansion header while plugging in the device) to "unbrick" the unit. 45 | 46 | For Ubertooth One, the pins to connect are pins 1 and 3 of the expansion header 47 | (P4). For Ubertooth Zero, the pins to connect are pins 1 and 13 of the 48 | expansion header (J1). 49 | 50 | The bootloader is installed at 0x0000. It installs application firmware at 51 | 0x4000. 52 | 53 | To build the bootloader you will need to install libstdc++ for ARM. 54 | On Debian based systems: 55 | apt-get install libstdc++-arm-none-eabi-newlib 56 | 57 | -------------------------------------------------------------------------------- /firmware/bootloader/flash.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010, 2011 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __FLASH_H_ 23 | #define __FLASH_H_ 24 | 25 | #include "iap.h" 26 | 27 | class Flash { 28 | public: 29 | bool write(const uint32_t flash_address, uint32_t source_address, uint32_t length) { 30 | IAP::ReturnCode result = IAP::CMD_SUCCESS; 31 | 32 | const uint32_t sector = sector_number(flash_address); 33 | if( at_sector_boundary(flash_address) ) { 34 | if( result == IAP::CMD_SUCCESS) { 35 | result = iap.prepare_sectors_for_write_operation(sector, sector); 36 | } 37 | if( result == IAP::CMD_SUCCESS) { 38 | result = iap.erase_sectors(sector, sector, cclk_khz); 39 | } 40 | } 41 | 42 | if( result == IAP::CMD_SUCCESS) { 43 | result = iap.prepare_sectors_for_write_operation(sector, sector); 44 | } 45 | if( result == IAP::CMD_SUCCESS ) { 46 | iap.copy_ram_to_flash(flash_address, source_address, length, cclk_khz); 47 | } 48 | 49 | return (result == IAP::CMD_SUCCESS); 50 | } 51 | 52 | bool valid_address(const uint32_t address) const { 53 | return (address < 0x80000); 54 | } 55 | 56 | private: 57 | IAP iap; 58 | 59 | static const uint32_t cclk_khz = 100000; 60 | 61 | bool at_sector_boundary(const uint32_t address) const { 62 | return (address & (sector_size(address) - 1)) == 0; 63 | } 64 | 65 | uint32_t sector_size(const uint32_t address) const { 66 | if( address < 0x10000 ) { 67 | return 4096; 68 | } else { 69 | return 32768; 70 | } 71 | } 72 | 73 | uint32_t sector_number(const uint32_t address) const { 74 | if( address < 0x10000 ) { 75 | return address >> 12; 76 | } else { 77 | return 14 + (address >> 15); 78 | } 79 | } 80 | }; 81 | 82 | #endif//__FLASH_H_ 83 | 84 | -------------------------------------------------------------------------------- /firmware/bootloader/iap.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010, 2011 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __IAP_H_ 23 | #define __IAP_H_ 24 | 25 | #include 26 | 27 | class IAP { 28 | public: 29 | enum ReturnCode { 30 | CMD_SUCCESS = 0, 31 | INVALID_COMMAND = 1, 32 | SRC_ADDR_ERROR = 2, 33 | DST_ADDR_ERROR = 3, 34 | SRC_ADDR_NOT_MAPPED = 4, 35 | DST_ADDR_NOT_MAPPED = 5, 36 | COUNT_ERROR = 6, 37 | INVALID_SECTOR = 7, 38 | SECTOR_NOT_BLANK = 8, 39 | SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION = 9, 40 | COMPARE_ERROR = 10, 41 | BUSY = 11, 42 | }; 43 | 44 | ReturnCode prepare_sectors_for_write_operation(const uint32_t start_sector_number, 45 | const uint32_t end_sector_number); 46 | 47 | ReturnCode copy_ram_to_flash(const uint32_t destination_flash_address, 48 | const uint32_t source_ram_address, 49 | const uint32_t number_of_bytes_to_write, 50 | const uint32_t cpu_clock_frequency_khz); 51 | 52 | ReturnCode erase_sectors(const uint32_t start_sector_number, 53 | const uint32_t end_sector_number, 54 | const uint32_t cpu_clock_frequency_khz); 55 | 56 | ReturnCode blank_check_sectors(const uint32_t start_sector_number, 57 | const uint32_t end_sector_number); 58 | 59 | ReturnCode compare(const uint32_t destination_address, 60 | const uint32_t source_address, 61 | const uint32_t number_of_bytes_to_compare); 62 | 63 | private: 64 | typedef void(*EntryPoint)(uint32_t[], uint32_t[]); 65 | 66 | static const EntryPoint entry_point; 67 | }; 68 | 69 | #endif//__IAP_H_ 70 | -------------------------------------------------------------------------------- /firmware/cc2400_test/Makefile: -------------------------------------------------------------------------------- 1 | # Hey Emacs, this is a -*- makefile -*- 2 | 3 | # Target file name (without extension). 4 | TARGET = cc2400_test 5 | 6 | # List C source files here. (C dependencies are automatically generated.) 7 | SRC = $(TARGET).c \ 8 | $(LIBS_PATH)/LPC17xx_Startup.c \ 9 | $(LIBS_PATH)/LPC17xx_Interrupts.c \ 10 | $(LIBS_PATH)/ubertooth.c 11 | 12 | include ../common.mk 13 | -------------------------------------------------------------------------------- /firmware/cc2400_test/README: -------------------------------------------------------------------------------- 1 | cc2400_test.c powers up the CC2400 wireless transceiver and exercises the SPI 2 | control interface to verify that the CC2400 responds with an expected default 3 | register value. 4 | 5 | On success all LEDs are illuminated. 6 | -------------------------------------------------------------------------------- /firmware/cc2400_test/cc2400_test.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #include "ubertooth.h" 23 | 24 | int main() 25 | { 26 | gpio_init(); 27 | TXLED_SET; 28 | 29 | cc2400_init(); 30 | RXLED_SET; 31 | 32 | cc2400_reset(); 33 | while (cc2400_get(AGCCTRL) != 0xf700); 34 | USRLED_SET; 35 | 36 | while (1); 37 | } 38 | -------------------------------------------------------------------------------- /firmware/clock_test/Makefile: -------------------------------------------------------------------------------- 1 | # Hey Emacs, this is a -*- makefile -*- 2 | 3 | # Target file name (without extension). 4 | TARGET = clock_test 5 | 6 | # List C source files here. (C dependencies are automatically generated.) 7 | SRC = $(TARGET).c \ 8 | $(LIBS_PATH)/LPC17xx_Startup.c \ 9 | $(LIBS_PATH)/LPC17xx_Interrupts.c \ 10 | $(LIBS_PATH)/ubertooth.c 11 | 12 | include ../common.mk 13 | -------------------------------------------------------------------------------- /firmware/clock_test/README: -------------------------------------------------------------------------------- 1 | clock_test.c powers up the CC2400 wireless transceiver, activates its 2 | oscillator, turns on the CC2400's clock output, and switches the LPC175x 3 | oscillator to this clock source. 4 | 5 | On success USRLED flashes faster than once per second. 6 | -------------------------------------------------------------------------------- /firmware/clock_test/clock_test.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #include "ubertooth.h" 23 | 24 | int main() 25 | { 26 | gpio_init(); 27 | TXLED_SET; 28 | 29 | cc2400_init(); 30 | RXLED_SET; 31 | 32 | clock_start(); 33 | while (1) { 34 | USRLED_SET; 35 | wait(2); 36 | USRLED_CLR; 37 | wait(2); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /firmware/common.mk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/firmware/common.mk -------------------------------------------------------------------------------- /firmware/common/LPC17xx_Linker_Script_bootloader.ld: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010, 2011 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") 23 | ENTRY(_start) 24 | SEARCH_DIR(.) 25 | GROUP(libgcc.a libc.a libm.a libnosys.a) 26 | 27 | MEMORY 28 | { 29 | rom (rx) : ORIGIN = 0x00000000, LENGTH = 16K 30 | ram (rwx) : ORIGIN = 0x10000000, LENGTH = 16K 31 | } 32 | 33 | INCLUDE sections.ld 34 | -------------------------------------------------------------------------------- /firmware/common/LPC17xx_Linker_Script_with_bootloader.ld: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010, 2011 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") 22 | ENTRY(_start) 23 | SEARCH_DIR(.) 24 | GROUP(libgcc.a libc.a libm.a libnosys.a) 25 | 26 | MEMORY 27 | { 28 | rom (rx) : ORIGIN = 0x00004000, LENGTH = (128K - 16384) 29 | ram (rwx) : ORIGIN = 0x10000000, LENGTH = 16K 30 | } 31 | 32 | INCLUDE sections.ld 33 | -------------------------------------------------------------------------------- /firmware/common/LPC17xx_Linker_Script_without_bootloader.ld: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010, 2011 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") 22 | ENTRY(_start) 23 | SEARCH_DIR(.) 24 | GROUP(libgcc.a libc.a libm.a libnosys.a) 25 | 26 | MEMORY 27 | { 28 | rom (rx) : ORIGIN = 0x00000000, LENGTH = 128K 29 | ram (rwx) : ORIGIN = 0x10000000, LENGTH = 16K 30 | } 31 | 32 | INCLUDE sections.ld 33 | -------------------------------------------------------------------------------- /firmware/common/LPC17xx_Startup.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010, 2011 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | /* 22 | Copyright 2010-07 By Opendous Inc. (www.MicropendousX.org) 23 | NVIC handler info copied from NXP User Manual UM10360 24 | 25 | Start-up code for LPC17xx. See TODOs for 26 | modification instructions. 27 | 28 | Permission to use, copy, modify, and distribute this software 29 | and its documentation for any purpose and without fee is hereby 30 | granted, provided that the above copyright notice appear in all 31 | copies and that both that the copyright notice and this 32 | permission notice and warranty disclaimer appear in supporting 33 | documentation, and that the name of the author not be used in 34 | advertising or publicity pertaining to distribution of the 35 | software without specific, written prior permission. 36 | 37 | The author disclaim all warranties with regard to this 38 | software, including all implied warranties of merchantability 39 | and fitness. In no event shall the author be liable for any 40 | special, indirect or consequential damages or any damages 41 | whatsoever resulting from loss of use, data or profits, whether 42 | in an action of contract, negligence or other tortious action, 43 | arising out of or in connection with the use or performance of 44 | this software. 45 | */ 46 | 47 | #include 48 | 49 | /* Reset_Handler variables defined in linker script */ 50 | extern unsigned long _interrupt_vector_table; 51 | extern unsigned long _data; 52 | extern unsigned long _edata; 53 | extern unsigned long _etext; 54 | extern unsigned long _bss; 55 | extern unsigned long _ebss; 56 | 57 | extern void __libc_init_array(void); 58 | extern int main(void); 59 | 60 | /* Reset Handler */ 61 | void Reset_Handler(void) 62 | { 63 | unsigned long *src, *dest; 64 | 65 | // Copy the data segment initializers from flash to SRAM 66 | src = &_etext; 67 | for(dest = &_data; dest < &_edata; ) 68 | { 69 | *dest++ = *src++; 70 | } 71 | 72 | // Initialize the .bss segment of memory to zeros 73 | src = &_bss; 74 | while (src < &_ebss) 75 | { 76 | *src++ = 0; 77 | } 78 | 79 | __libc_init_array(); 80 | 81 | // Set the vector table location. 82 | SCB_VTOR = &_interrupt_vector_table; 83 | 84 | main(); 85 | 86 | // In case main() fails, have something to breakpoint 87 | while (1) {;} 88 | } 89 | -------------------------------------------------------------------------------- /firmware/common/README: -------------------------------------------------------------------------------- 1 | This directory contains things shared by multiple Project Ubertooth firmware. 2 | -------------------------------------------------------------------------------- /firmware/common/lpcusb/README: -------------------------------------------------------------------------------- 1 | borrowed from http://sourceforge.net/projects/lpcusb/ 2 | -------------------------------------------------------------------------------- /firmware/common/lpcusb/target/debug.h: -------------------------------------------------------------------------------- 1 | /* 2 | LPCUSB, an USB device driver for LPC microcontrollers 3 | Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. The name of the author may not be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | 29 | int printf(const char *format, ...); 30 | 31 | #ifdef DEBUG 32 | #define DBG printf 33 | #define ASSERT(x) if(!(x)){DBG("\nAssertion '%s' failed in %s:%s#%d!\n",#x,__FILE__,__FUNCTION__,__LINE__);while(1);} 34 | #else 35 | #define DBG(x ...) 36 | #define ASSERT(x) 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /firmware/common/lpcusb/target/type.h: -------------------------------------------------------------------------------- 1 | /* 2 | LPCUSB, an USB device driver for LPC microcontrollers 3 | Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. The name of the author may not be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | 29 | /** 30 | @file 31 | primitive types used in the USB stack 32 | */ 33 | 34 | 35 | #ifndef _TYPE_H_ 36 | #define _TYPE_H_ 37 | 38 | typedef unsigned char BYTE; /**< unsigned 8-bit */ 39 | typedef unsigned char U8; /**< unsigned 8-bit */ 40 | typedef unsigned short int U16; /**< unsigned 16-bit */ 41 | typedef unsigned int U32; /**< unsigned 32-bit */ 42 | 43 | typedef int BOOL; /**< #TRUE or #FALSE */ 44 | 45 | #define TRUE 1 /**< TRUE */ 46 | #define FALSE 0 /**< FALSE */ 47 | 48 | #ifndef NULL 49 | #define NULL ((void*)0) /**< NULL pointer */ 50 | #endif 51 | 52 | /* some other useful macros */ 53 | #define MIN(x,y) ((x)<(y)?(x):(y)) /**< MIN */ 54 | #define MAX(x,y) ((x)>(y)?(x):(y)) /**< MAX */ 55 | 56 | 57 | #endif /* _TYPE_H_ */ 58 | 59 | -------------------------------------------------------------------------------- /firmware/common/lpcusb/target/usbinit.c: -------------------------------------------------------------------------------- 1 | /* 2 | LPCUSB, an USB device driver for LPC microcontrollers 3 | Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. The name of the author may not be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | 29 | /** @file 30 | USB stack initialisation 31 | */ 32 | 33 | #include "type.h" 34 | #include "debug.h" 35 | 36 | #include "usbhw_lpc.h" 37 | #include "usbapi.h" 38 | 39 | 40 | /** data storage area for standard requests */ 41 | static U8 abStdReqData[8]; 42 | 43 | 44 | /** 45 | USB reset handler 46 | 47 | @param [in] bDevStatus Device status 48 | */ 49 | static void HandleUsbReset(U8 bDevStatus) 50 | { 51 | if (bDevStatus & DEV_STATUS_RESET) { 52 | DBG("\n!"); 53 | } 54 | } 55 | 56 | 57 | /** 58 | Initialises the USB hardware and sets up the USB stack by 59 | installing default callbacks. 60 | 61 | @return TRUE if initialisation was successful 62 | */ 63 | BOOL USBInit(void) 64 | { 65 | // init hardware 66 | USBHwInit(); 67 | 68 | // register bus reset handler 69 | USBHwRegisterDevIntHandler(HandleUsbReset); 70 | 71 | // register control transfer handler on EP0 72 | USBHwRegisterEPIntHandler(0x00, USBHandleControlTransfer); 73 | USBHwRegisterEPIntHandler(0x80, USBHandleControlTransfer); 74 | 75 | // setup control endpoints 76 | USBHwEPConfig(0x00, MAX_PACKET_SIZE0); 77 | USBHwEPConfig(0x80, MAX_PACKET_SIZE0); 78 | 79 | // register standard request handler 80 | USBRegisterRequestHandler(REQTYPE_TYPE_STANDARD, USBHandleStandardRequest, abStdReqData); 81 | 82 | return TRUE; 83 | } 84 | 85 | -------------------------------------------------------------------------------- /firmware/common/serial_fifo.c: -------------------------------------------------------------------------------- 1 | /* 2 | LPCUSB, an USB device driver for LPC microcontrollers 3 | Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. The name of the author may not be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | #include "type.h" 29 | #include "serial_fifo.h" 30 | 31 | void fifo_init(fifo_t *fifo, U8 *buf) 32 | { 33 | fifo->head = 0; 34 | fifo->tail = 0; 35 | fifo->buf = buf; 36 | } 37 | 38 | 39 | BOOL fifo_put(fifo_t *fifo, U8 c) 40 | { 41 | int next; 42 | 43 | // check if FIFO has room 44 | next = (fifo->head + 1) % VCOM_FIFO_SIZE; 45 | if (next == fifo->tail) { 46 | // full 47 | return FALSE; 48 | } 49 | 50 | fifo->buf[fifo->head] = c; 51 | fifo->head = next; 52 | 53 | return TRUE; 54 | } 55 | 56 | 57 | BOOL fifo_get(fifo_t *fifo, U8 *pc) 58 | { 59 | int next; 60 | 61 | // check if FIFO has data 62 | if (fifo->head == fifo->tail) { 63 | return FALSE; 64 | } 65 | 66 | next = (fifo->tail + 1) % VCOM_FIFO_SIZE; 67 | 68 | *pc = fifo->buf[fifo->tail]; 69 | fifo->tail = next; 70 | 71 | return TRUE; 72 | } 73 | 74 | 75 | int fifo_avail(fifo_t *fifo) 76 | { 77 | return (VCOM_FIFO_SIZE + fifo->head - fifo->tail) % VCOM_FIFO_SIZE; 78 | } 79 | 80 | 81 | int fifo_free(fifo_t *fifo) 82 | { 83 | return (VCOM_FIFO_SIZE - 1 - fifo_avail(fifo)); 84 | } 85 | 86 | -------------------------------------------------------------------------------- /firmware/common/serial_fifo.h: -------------------------------------------------------------------------------- 1 | /* 2 | LPCUSB, an USB device driver for LPC microcontrollers 3 | Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 3. The name of the author may not be used to endorse or promote products 14 | derived from this software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | #include "type.h" 29 | 30 | #define VCOM_FIFO_SIZE 128 31 | 32 | typedef struct { 33 | int head; 34 | int tail; 35 | U8 *buf; 36 | } fifo_t; 37 | 38 | void fifo_init(fifo_t *fifo, U8 *buf); 39 | BOOL fifo_put(fifo_t *fifo, U8 c); 40 | BOOL fifo_get(fifo_t *fifo, U8 *pc); 41 | int fifo_avail(fifo_t *fifo); 42 | int fifo_free(fifo_t *fifo); 43 | -------------------------------------------------------------------------------- /firmware/common/types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __UBERTOOTH_TYPES_H 23 | #define __UBERTOOTH_TYPES_H 24 | 25 | #include 26 | 27 | #define u8 uint8_t 28 | #define u16 uint16_t 29 | #define u32 uint32_t 30 | #define u64 uint64_t 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /firmware/common/usb_serial.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | /* 23 | LPCUSB, an USB device driver for LPC microcontrollers 24 | Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl) 25 | 26 | Redistribution and use in source and binary forms, with or without 27 | modification, are permitted provided that the following conditions are met: 28 | 29 | 1. Redistributions of source code must retain the above copyright 30 | notice, this list of conditions and the following disclaimer. 31 | 2. Redistributions in binary form must reproduce the above copyright 32 | notice, this list of conditions and the following disclaimer in the 33 | documentation and/or other materials provided with the distribution. 34 | 3. The name of the author may not be used to endorse or promote products 35 | derived from this software without specific prior written permission. 36 | 37 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 38 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 39 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 40 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 41 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 42 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 43 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 44 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 45 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 46 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 47 | */ 48 | 49 | #include "usbapi.h" 50 | 51 | #define LE_WORD(x) ((x)&0xFF),((x)>>8) 52 | 53 | #define INT_IN_EP 0x81 54 | #define BULK_OUT_EP 0x05 55 | #define BULK_IN_EP 0x82 56 | #define CS_INTERFACE 0x24 57 | #define MAX_PACKET_SIZE 64 58 | 59 | #define SET_LINE_CODING 0x20 60 | #define GET_LINE_CODING 0x21 61 | #define SET_CONTROL_LINE_STATE 0x22 62 | 63 | #define EOF -1 64 | 65 | // data structure for GET_LINE_CODING / SET_LINE_CODING class requests 66 | typedef struct { 67 | U32 dwDTERate; 68 | U8 bCharFormat; 69 | U8 bParityType; 70 | U8 bDataBits; 71 | } TLineCoding; 72 | 73 | static BOOL HandleClassRequest(TSetupPacket *pSetup, int *piLen, U8 **ppbData); 74 | static void BulkOut(U8 bEP, U8 bEPStatus); 75 | static void SendNextBulkIn(U8 bEP, BOOL fFirstPacket); 76 | static void BulkIn(U8 bEP, U8 bEPStatus); 77 | static void USBFrameHandler(U16 wFrame); 78 | static void USBDevIntHandler(U8 bDevStatus); 79 | void VCOM_init(void); 80 | int VCOM_putchar(int c); 81 | int VCOM_getchar(void); 82 | void USB_IRQHandler(void); 83 | void usb_serial_init(void); 84 | -------------------------------------------------------------------------------- /firmware/ctags.mk: -------------------------------------------------------------------------------- 1 | CTAGS ?= /usr/bin/ctags-exuberant 2 | CSCOPE ?= /usr/bin/cscope 3 | MKID ?= /usr/bin/mkid 4 | 5 | # 6 | # This requires GNUMake and that /bin/sh is bash. 7 | # NOTES: 8 | # $${src:0:1} returns the first character in the variable. 9 | # nullglob: Stop *.h glob from being '*.h' if no headers present. 10 | # 11 | 12 | cscope.files: 13 | @echo "Generating ctags file list for $(TARGET)" 1>&2 14 | @set -e; \ 15 | for src in $(SRC) $(CPPSRC); \ 16 | do \ 17 | if [ "$${src:0:1}" = "/" ]; \ 18 | then \ 19 | echo $${src}; \ 20 | else \ 21 | echo $(abspath $${src}); \ 22 | fi; \ 23 | done > $@ 24 | @set -e; \ 25 | shopt -s nullglob; \ 26 | for inc in $(CURDIR) $(EXTRAINCDIRS); \ 27 | do \ 28 | for hdr in $${inc}/*.h; \ 29 | do \ 30 | if [ "$${hdr:0:1}" = "/" ]; \ 31 | then \ 32 | echo $${hdr}; \ 33 | else \ 34 | echo $(abspath $${hdr}); \ 35 | fi; \ 36 | done; \ 37 | done >> $@ 38 | @cat $@ | tr '\n' '\0' >$@.0 39 | 40 | ctags: cscope.files 41 | @echo "Generating index files for $(TARGET)" 1>&2 42 | @${CTAGS} --totals --fields=+iaS --extra="+qf" --c++-kinds="+p" -L $< >tags.log 2>&1 43 | @rm tags.log 44 | @${CTAGS} -e --totals --fields=+iaS --extra="+qf" --c++-kinds="-p" -L $< >TAGS.log 2>&1 45 | @rm TAGS.log 46 | @$(CSCOPE) -b -q -i $< >cscope.log 2>&1 47 | @rm cscope.log 48 | @$(MKID) --files0-from=$<.0 49 | 50 | ctags_clean: 51 | rm -rf tags TAGS cscope* ID 52 | 53 | .PHONY: ctags ctags_clean cscope.files 54 | -------------------------------------------------------------------------------- /firmware/tc13badge/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2011 Michael Ossmann 2 | # Copyright (C) 2010 DJ Delorie 3 | 4 | # This file is free software; you can redistribute it and/or modify it under 5 | # the terms of the GNU General Public License as published by the Free 6 | # Software Foundation; either version 3, or (at your option) any later 7 | # version. 8 | # 9 | # This file is distributed in the hope that it will be useful, but WITHOUT ANY 10 | # WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 | # for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this file; see the file COPYING3. If not see 16 | # . 17 | 18 | CC = m32c-elf-gcc 19 | LD = m32c-elf-gcc -nostartfiles 20 | AR = m32c-elf-ar 21 | 22 | # Default program to flash, and port to flash it to. 23 | elf = toorcon 24 | port=ttyUSB0 25 | 26 | all : r8c2l.h toorcon.elf 27 | 28 | # List of objects common to all R8C programs. 29 | BSP_FILES = \ 30 | ivects.o 31 | 32 | bsp.a : $(BSP_FILES) 33 | $(AR) rvs bsp.a $(BSP_FILES) 34 | 35 | %.elf : init.o %.o bsp.a tc13badge.o 36 | $(LD) $^ -o $@ bsp.a -TR5F212L4.ld 37 | 38 | .PHONY: flash 39 | flash : ${elf}.elf 40 | uflash -p /dev/${port} -3 -r -b 38400 ${elf}.elf 41 | 42 | %.o : %.c 43 | $(CC) -Os -c $*.c tc13badge.c 44 | 45 | r8c2l.h r8c2l.inc : r8c2l.io mkports 46 | ./mkports r8c2l.io r8c2l.h r8c2l.inc 47 | 48 | .PRECIOUS: %.o %.elf 49 | 50 | clean : 51 | -rm -f *~ *.o bsp.a *.elf r8c2l.h r8c2l.inc 52 | -------------------------------------------------------------------------------- /firmware/tc13badge/R5F212L4.ld: -------------------------------------------------------------------------------- 1 | /* 2 | * R5F212L4: R8C/2L with 16k program flash, 2k data flash, 1.5k RAM 3 | * 4 | * adapted from one or two of DJ Delorie's linker scripts 5 | */ 6 | 7 | OUTPUT_FORMAT("elf32-m32c", "elf32-m32c", "elf32-m32c") 8 | OUTPUT_ARCH(m32c) 9 | ENTRY(_start) 10 | 11 | MEMORY 12 | { 13 | RAM (w) : ORIGIN = 0x400, LENGTH = 0x600 14 | DROM (r) : ORIGIN = 0x2400, LENGTH = 0x800 15 | ROM (r) : ORIGIN = 0xC000, LENGTH = 0x3f24 16 | VEC (r) : ORIGIN = 0xffdc, LENGTH = 32 17 | RESETVEC (r) : ORIGIN = 0xfffc, LENGTH = 4 18 | } 19 | 20 | SECTIONS 21 | { 22 | .text : { 23 | *(.text) 24 | PROVIDE (__etext = .); 25 | . = ALIGN(2); 26 | *(.rodata) 27 | . = ALIGN(2); 28 | __romdatastart = .; 29 | } > ROM =0 30 | 31 | .data : { 32 | __datastart = .; 33 | . = ALIGN(2); 34 | *(.data) 35 | . = ALIGN(2); 36 | _edata = .; 37 | } > RAM AT>ROM 38 | PROVIDE (__romdatacopysize =SIZEOF(.data)); 39 | 40 | .bss : { 41 | . = ALIGN(2); 42 | PROVIDE (__bssstart = .); 43 | *(.bss) 44 | *(COMMON) 45 | . = ALIGN(2); 46 | PROVIDE (__bssend = .); 47 | } > RAM 48 | __bsssize = SIZEOF(.bss); 49 | 50 | .stack (0x7fe) : 51 | { 52 | PROVIDE (__stack = .); 53 | *(.stack) 54 | } 55 | 56 | .drom : { 57 | *(.drom) 58 | } > DROM 59 | .vec : { 60 | *(.vec) 61 | } > VEC 62 | .resetvec : { 63 | *(.resetvec) 64 | } > RESETVEC 65 | 66 | PROVIDE (_brk_handler = 0); 67 | PROVIDE (_timer_rc_handler = 0); 68 | PROVIDE (_timer_rd0_handler = 0); 69 | PROVIDE (_timer_rd1_handler = 0); 70 | PROVIDE (_s2tx_handler = 0); 71 | PROVIDE (_s2rx_handler = 0); 72 | PROVIDE (_key_handler = 0); 73 | PROVIDE (_adc_handler = 0); 74 | PROVIDE (_s0tx_handler = 0); 75 | PROVIDE (_s0rx_handler = 0); 76 | PROVIDE (_timer_ra_handler = 0); 77 | PROVIDE (_timer_rb_handler = 0); 78 | PROVIDE (_int1_handler = 0); 79 | PROVIDE (_int3_handler = 0); 80 | PROVIDE (_int0_handler = 0); 81 | } 82 | -------------------------------------------------------------------------------- /firmware/tc13badge/README: -------------------------------------------------------------------------------- 1 | This is code for the Renesas R5F212L4 microcontroller (R8C/2L) on the ToorCon 2 | 13 badge. 3 | 4 | for more information: http://greatscottgadgets.com/tc13badge 5 | -------------------------------------------------------------------------------- /firmware/tc13badge/init.S: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 Michael Ossmann 3 | Copyright (C) 2010 DJ Delorie 4 | 5 | This file is free software; you can redistribute it and/or modify it under 6 | the terms of the GNU General Public License as published by the Free 7 | Software Foundation; either version 3, or (at your option) any later 8 | version. 9 | 10 | This file is distributed in the hope that it will be useful, but WITHOUT ANY 11 | WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this file; see the file COPYING3. If not see 17 | . 18 | */ 19 | 20 | .include "r8c2l.inc" 21 | 22 | .section ".vec", "a" 23 | .3byte 0 ; UND 24 | .byte 0xff 25 | .3byte 0 ; overflow 26 | .byte 0xff 27 | .3byte 0 ; BRK, see also ivect 28 | .byte 0xff 29 | 30 | .section ".resetvec", "a" 31 | .global _reset 32 | _reset: 33 | .3byte _start 34 | .byte 0xff ; watchdog settings. 35 | 36 | .text 37 | .global _start 38 | _start: 39 | fclr U /* Interrupt stack gets the big main stack. */ 40 | ldc #__stack,sp 41 | ; We're going to use a combined stack, because we're low on memory. 42 | ; fset U /* User stack gets the little one. */ 43 | ; ldc #__istack,sp 44 | 45 | ldc #%lo16(_ivects),intbl 46 | ldc #%hi16(_ivects),intbh 47 | 48 | ; Copy ROM data to RAM 49 | mov.b #%hi8(__romdatastart),r1h 50 | mov.w #%lo16(__romdatastart),a0 51 | mov.w #__datastart,a1 52 | mov.w #__romdatacopysize,r3 53 | shl.w #-1,r3 54 | smovf.w 55 | 56 | mov.w #__bssstart,a1 57 | mov.w #__bsssize,r3 58 | shl.w #-1,r3 59 | mov.w #0,r0 60 | sstr.w 61 | 62 | ; Run the main application 63 | 64 | jmp.w _main 65 | 66 | .global __reset 67 | __reset: 68 | .global __exit 69 | __exit: 70 | bset $prc1, prcr 71 | bset $pm03, pm0 72 | jmp.b __exit 73 | 74 | .bss 75 | .global __impure_ptr 76 | __impure_ptr: 77 | .space 10 78 | .global mem0 79 | mem0: .space 1 80 | .global mem1 81 | mem1: .space 1 82 | .global mem2 83 | mem2: .space 1 84 | .global mem3 85 | mem3: .space 1 86 | .global mem4 87 | mem4: .space 1 88 | .global mem5 89 | mem5: .space 1 90 | .global mem6 91 | mem6: .space 1 92 | .global mem7 93 | mem7: .space 1 94 | .global mem8 95 | mem8: .space 1 96 | .global mem9 97 | mem9: .space 1 98 | .global mem10 99 | mem10: .space 1 100 | .global mem11 101 | mem11: .space 1 102 | .global mem12 103 | mem12: .space 1 104 | .global mem13 105 | mem13: .space 1 106 | .global mem14 107 | mem14: .space 1 108 | .global mem15 109 | mem15: .space 1 110 | 111 | -------------------------------------------------------------------------------- /firmware/tc13badge/ivects.S: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 Michael Ossmann 3 | Copyright (C) 2010 DJ Delorie 4 | 5 | This file is free software; you can redistribute it and/or modify it under 6 | the terms of the GNU General Public License as published by the Free 7 | Software Foundation; either version 3, or (at your option) any later 8 | version. 9 | 10 | This file is distributed in the hope that it will be useful, but WITHOUT ANY 11 | WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 | for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this file; see the file COPYING3. If not see 17 | . 18 | */ 19 | 20 | .text 21 | 22 | .global _default_isr 23 | _default_isr: 24 | jmp.b _default_isr 25 | 26 | .global _ivects 27 | _ivects: 28 | ;; 0 29 | .long _brk_handler ; brk 30 | .long 0 31 | .long 0 32 | .long 0 33 | .long 0 34 | .long 0 35 | .long 0 36 | .long _timer_rc_handler ; timer_rc 37 | ;; 8 38 | .long _timer_rd0_handler ; timer_rd0 39 | .long _timer_rd1_handler ; timer_rd1 40 | .long 0 41 | .long _s2tx_handler ; s2tx 42 | .long _s2rx_handler ; s2rx 43 | .long _key_handler ; key 44 | .long _adc_handler ; adc 45 | .long 0 46 | ;; 16 47 | .long 0 48 | .long _s0tx_handler ; s0tx 49 | .long _s0rx_handler ; s0rx 50 | .long 0 51 | .long 0 52 | .long 0 53 | .long _timer_ra_handler ; timer_ra 54 | .long 0 55 | ;; 24 56 | .long _timer_rb_handler ; timer_rb 57 | .long _int1_handler ; int1 58 | .long _int3_handler ; int3 59 | .long 0 60 | .long 0 61 | .long _int0_handler ; int0 62 | .long 0 63 | .long 0 64 | ;; the rest are software interrupts only, which we don't use. 65 | -------------------------------------------------------------------------------- /firmware/tc13badge/mkports: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | # -*- perl -*- 3 | 4 | # Copyright (C) 2010 DJ Delorie 5 | # 6 | # This file is free software; you can redistribute it and/or modify it under 7 | # the terms of the GNU General Public License as published by the Free 8 | # Software Foundation; either version 3, or (at your option) any later 9 | # version. 10 | # 11 | # This file is distributed in the hope that it will be useful, but WITHOUT ANY 12 | # WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 | # for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this file; see the file COPYING3. If not see 18 | # . 19 | 20 | $in = shift; 21 | $outc = shift; 22 | $outs = shift; 23 | 24 | open(I, $in); 25 | open(S, ">$outs"); 26 | open(H, ">$outc"); 27 | 28 | print H "typedef unsigned char byte;\n\n"; 29 | print H "typedef unsigned short word;\n\n"; 30 | print H "typedef unsigned long dword;\n\n"; 31 | 32 | while () { 33 | s/\#.*//; 34 | s/[\r\n]+$//; 35 | 36 | if (/\[ivec\]/) { 37 | $ivect = 0; 38 | while () { 39 | last if /\[done\]/; 40 | next unless /\S/; 41 | $n = $_; 42 | $n =~ s/[\r\n]$//; 43 | 44 | if ($n =~ m@(\S*) *= *(\S+)@) { 45 | $ivect = $2; 46 | $n = $1; 47 | } 48 | 49 | if ($n ne "-") { 50 | $i4 = $ivect * 4; 51 | printf S "ivec_$n = $i4\n"; 52 | printf H "#define ivec_$n $ivect\n"; 53 | } 54 | 55 | $ivect ++; 56 | } 57 | next; 58 | } 59 | 60 | ($name, $addr, $bits) = split(' ', $_, 3); 61 | next unless $name =~ /\S/; 62 | 63 | $type = "byte"; 64 | 65 | if ($bits eq ".bits") { 66 | $bits = "b7 b6 b5 b4 b3 b2 b1 b0"; 67 | } 68 | 69 | if ($bits =~ /^\.HI\s*(.*)/) { 70 | $type = "word"; 71 | $bits = $1; 72 | } 73 | 74 | if ($bits) { 75 | print S "\n"; 76 | print H "\n"; 77 | $nl = "\n"; 78 | } else { 79 | print S $nl; 80 | print H $nl; 81 | $nl = ''; 82 | } 83 | print S "$name\t= 0x$addr\n"; 84 | 85 | if ($bits) { 86 | $bitf = 0; 87 | $unspec = 0; 88 | $type = "${name}_type"; 89 | print H "typedef union {\n"; 90 | print H " struct {\n"; 91 | $sbits = ''; 92 | for $field (reverse split(' ', $bits)) { 93 | if ($field eq ":") { 94 | print H " byte unspec_$unspec:1;\n"; 95 | $unspec ++; 96 | $bitf ++; 97 | } elsif ($field =~ /(.*):(\d)/) { 98 | print H " byte $1:$2;\n"; 99 | printf S " ${name}_$1\t= 0x%02x\n", ((1 << $2) - 1) << $bitf; 100 | $bitf += $2; 101 | } else { 102 | print H " byte $field:1;\n"; 103 | printf S " ${name}_$field\t= 0x%02x\n", 1 << $bitf; 104 | $sbits .= sprintf " \$$field\t= %d\n", $bitf; 105 | $bitf ++; 106 | } 107 | } 108 | print S $sbits; 109 | print H " };\n"; 110 | print H " byte b;\n"; 111 | print H "} $type;\n"; 112 | } 113 | 114 | print H "#define $name (*(volatile $type *)0x$addr)\n"; 115 | } 116 | 117 | print H ' 118 | #define set_ivect(f,n) \ 119 | asm ("mov.w #%%lo16(%d0),_ivects+%d1" : : "s" (f), "g" (n*4)); \ 120 | asm ("mov.w #%%hi16(%d0),_ivects+%d1" : : "s" (f), "g" (n*4+2)); 121 | '; 122 | -------------------------------------------------------------------------------- /firmware/tc13badge/r8c2l.io: -------------------------------------------------------------------------------- 1 | # This was hastily assembled from one of DJ's examples plus R8C/2L/2K reference 2 | # information. There are likely errors. Check the data sheet to verify. 3 | 4 | pm0 04 : : : : pm03 : : : 5 | pm1 05 : : : : : pm12 : : 6 | cm0 06 .bits 7 | cm1 07 .bits 8 | prcr 0a : : : : prc3 prc2 prc1 prc0 9 | ocd 0c : : : : ocd3 ocd2 ocd1 ocd0 10 | 11 | wdtr 0d 12 | wdts 0e 13 | wdc 0f 14 | 15 | rmad0 10 16 | rmad0l 10 17 | rmad0m 11 18 | rmad0h 12 19 | aier 13 20 | rmad1 14 21 | rmad1l 14 22 | rmad1m 15 23 | rmad1h 16 24 | 25 | cspr 1c 26 | 27 | fra0 23 .bits 28 | fra1 24 29 | fra2 25 30 | fra6 2b 31 | 32 | vca1 31 33 | vca2 32 .bits 34 | vw1c 36 35 | vw2c 37 36 | vw0c 38 37 | 38 | trcic 47 39 | trd0ic 48 40 | trd1ic 49 41 | s2tic 4b 42 | s2ric 4c 43 | kupic 4d 44 | adic 4e 45 | s0tic 51 46 | s0ric 52 47 | traic 56 48 | trbic 58 49 | int1ic 59 50 | int3ic 5a 51 | int0ic 5d 52 | 53 | u0mr a0 : prye pry stps ckdir smd:3 54 | u0brg a1 55 | u0tb a2 56 | u0tbl a2 57 | u0tbh a3 58 | u0c0 a4 uform ckpol nch : txept : clk:2 59 | u0c1 a5 : : : : ri re ti te 60 | u0rb a6 .HI 61 | u0rbl a6 62 | u0rbh a7 63 | 64 | ad c0 .HI 65 | adl c0 66 | adh c1 67 | adcon2 d4 : : : : : : : smp 68 | adcon0 d6 cks0 adst adcap adgsel0 md ch:3 69 | adcon1 d7 : : vcut cks1 bits : : : 70 | 71 | p0 e0 .bits 72 | p1 e1 .bits 73 | pd0 e2 .bits 74 | pd1 e3 .bits 75 | p2 e4 .bits 76 | p3 e5 .bits 77 | pd2 e6 .bits 78 | pd3 e7 .bits 79 | p4 e8 .bits 80 | pd4 ea .bits 81 | p2drr f4 .bits 82 | 83 | inten f9 int3pl int3en : : int1pl int1en int0pl int0en 84 | intf fa int3f:2 : : int1f:2 int0f:2 85 | kien fb 86 | pur0 fc .bits 87 | pur1 fd .bits 88 | 89 | tracr 100 : : tundf tedgf : tstop tcstf tstart 90 | traioc 101 : : tipf:2 tiosel toena topcr tedgsel 91 | tramr 102 tckcut tck:3 : tmod:3 92 | trapre 103 93 | tra 104 94 | 95 | lincr2 105 96 | lincr 106 97 | linst 107 98 | 99 | trbcr 108 : : : : : tstop tcstf tstart 100 | trbocr 109 : : : : : tosstf tossp tosst 101 | trbioc 10a : : : : inoseg inostg tocnt topl 102 | trbmr 10b tckcut : tck:2 twrc : tmod:2 103 | trbpre 10c 104 | trbsc 10d 105 | trbpr 10e 106 | 107 | trcmr 120 108 | trccr1 121 109 | trcier 122 110 | trcsr 123 111 | trcior0 124 112 | trcior1 125 113 | trc 126 114 | trcgra 128 115 | trcgrb 12a 116 | trcgrc 12c 117 | trcgrd 12e 118 | trccr2 130 119 | trcdf 131 120 | trcoer 132 121 | 122 | trdstr 137 123 | trdmr 138 124 | trdpmr 139 125 | trdfcr 13a 126 | trdoer1 13b 127 | trdoer2 13c 128 | trdocr 13d 129 | trddf0 13e 130 | trddf1 13f 131 | trdcr0 140 132 | trdiora0 141 133 | trdiorc0 142 134 | trdsr0 143 135 | trdier0 144 136 | trdpocr0 145 137 | trd0 146 138 | trdgra0 148 139 | trdgrb0 14a 140 | trdgrc0 14c 141 | trdgrd0 14e 142 | trdcr1 150 143 | trdiora1 151 144 | trdiorc1 152 145 | trdsr1 153 146 | trdier1 154 147 | trdpocr1 155 148 | trd1 156 149 | trdgra1 158 150 | trdgrb1 15a 151 | trdgrc1 15c 152 | trdgrd1 15e 153 | 154 | u2mr 160 : prye pry stps ckdir smd:3 155 | u2brg 161 156 | u2tb 162 157 | u2tbl 162 158 | u2tbh 163 159 | u2c0 164 uform ckpol nch : txept : clk:2 160 | u2c1 165 : : : : ri re ti te 161 | u2rb 166 .HI 162 | u2rbl 166 163 | u2rbh 167 164 | 165 | fmr4 1b3 166 | fmr1 1b5 167 | fmr0 1b7 168 | -------------------------------------------------------------------------------- /firmware/usb_test/Makefile: -------------------------------------------------------------------------------- 1 | # Hey Emacs, this is a -*- makefile -*- 2 | 3 | # Target definition for lpcusb library 4 | LPCUSB_TARGET = LPC17xx 5 | 6 | # Target file name (without extension). 7 | TARGET = usb_test 8 | 9 | # Library paths 10 | LPCUSB_PATH = $(LIBS_PATH)/lpcusb/target 11 | 12 | # List C source files here. (C dependencies are automatically generated.) 13 | SRC = $(TARGET).c \ 14 | $(LIBS_PATH)/usb_serial.c \ 15 | $(LIBS_PATH)/serial_fifo.c \ 16 | $(LIBS_PATH)/LPC17xx_Startup.c \ 17 | $(LIBS_PATH)/LPC17xx_Interrupts.c \ 18 | $(LIBS_PATH)/ubertooth.c \ 19 | $(LPCUSB_PATH)/usbcontrol.c \ 20 | $(LPCUSB_PATH)/usbinit.c \ 21 | $(LPCUSB_PATH)/usbhw_lpc.c \ 22 | $(LPCUSB_PATH)/usbstdreq.c 23 | 24 | # List any extra directories to look for include files here. 25 | # Each directory must be seperated by a space. 26 | # Use forward slashes for directory separators. 27 | # For a directory that has spaces, enclose it in quotes. 28 | EXTRAINCDIRS = $(LIBS_PATH) $(LPCUSB_PATH) 29 | 30 | # Place -D or -U options here for C sources 31 | CDEFS = -D$(BOARD) -D$(LPCUSB_TARGET) $(COMPILE_OPTS) 32 | 33 | include ../common.mk 34 | -------------------------------------------------------------------------------- /firmware/usb_test/README: -------------------------------------------------------------------------------- 1 | usb_test.c implements a USB serial (CDC) interface. After flashing the 2 | Ubertooth board, unplug the board from USB and plug it in again. A new USB 3 | device should be detected. For example (on Linux): 4 | 5 | # dmesg 6 | 7 | [134437.193956] usb 8-1.2: New USB device found, idVendor=ffff, idProduct=0005 8 | [134437.193962] usb 8-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 9 | [134437.193969] usb 8-1.2: Product: Ubertooth serial 10 | [134437.193974] usb 8-1.2: Manufacturer: http://ubertooth.sourceforge.net/ 11 | [134437.193980] usb 8-1.2: SerialNumber: 00000001 12 | 13 | The USBLED should be illuminated at this point. 14 | 15 | Further testing of the USB serial interface can be done by attaching a USB 16 | serial driver to the device. On Linux, you can do this by disconnecting the 17 | Ubertooth board (and any other USB serial devices) and then: 18 | 19 | # modprobe -r usbserial 20 | # modprobe usbserial vendor=0xffff product=0x0005 21 | 22 | Then connect the Ubertooth board. You should now have a new USB serial port: 23 | 24 | # dmesg 25 | 26 | [135221.849162] usbserial_generic 8-1.2:1.1: generic converter detected 27 | [135221.849391] usb 8-1.2: generic converter now attached to ttyUSB1 28 | 29 | You can connect to this port (for example with minicom) and type some 30 | characters. Each character should echo back to the screen, and USRLED should 31 | toggle on or off with each character typed. 32 | -------------------------------------------------------------------------------- /firmware/usb_test/usb_test.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #include "ubertooth.h" 23 | #include "usb_serial.h" 24 | 25 | int main() 26 | { 27 | int c; 28 | 29 | ubertooth_init(); 30 | usb_serial_init(); 31 | 32 | /* 33 | * for each character received over USB serial connection, echo the 34 | * character back over USB serial and toggle USRLED 35 | */ 36 | while (1) { 37 | c = VCOM_getchar(); 38 | if (c != EOF) { 39 | /* toggle USRLED */ 40 | if (USRLED) 41 | USRLED_CLR; 42 | else 43 | USRLED_SET; 44 | VCOM_putchar(c); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /hardware/artichoke/README: -------------------------------------------------------------------------------- 1 | Copyright 2010 Michael Ossmann 2 | 3 | These files are part of Project Ubertooth. 4 | 5 | This is a free hardware design; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2, or (at your option) 8 | any later version. 9 | 10 | This design is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this design; see the file COPYING. If not, write to 17 | the Free Software Foundation, Inc., 51 Franklin Street, 18 | Boston, MA 02110-1301, USA. 19 | 20 | project code name: Artichoke 21 | 22 | This is candidate to become Ubertooth Two. It isn't finished yet. 23 | 24 | hardware notes: 25 | 26 | Schematic and layout files were designed in KiCad, an open source electronic 27 | design automation package. 28 | 29 | order of copper layers: 30 | Front 31 | Inner3 32 | Inner2 33 | Back 34 | 35 | PCB description: 4 layer PCB 1.6 mm 36 | Copper 1 35 um 37 | Dielectric 1-2 0.35 mm 38 | Copper 2 18 um 39 | Dielectric 2-3 0.76 mm 40 | Copper 3 18 um 41 | Dielectric 3-4 0.35 mm 42 | Copper 4 35 um 43 | DE104iML or equivalent substrate (Er=4.42@2.4GHz TanD=0.016) 44 | double side solder mask black 45 | double side silkscreen white 46 | 6 mil min trace width and 47 | 6 mil min isolation 48 | -------------------------------------------------------------------------------- /hardware/artichoke/artichoke: -------------------------------------------------------------------------------- 1 | update=20/11/2008-19:07:03 2 | version=1 3 | last_client=eeschema 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetITyp=0 11 | NetIExt=.net 12 | PkgIExt=.pkg 13 | NetDir= 14 | LibDir= 15 | NetType=0 16 | [cvpcb/libraries] 17 | EquName1=devcms 18 | [pcbnew] 19 | version=1 20 | PadDrlX=320 21 | PadDimH=600 22 | PadDimV=600 23 | PadForm=1 24 | PadMask=14745599 25 | ViaDiam=450 26 | ViaDril=250 27 | Isol=60 28 | Countlayer=2 29 | Lpiste=170 30 | RouteTo=15 31 | RouteBo=0 32 | TypeVia=3 33 | Segm45=1 34 | Racc45=1 35 | Unite=0 36 | SegFill=1 37 | SegAffG=0 38 | NewAffG=1 39 | PadFill=1 40 | PadAffG=1 41 | PadSNum=1 42 | ModAffC=0 43 | ModAffT=0 44 | PcbAffT=0 45 | SgPcb45=1 46 | TxtPcbV=800 47 | TxtPcbH=600 48 | TxtModV=600 49 | TxtModH=600 50 | TxtModW=120 51 | HPGLnum=1 52 | HPGdiam=15 53 | HPGLSpd=20 54 | HPGLrec=2 55 | HPGLorg=0 56 | GERBmin=15 57 | VEgarde=100 58 | DrawLar=150 59 | EdgeLar=150 60 | TxtLar=120 61 | MSegLar=150 62 | ForPlot=1 63 | WpenSer=10 64 | UserGrX=0,01 65 | UserGrY=0,01 66 | UserGrU=1 67 | DivGrPc=1 68 | TimeOut=600 69 | MaxLnkS=3 70 | ShowRat=0 71 | ShowMRa=1 72 | [pcbnew/libraries] 73 | LibDir= 74 | LibName1=sockets 75 | LibName2=connect 76 | LibName3=discret 77 | LibName4=pin_array 78 | LibName5=divers 79 | LibName6=libcms 80 | LibName7=display 81 | LibName8=valves 82 | LibName9=led 83 | LibName10=dip_sockets 84 | [eeschema] 85 | version=1 86 | LibDir= 87 | NetFmt=1 88 | HPGLSpd=20 89 | HPGLDm=15 90 | HPGLNum=1 91 | offX_A4=0 92 | offY_A4=0 93 | offX_A3=0 94 | offY_A3=0 95 | offX_A2=0 96 | offY_A2=0 97 | offX_A1=0 98 | offY_A1=0 99 | offX_A0=0 100 | offY_A0=0 101 | offX_A=0 102 | offY_A=0 103 | offX_B=0 104 | offY_B=0 105 | offX_C=0 106 | offY_C=0 107 | offX_D=0 108 | offY_D=0 109 | offX_E=0 110 | offY_E=0 111 | RptD_X=0 112 | RptD_Y=100 113 | RptLab=1 114 | SimCmd= 115 | UseNetN=0 116 | LabSize=60 117 | [eeschema/libraries] 118 | LibName1=power 119 | LibName2=device 120 | LibName3=transistors 121 | LibName4=conn 122 | LibName5=linear 123 | LibName6=regul 124 | LibName7=74xx 125 | LibName8=cmos4000 126 | LibName9=adc-dac 127 | LibName10=memory 128 | LibName11=xilinx 129 | LibName12=special 130 | LibName13=microcontrollers 131 | LibName14=dsp 132 | LibName15=microchip 133 | LibName16=analog_switches 134 | LibName17=motorola 135 | LibName18=texas 136 | LibName19=intel 137 | LibName20=audio 138 | LibName21=interface 139 | LibName22=digital-audio 140 | LibName23=philips 141 | LibName24=display 142 | LibName25=cypress 143 | LibName26=siliconi 144 | LibName27=opto 145 | LibName28=atmel 146 | LibName29=contrib 147 | LibName30=valves 148 | -------------------------------------------------------------------------------- /hardware/artichoke/artichoke.pro: -------------------------------------------------------------------------------- 1 | update=Mon Jun 20 18:03:56 2011 2 | last_client=pcbnew 3 | [general] 4 | version=1 5 | [cvpcb] 6 | version=1 7 | NetIExt=net 8 | [cvpcb/libraries] 9 | EquName1=devcms 10 | [eeschema] 11 | version=1 12 | LibDir=../kicad 13 | NetFmt=1 14 | HPGLSpd=20 15 | HPGLDm=15 16 | HPGLNum=1 17 | offX_A4=0 18 | offY_A4=0 19 | offX_A3=0 20 | offY_A3=0 21 | offX_A2=0 22 | offY_A2=0 23 | offX_A1=0 24 | offY_A1=0 25 | offX_A0=0 26 | offY_A0=0 27 | offX_A=0 28 | offY_A=0 29 | offX_B=0 30 | offY_B=0 31 | offX_C=0 32 | offY_C=0 33 | offX_D=0 34 | offY_D=0 35 | offX_E=0 36 | offY_E=0 37 | RptD_X=0 38 | RptD_Y=100 39 | RptLab=1 40 | LabSize=60 41 | [eeschema/libraries] 42 | LibName1=ubertooth-symbols 43 | LibName2=power 44 | LibName3=device 45 | LibName4=transistors 46 | LibName5=conn 47 | LibName6=linear 48 | LibName7=regul 49 | LibName8=74xx 50 | LibName9=cmos4000 51 | LibName10=adc-dac 52 | LibName11=memory 53 | LibName12=xilinx 54 | LibName13=special 55 | LibName14=microcontrollers 56 | LibName15=dsp 57 | LibName16=microchip 58 | LibName17=analog_switches 59 | LibName18=motorola 60 | LibName19=texas 61 | LibName20=intel 62 | LibName21=audio 63 | LibName22=interface 64 | LibName23=digital-audio 65 | LibName24=philips 66 | LibName25=display 67 | LibName26=cypress 68 | LibName27=siliconi 69 | LibName28=opto 70 | LibName29=atmel 71 | LibName30=contrib 72 | LibName31=valves 73 | [pcbnew] 74 | version=1 75 | PadDrlX=0 76 | PadDimH=472 77 | PadDimV=886 78 | BoardThickness=630 79 | SgPcb45=1 80 | TxtPcbV=394 81 | TxtPcbH=394 82 | TxtModV=394 83 | TxtModH=394 84 | TxtModW=80 85 | VEgarde=40 86 | DrawLar=20 87 | EdgeLar=80 88 | TxtLar=80 89 | MSegLar=80 90 | LastNetListRead=artichoke.net 91 | [pcbnew/libraries] 92 | LibDir=../kicad 93 | LibName1=sockets 94 | LibName2=connect 95 | LibName3=discret 96 | LibName4=pin_array 97 | LibName5=divers 98 | LibName6=libcms 99 | LibName7=display 100 | LibName8=valves 101 | LibName9=led 102 | LibName10=dip_sockets 103 | LibName11=ubertooth 104 | -------------------------------------------------------------------------------- /hardware/broccoli/README: -------------------------------------------------------------------------------- 1 | Copyright 2010, 2011 Michael Ossmann 2 | 3 | These files are part of Project Ubertooth. 4 | 5 | This is a free hardware design; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2, or (at your option) 8 | any later version. 9 | 10 | This design is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this design; see the file COPYING. If not, write to 17 | the Free Software Foundation, Inc., 51 Franklin Street, 18 | Boston, MA 02110-1301, USA. 19 | 20 | project code name: Broccoli 21 | 22 | Trying out another wireless transceiver IC (TRC104). It isn't finished yet. 23 | There are problems with the TRC104 oscillator that need to be resolved before 24 | testing can be completed. Firmware for this design is being developed in 25 | branches/broccoli but the hardware is in trunk. 26 | 27 | hardware notes: 28 | 29 | Schematic and layout files were designed in KiCad, an open source electronic 30 | design automation package. 31 | 32 | PCB description: 2 layer PCB 1.6 mm 33 | DE104iML or equivalent substrate (Er=4.42@2.4GHz TanD=0.016) 34 | double side solder mask black 35 | double side silkscreen white 36 | 6 mil min trace width and 37 | 6 mil min isolation 38 | -------------------------------------------------------------------------------- /hardware/broccoli/broccoli: -------------------------------------------------------------------------------- 1 | update=20/11/2008-19:07:03 2 | version=1 3 | last_client=eeschema 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetITyp=0 11 | NetIExt=.net 12 | PkgIExt=.pkg 13 | NetDir= 14 | LibDir= 15 | NetType=0 16 | [cvpcb/libraries] 17 | EquName1=devcms 18 | [pcbnew] 19 | version=1 20 | PadDrlX=320 21 | PadDimH=600 22 | PadDimV=600 23 | PadForm=1 24 | PadMask=14745599 25 | ViaDiam=450 26 | ViaDril=250 27 | Isol=60 28 | Countlayer=2 29 | Lpiste=170 30 | RouteTo=15 31 | RouteBo=0 32 | TypeVia=3 33 | Segm45=1 34 | Racc45=1 35 | Unite=0 36 | SegFill=1 37 | SegAffG=0 38 | NewAffG=1 39 | PadFill=1 40 | PadAffG=1 41 | PadSNum=1 42 | ModAffC=0 43 | ModAffT=0 44 | PcbAffT=0 45 | SgPcb45=1 46 | TxtPcbV=800 47 | TxtPcbH=600 48 | TxtModV=600 49 | TxtModH=600 50 | TxtModW=120 51 | HPGLnum=1 52 | HPGdiam=15 53 | HPGLSpd=20 54 | HPGLrec=2 55 | HPGLorg=0 56 | GERBmin=15 57 | VEgarde=100 58 | DrawLar=150 59 | EdgeLar=150 60 | TxtLar=120 61 | MSegLar=150 62 | ForPlot=1 63 | WpenSer=10 64 | UserGrX=0,01 65 | UserGrY=0,01 66 | UserGrU=1 67 | DivGrPc=1 68 | TimeOut=600 69 | MaxLnkS=3 70 | ShowRat=0 71 | ShowMRa=1 72 | [pcbnew/libraries] 73 | LibDir= 74 | LibName1=sockets 75 | LibName2=connect 76 | LibName3=discret 77 | LibName4=pin_array 78 | LibName5=divers 79 | LibName6=libcms 80 | LibName7=display 81 | LibName8=valves 82 | LibName9=led 83 | LibName10=dip_sockets 84 | [eeschema] 85 | version=1 86 | LibDir= 87 | NetFmt=1 88 | HPGLSpd=20 89 | HPGLDm=15 90 | HPGLNum=1 91 | offX_A4=0 92 | offY_A4=0 93 | offX_A3=0 94 | offY_A3=0 95 | offX_A2=0 96 | offY_A2=0 97 | offX_A1=0 98 | offY_A1=0 99 | offX_A0=0 100 | offY_A0=0 101 | offX_A=0 102 | offY_A=0 103 | offX_B=0 104 | offY_B=0 105 | offX_C=0 106 | offY_C=0 107 | offX_D=0 108 | offY_D=0 109 | offX_E=0 110 | offY_E=0 111 | RptD_X=0 112 | RptD_Y=100 113 | RptLab=1 114 | SimCmd= 115 | UseNetN=0 116 | LabSize=60 117 | [eeschema/libraries] 118 | LibName1=power 119 | LibName2=device 120 | LibName3=transistors 121 | LibName4=conn 122 | LibName5=linear 123 | LibName6=regul 124 | LibName7=74xx 125 | LibName8=cmos4000 126 | LibName9=adc-dac 127 | LibName10=memory 128 | LibName11=xilinx 129 | LibName12=special 130 | LibName13=microcontrollers 131 | LibName14=dsp 132 | LibName15=microchip 133 | LibName16=analog_switches 134 | LibName17=motorola 135 | LibName18=texas 136 | LibName19=intel 137 | LibName20=audio 138 | LibName21=interface 139 | LibName22=digital-audio 140 | LibName23=philips 141 | LibName24=display 142 | LibName25=cypress 143 | LibName26=siliconi 144 | LibName27=opto 145 | LibName28=atmel 146 | LibName29=contrib 147 | LibName30=valves 148 | -------------------------------------------------------------------------------- /hardware/broccoli/broccoli.pro: -------------------------------------------------------------------------------- 1 | update=Mon Jun 20 18:03:56 2011 2 | last_client=pcbnew 3 | [general] 4 | version=1 5 | [cvpcb] 6 | version=1 7 | NetIExt=net 8 | [cvpcb/libraries] 9 | EquName1=devcms 10 | [eeschema] 11 | version=1 12 | LibDir=../kicad 13 | NetFmt=1 14 | HPGLSpd=20 15 | HPGLDm=15 16 | HPGLNum=1 17 | offX_A4=0 18 | offY_A4=0 19 | offX_A3=0 20 | offY_A3=0 21 | offX_A2=0 22 | offY_A2=0 23 | offX_A1=0 24 | offY_A1=0 25 | offX_A0=0 26 | offY_A0=0 27 | offX_A=0 28 | offY_A=0 29 | offX_B=0 30 | offY_B=0 31 | offX_C=0 32 | offY_C=0 33 | offX_D=0 34 | offY_D=0 35 | offX_E=0 36 | offY_E=0 37 | RptD_X=0 38 | RptD_Y=100 39 | RptLab=1 40 | LabSize=60 41 | [eeschema/libraries] 42 | LibName1=ubertooth-symbols 43 | LibName2=power 44 | LibName3=device 45 | LibName4=transistors 46 | LibName5=conn 47 | LibName6=linear 48 | LibName7=regul 49 | LibName8=74xx 50 | LibName9=cmos4000 51 | LibName10=adc-dac 52 | LibName11=memory 53 | LibName12=xilinx 54 | LibName13=special 55 | LibName14=microcontrollers 56 | LibName15=dsp 57 | LibName16=microchip 58 | LibName17=analog_switches 59 | LibName18=motorola 60 | LibName19=texas 61 | LibName20=intel 62 | LibName21=audio 63 | LibName22=interface 64 | LibName23=digital-audio 65 | LibName24=philips 66 | LibName25=display 67 | LibName26=cypress 68 | LibName27=siliconi 69 | LibName28=opto 70 | LibName29=atmel 71 | LibName30=contrib 72 | LibName31=valves 73 | [pcbnew] 74 | version=1 75 | PadDrlX=0 76 | PadDimH=472 77 | PadDimV=886 78 | BoardThickness=630 79 | SgPcb45=1 80 | TxtPcbV=394 81 | TxtPcbH=394 82 | TxtModV=394 83 | TxtModH=394 84 | TxtModW=80 85 | VEgarde=40 86 | DrawLar=20 87 | EdgeLar=80 88 | TxtLar=80 89 | MSegLar=80 90 | LastNetListRead=broccoli.net 91 | [pcbnew/libraries] 92 | LibDir=../kicad 93 | LibName1=sockets 94 | LibName2=connect 95 | LibName3=discret 96 | LibName4=pin_array 97 | LibName5=divers 98 | LibName6=libcms 99 | LibName7=display 100 | LibName8=valves 101 | LibName9=led 102 | LibName10=dip_sockets 103 | LibName11=ubertooth 104 | -------------------------------------------------------------------------------- /hardware/celery/README: -------------------------------------------------------------------------------- 1 | Copyright 2010, 2011 Michael Ossmann 2 | 3 | These files are part of Project Ubertooth. 4 | 5 | This is a free hardware design; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2, or (at your option) 8 | any later version. 9 | 10 | This design is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this design; see the file COPYING. If not, write to 17 | the Free Software Foundation, Inc., 51 Franklin Street, 18 | Boston, MA 02110-1301, USA. 19 | 20 | project code name: Celery 21 | 22 | Special purpose Ubertooth design. This design has been abandoned. 23 | 24 | hardware notes: 25 | 26 | Schematic and layout files were designed in KiCad, an open source electronic 27 | design automation package. 28 | 29 | PCB description: 2 layer PCB 1.6 mm 30 | DE104iML or equivalent substrate (Er=4.42@2.4GHz TanD=0.016) 31 | double side solder mask black 32 | double side silkscreen white 33 | 6 mil min trace width and 34 | 6 mil min isolation 35 | -------------------------------------------------------------------------------- /hardware/celery/celery: -------------------------------------------------------------------------------- 1 | update=20/11/2008-19:07:03 2 | version=1 3 | last_client=eeschema 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetITyp=0 11 | NetIExt=.net 12 | PkgIExt=.pkg 13 | NetDir= 14 | LibDir= 15 | NetType=0 16 | [cvpcb/libraries] 17 | EquName1=devcms 18 | [pcbnew] 19 | version=1 20 | PadDrlX=320 21 | PadDimH=600 22 | PadDimV=600 23 | PadForm=1 24 | PadMask=14745599 25 | ViaDiam=450 26 | ViaDril=250 27 | Isol=60 28 | Countlayer=2 29 | Lpiste=170 30 | RouteTo=15 31 | RouteBo=0 32 | TypeVia=3 33 | Segm45=1 34 | Racc45=1 35 | Unite=0 36 | SegFill=1 37 | SegAffG=0 38 | NewAffG=1 39 | PadFill=1 40 | PadAffG=1 41 | PadSNum=1 42 | ModAffC=0 43 | ModAffT=0 44 | PcbAffT=0 45 | SgPcb45=1 46 | TxtPcbV=800 47 | TxtPcbH=600 48 | TxtModV=600 49 | TxtModH=600 50 | TxtModW=120 51 | HPGLnum=1 52 | HPGdiam=15 53 | HPGLSpd=20 54 | HPGLrec=2 55 | HPGLorg=0 56 | GERBmin=15 57 | VEgarde=100 58 | DrawLar=150 59 | EdgeLar=150 60 | TxtLar=120 61 | MSegLar=150 62 | ForPlot=1 63 | WpenSer=10 64 | UserGrX=0,01 65 | UserGrY=0,01 66 | UserGrU=1 67 | DivGrPc=1 68 | TimeOut=600 69 | MaxLnkS=3 70 | ShowRat=0 71 | ShowMRa=1 72 | [pcbnew/libraries] 73 | LibDir= 74 | LibName1=sockets 75 | LibName2=connect 76 | LibName3=discret 77 | LibName4=pin_array 78 | LibName5=divers 79 | LibName6=libcms 80 | LibName7=display 81 | LibName8=valves 82 | LibName9=led 83 | LibName10=dip_sockets 84 | [eeschema] 85 | version=1 86 | LibDir= 87 | NetFmt=1 88 | HPGLSpd=20 89 | HPGLDm=15 90 | HPGLNum=1 91 | offX_A4=0 92 | offY_A4=0 93 | offX_A3=0 94 | offY_A3=0 95 | offX_A2=0 96 | offY_A2=0 97 | offX_A1=0 98 | offY_A1=0 99 | offX_A0=0 100 | offY_A0=0 101 | offX_A=0 102 | offY_A=0 103 | offX_B=0 104 | offY_B=0 105 | offX_C=0 106 | offY_C=0 107 | offX_D=0 108 | offY_D=0 109 | offX_E=0 110 | offY_E=0 111 | RptD_X=0 112 | RptD_Y=100 113 | RptLab=1 114 | SimCmd= 115 | UseNetN=0 116 | LabSize=60 117 | [eeschema/libraries] 118 | LibName1=power 119 | LibName2=device 120 | LibName3=transistors 121 | LibName4=conn 122 | LibName5=linear 123 | LibName6=regul 124 | LibName7=74xx 125 | LibName8=cmos4000 126 | LibName9=adc-dac 127 | LibName10=memory 128 | LibName11=xilinx 129 | LibName12=special 130 | LibName13=microcontrollers 131 | LibName14=dsp 132 | LibName15=microchip 133 | LibName16=analog_switches 134 | LibName17=motorola 135 | LibName18=texas 136 | LibName19=intel 137 | LibName20=audio 138 | LibName21=interface 139 | LibName22=digital-audio 140 | LibName23=philips 141 | LibName24=display 142 | LibName25=cypress 143 | LibName26=siliconi 144 | LibName27=opto 145 | LibName28=atmel 146 | LibName29=contrib 147 | LibName30=valves 148 | -------------------------------------------------------------------------------- /hardware/celery/celery.pro: -------------------------------------------------------------------------------- 1 | update=Mon Jun 20 18:03:56 2011 2 | last_client=pcbnew 3 | [general] 4 | version=1 5 | [cvpcb] 6 | version=1 7 | NetIExt=net 8 | [cvpcb/libraries] 9 | EquName1=devcms 10 | [eeschema] 11 | version=1 12 | LibDir=../kicad 13 | NetFmt=1 14 | HPGLSpd=20 15 | HPGLDm=15 16 | HPGLNum=1 17 | offX_A4=0 18 | offY_A4=0 19 | offX_A3=0 20 | offY_A3=0 21 | offX_A2=0 22 | offY_A2=0 23 | offX_A1=0 24 | offY_A1=0 25 | offX_A0=0 26 | offY_A0=0 27 | offX_A=0 28 | offY_A=0 29 | offX_B=0 30 | offY_B=0 31 | offX_C=0 32 | offY_C=0 33 | offX_D=0 34 | offY_D=0 35 | offX_E=0 36 | offY_E=0 37 | RptD_X=0 38 | RptD_Y=100 39 | RptLab=1 40 | LabSize=60 41 | [eeschema/libraries] 42 | LibName1=ubertooth-symbols 43 | LibName2=power 44 | LibName3=device 45 | LibName4=transistors 46 | LibName5=conn 47 | LibName6=linear 48 | LibName7=regul 49 | LibName8=74xx 50 | LibName9=cmos4000 51 | LibName10=adc-dac 52 | LibName11=memory 53 | LibName12=xilinx 54 | LibName13=special 55 | LibName14=microcontrollers 56 | LibName15=dsp 57 | LibName16=microchip 58 | LibName17=analog_switches 59 | LibName18=motorola 60 | LibName19=texas 61 | LibName20=intel 62 | LibName21=audio 63 | LibName22=interface 64 | LibName23=digital-audio 65 | LibName24=philips 66 | LibName25=display 67 | LibName26=cypress 68 | LibName27=siliconi 69 | LibName28=opto 70 | LibName29=atmel 71 | LibName30=contrib 72 | LibName31=valves 73 | [pcbnew] 74 | version=1 75 | PadDrlX=0 76 | PadDimH=472 77 | PadDimV=886 78 | BoardThickness=630 79 | SgPcb45=1 80 | TxtPcbV=394 81 | TxtPcbH=394 82 | TxtModV=394 83 | TxtModH=394 84 | TxtModW=80 85 | VEgarde=40 86 | DrawLar=20 87 | EdgeLar=80 88 | TxtLar=80 89 | MSegLar=80 90 | LastNetListRead=celery.net 91 | [pcbnew/libraries] 92 | LibDir=../kicad 93 | LibName1=sockets 94 | LibName2=connect 95 | LibName3=discret 96 | LibName4=pin_array 97 | LibName5=divers 98 | LibName6=libcms 99 | LibName7=display 100 | LibName8=valves 101 | LibName9=led 102 | LibName10=dip_sockets 103 | LibName11=ubertooth 104 | -------------------------------------------------------------------------------- /hardware/endive/README: -------------------------------------------------------------------------------- 1 | Copyright 2010, 2011 Michael Ossmann 2 | 3 | These files are part of Project Ubertooth. 4 | 5 | This is a free hardware design; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2, or (at your option) 8 | any later version. 9 | 10 | This design is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this design; see the file COPYING. If not, write to 17 | the Free Software Foundation, Inc., 51 Franklin Street, 18 | Boston, MA 02110-1301, USA. 19 | 20 | project code name: Endive 21 | 22 | This is an adapter for the E8a programming connector on Dandelion. It can be 23 | used with either a Renesas E8a or a Pogoprog or similar FTDI board. 24 | 25 | hardware notes: 26 | 27 | Schematic and layout files were designed in KiCad, an open source electronic 28 | design automation package. 29 | 30 | PCB description: 2 layer PCB 1.6 mm 31 | DE104iML or equivalent substrate (Er=4.42@2.4GHz TanD=0.016) 32 | double side solder mask black 33 | double side silkscreen white 34 | 10 mil min trace width and 35 | 10 mil min isolation 36 | -------------------------------------------------------------------------------- /hardware/endive/endive-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Sat 10 Sep 2011 08:44:03 PM MDT 2 | #encoding utf-8 3 | # 4 | # CONN_4 5 | # 6 | DEF CONN_4 P 0 40 Y N 1 F N 7 | F0 "P" -50 0 50 V V C CNN 8 | F1 "CONN_4" 50 0 50 V V C CNN 9 | DRAW 10 | S -100 200 100 -200 0 1 0 N 11 | X P1 1 -350 150 250 R 50 50 1 1 P I 12 | X P2 2 -350 50 250 R 50 50 1 1 P I 13 | X P3 3 -350 -50 250 R 50 50 1 1 P I 14 | X P4 4 -350 -150 250 R 50 50 1 1 P I 15 | ENDDRAW 16 | ENDDEF 17 | # 18 | # CONN_6 19 | # 20 | DEF CONN_6 P 0 30 Y N 1 F N 21 | F0 "P" -50 0 60 V V C CNN 22 | F1 "CONN_6" 50 0 60 V V C CNN 23 | DRAW 24 | S -100 300 100 -300 0 1 0 N 25 | X 1 1 -350 250 250 R 60 60 1 1 P I 26 | X 2 2 -350 150 250 R 60 60 1 1 P I 27 | X 3 3 -350 50 250 R 60 60 1 1 P I 28 | X 4 4 -350 -50 250 R 60 60 1 1 P I 29 | X 5 5 -350 -150 250 R 60 60 1 1 P I 30 | X 6 6 -350 -250 250 R 60 60 1 1 P I 31 | ENDDRAW 32 | ENDDEF 33 | # 34 | # CONN_7X2 35 | # 36 | DEF CONN_7X2 P 0 40 Y N 1 F N 37 | F0 "P" 0 400 60 H V C CNN 38 | F1 "CONN_7X2" 0 0 60 V V C CNN 39 | DRAW 40 | S -100 350 100 -350 0 1 0 N 41 | X P1 1 -400 300 300 R 60 60 1 1 P I 42 | X P2 2 400 300 300 L 60 60 1 1 P I 43 | X P3 3 -400 200 300 R 60 60 1 1 P I 44 | X P4 4 400 200 300 L 60 60 1 1 P I 45 | X P5 5 -400 100 300 R 60 60 1 1 P I 46 | X P6 6 400 100 300 L 60 60 1 1 P I 47 | X P7 7 -400 0 300 R 60 60 1 1 P I 48 | X P8 8 400 0 300 L 60 60 1 1 P I 49 | X 9 9 -400 -100 300 R 60 60 1 1 P I 50 | X 10 10 400 -100 300 L 60 60 1 1 P I 51 | X 11 11 -400 -200 300 R 60 60 1 1 P I 52 | X 12 12 400 -200 300 L 60 60 1 1 P I 53 | X 13 13 -400 -300 300 R 60 60 1 1 P I 54 | X 14 14 400 -300 300 L 60 60 1 1 P I 55 | ENDDRAW 56 | ENDDEF 57 | # 58 | # DIODESCH 59 | # 60 | DEF DIODESCH D 0 40 N N 1 F N 61 | F0 "D" 0 100 40 H V C CNN 62 | F1 "DIODESCH" 0 -100 40 H V C CNN 63 | $FPLIST 64 | D? 65 | S* 66 | $ENDFPLIST 67 | DRAW 68 | P 3 0 1 0 -50 50 50 0 -50 -50 F 69 | P 6 0 1 8 75 25 75 50 50 50 50 -50 25 -50 25 -25 N 70 | X A 1 -200 0 150 R 40 40 1 1 P 71 | X K 2 200 0 150 L 40 40 1 1 P 72 | ENDDRAW 73 | ENDDEF 74 | # 75 | # GND 76 | # 77 | DEF ~GND #PWR 0 0 Y Y 1 F P 78 | F0 "#PWR" 0 0 30 H I C CNN 79 | F1 "GND" 0 -70 30 H I C CNN 80 | DRAW 81 | P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N 82 | X GND 1 0 0 0 U 30 30 1 1 W N 83 | ENDDRAW 84 | ENDDEF 85 | # 86 | # LED 87 | # 88 | DEF LED D 0 40 Y N 1 F N 89 | F0 "D" 0 100 50 H V C CNN 90 | F1 "LED" 0 -100 50 H V C CNN 91 | $FPLIST 92 | LED-3MM 93 | LED-5MM 94 | LED-10MM 95 | LED-0603 96 | LED-0805 97 | LED-1206 98 | LEDV 99 | $ENDFPLIST 100 | DRAW 101 | P 2 0 1 0 50 50 50 -50 N 102 | P 3 0 1 0 -50 50 50 0 -50 -50 F 103 | P 3 0 1 0 65 -40 110 -80 105 -55 N 104 | P 3 0 1 0 80 -25 125 -65 120 -40 N 105 | X A 1 -200 0 150 R 40 40 1 1 P 106 | X K 2 200 0 150 L 40 40 1 1 P 107 | ENDDRAW 108 | ENDDEF 109 | # 110 | # R 111 | # 112 | DEF R R 0 0 N Y 1 F N 113 | F0 "R" 80 0 50 V V C CNN 114 | F1 "R" 0 0 50 V V C CNN 115 | $FPLIST 116 | R? 117 | SM0603 118 | SM0805 119 | R?-* 120 | $ENDFPLIST 121 | DRAW 122 | S -40 150 40 -150 0 1 12 N 123 | X ~ 1 0 250 100 D 60 60 1 1 P 124 | X ~ 2 0 -250 100 U 60 60 1 1 P 125 | ENDDRAW 126 | ENDDEF 127 | # 128 | # SPST 129 | # 130 | DEF SPST SW 0 0 N Y 1 F N 131 | F0 "SW" 0 100 70 H V C CNN 132 | F1 "SPST" 0 -100 70 H V C CNN 133 | DRAW 134 | C -150 0 50 0 0 0 N 135 | C 150 0 50 0 0 0 N 136 | P 2 0 0 0 -100 0 100 100 N 137 | X 1 1 -500 0 300 R 70 70 1 1 I 138 | X 2 2 500 0 300 L 70 70 1 1 I 139 | ENDDRAW 140 | ENDDEF 141 | # 142 | #End Library 143 | -------------------------------------------------------------------------------- /hardware/endive/endive.cmp: -------------------------------------------------------------------------------- 1 | Cmp-Mod V01 Created by CvPCB (2011-06-30 BZR 3033)-stable date = Sat 10 Sep 2011 04:55:16 PM MDT 2 | 3 | BeginCmp 4 | TimeStamp = /4E6BC3BB; 5 | Reference = D1; 6 | ValeurCmp = DIODESCH; 7 | IdModule = GSG-SOD-523F; 8 | EndCmp 9 | 10 | BeginCmp 11 | TimeStamp = /4E6BCA4A; 12 | Reference = D2; 13 | ValeurCmp = VCCLED; 14 | IdModule = 0603D; 15 | EndCmp 16 | 17 | BeginCmp 18 | TimeStamp = /4E6BCA5A; 19 | Reference = D3; 20 | ValeurCmp = RESETLED; 21 | IdModule = 0603D; 22 | EndCmp 23 | 24 | BeginCmp 25 | TimeStamp = /4E6BCA5F; 26 | Reference = D4; 27 | ValeurCmp = MODELED; 28 | IdModule = 0603D; 29 | EndCmp 30 | 31 | BeginCmp 32 | TimeStamp = /4E6BC41A; 33 | Reference = P1; 34 | ValeurCmp = CONN_4; 35 | IdModule = PIN_ARRAY-4X1; 36 | EndCmp 37 | 38 | BeginCmp 39 | TimeStamp = /4E6BC46E; 40 | Reference = P2; 41 | ValeurCmp = CONN_4; 42 | IdModule = POGOPIN-4; 43 | EndCmp 44 | 45 | BeginCmp 46 | TimeStamp = /4E6BC429; 47 | Reference = P3; 48 | ValeurCmp = CONN_7X2; 49 | IdModule = PIN_ARRAY_7x2; 50 | EndCmp 51 | 52 | BeginCmp 53 | TimeStamp = /4E6BC40B; 54 | Reference = P4; 55 | ValeurCmp = CONN_6; 56 | IdModule = PIN_ARRAY-6X1; 57 | EndCmp 58 | 59 | BeginCmp 60 | TimeStamp = /4E6BCA63; 61 | Reference = R1; 62 | ValeurCmp = 330; 63 | IdModule = 0603; 64 | EndCmp 65 | 66 | BeginCmp 67 | TimeStamp = /4E6BCA67; 68 | Reference = R2; 69 | ValeurCmp = 330; 70 | IdModule = 0603; 71 | EndCmp 72 | 73 | BeginCmp 74 | TimeStamp = /4E6BCA69; 75 | Reference = R3; 76 | ValeurCmp = 330; 77 | IdModule = 0603; 78 | EndCmp 79 | 80 | BeginCmp 81 | TimeStamp = /4E6BCC00; 82 | Reference = SW1; 83 | ValeurCmp = SPST; 84 | IdModule = GSG-SSSS810701; 85 | EndCmp 86 | 87 | EndListe 88 | -------------------------------------------------------------------------------- /hardware/endive/endive.net: -------------------------------------------------------------------------------- 1 | # EESchema Netlist Version 1.1 created Sat 10 Sep 2011 04:55:16 PM MDT 2 | ( 3 | ( /4E6BC3BB GSG-SOD-523F D1 DIODESCH 4 | ( 1 /MODE ) 5 | ( 2 N-000011 ) 6 | ) 7 | ( /4E6BCA4A 0603D D2 VCCLED 8 | ( 1 /VCC ) 9 | ( 2 N-000008 ) 10 | ) 11 | ( /4E6BCA5A 0603D D3 RESETLED 12 | ( 1 /VCC ) 13 | ( 2 N-000009 ) 14 | ) 15 | ( /4E6BCA5F 0603D D4 MODELED 16 | ( 1 /VCC ) 17 | ( 2 N-000010 ) 18 | ) 19 | ( /4E6BC41A PIN_ARRAY-4X1 P1 CONN_4 20 | ( 1 /RESET ) 21 | ( 2 /VCC ) 22 | ( 3 /MODE ) 23 | ( 4 GND ) 24 | ) 25 | ( /4E6BC46E POGOPIN-4 P2 CONN_4 26 | ( 1 /RESET ) 27 | ( 2 /VCC ) 28 | ( 3 /MODE ) 29 | ( 4 GND ) 30 | ) 31 | ( /4E6BC429 PIN_ARRAY_7x2 P3 CONN_7X2 32 | ( 1 ? ) 33 | ( 2 GND ) 34 | ( 3 ? ) 35 | ( 4 GND ) 36 | ( 5 ? ) 37 | ( 6 GND ) 38 | ( 7 /MODE ) 39 | ( 8 /VIN ) 40 | ( 9 ? ) 41 | ( 10 GND ) 42 | ( 11 ? ) 43 | ( 12 GND ) 44 | ( 13 /RESET ) 45 | ( 14 GND ) 46 | ) 47 | ( /4E6BC40B PIN_ARRAY-6X1 P4 CONN_6 48 | ( 1 GND ) 49 | ( 2 ? ) 50 | ( 3 /VIN ) 51 | ( 4 N-000011 ) 52 | ( 5 /MODE ) 53 | ( 6 /RESET ) 54 | ) 55 | ( /4E6BCA63 0603 R1 330 56 | ( 1 N-000008 ) 57 | ( 2 GND ) 58 | ) 59 | ( /4E6BCA67 0603 R2 330 60 | ( 1 N-000009 ) 61 | ( 2 /RESET ) 62 | ) 63 | ( /4E6BCA69 0603 R3 330 64 | ( 1 N-000010 ) 65 | ( 2 /MODE ) 66 | ) 67 | ( /4E6BCC00 GSG-SSSS810701 SW1 SPST 68 | ( 1 /VIN ) 69 | ( 2 /VCC ) 70 | ) 71 | ) 72 | * 73 | { Allowed footprints by component: 74 | $component D1 75 | D? 76 | S* 77 | $endlist 78 | $component D2 79 | LED-3MM 80 | LED-5MM 81 | LED-10MM 82 | LED-0603 83 | LED-0805 84 | LED-1206 85 | LEDV 86 | $endlist 87 | $component D3 88 | LED-3MM 89 | LED-5MM 90 | LED-10MM 91 | LED-0603 92 | LED-0805 93 | LED-1206 94 | LEDV 95 | $endlist 96 | $component D4 97 | LED-3MM 98 | LED-5MM 99 | LED-10MM 100 | LED-0603 101 | LED-0805 102 | LED-1206 103 | LEDV 104 | $endlist 105 | $component R1 106 | R? 107 | SM0603 108 | SM0805 109 | R?-* 110 | $endlist 111 | $component R2 112 | R? 113 | SM0603 114 | SM0805 115 | R?-* 116 | $endlist 117 | $component R3 118 | R? 119 | SM0603 120 | SM0805 121 | R?-* 122 | $endlist 123 | $endfootprintlist 124 | } 125 | -------------------------------------------------------------------------------- /hardware/endive/endive.pro: -------------------------------------------------------------------------------- 1 | update=Sat 10 Sep 2011 04:55:44 PM MDT 2 | version=1 3 | last_client=pcbnew 4 | [cvpcb] 5 | version=1 6 | NetITyp=0 7 | NetIExt=.net 8 | PkgIExt=.pkg 9 | NetDir= 10 | LibDir= 11 | NetType=0 12 | [cvpcb/libraries] 13 | EquName1=devcms 14 | [general] 15 | version=1 16 | [eeschema] 17 | version=1 18 | LibDir=../kicad 19 | NetFmt=1 20 | HPGLSpd=20 21 | HPGLDm=15 22 | HPGLNum=1 23 | offX_A4=0 24 | offY_A4=0 25 | offX_A3=0 26 | offY_A3=0 27 | offX_A2=0 28 | offY_A2=0 29 | offX_A1=0 30 | offY_A1=0 31 | offX_A0=0 32 | offY_A0=0 33 | offX_A=0 34 | offY_A=0 35 | offX_B=0 36 | offY_B=0 37 | offX_C=0 38 | offY_C=0 39 | offX_D=0 40 | offY_D=0 41 | offX_E=0 42 | offY_E=0 43 | RptD_X=0 44 | RptD_Y=100 45 | RptLab=1 46 | LabSize=60 47 | [eeschema/libraries] 48 | LibName1=power 49 | LibName2=device 50 | LibName3=transistors 51 | LibName4=conn 52 | LibName5=linear 53 | LibName6=regul 54 | LibName7=74xx 55 | LibName8=cmos4000 56 | LibName9=adc-dac 57 | LibName10=memory 58 | LibName11=xilinx 59 | LibName12=special 60 | LibName13=microcontrollers 61 | LibName14=dsp 62 | LibName15=microchip 63 | LibName16=analog_switches 64 | LibName17=motorola 65 | LibName18=texas 66 | LibName19=intel 67 | LibName20=audio 68 | LibName21=interface 69 | LibName22=digital-audio 70 | LibName23=philips 71 | LibName24=display 72 | LibName25=cypress 73 | LibName26=siliconi 74 | LibName27=opto 75 | LibName28=atmel 76 | LibName29=contrib 77 | LibName30=valves 78 | LibName31=ubertooth-symbols 79 | [pcbnew] 80 | version=1 81 | PadDrlX=320 82 | PadDimH=600 83 | PadDimV=600 84 | BoardThickness=630 85 | TxtPcbV=800 86 | TxtPcbH=600 87 | TxtModV=600 88 | TxtModH=600 89 | TxtModW=120 90 | VEgarde=100 91 | DrawLar=150 92 | EdgeLar=150 93 | TxtLar=120 94 | MSegLar=150 95 | LastNetListRead=endive.net 96 | [pcbnew/libraries] 97 | LibDir=../kicad 98 | LibName1=sockets 99 | LibName2=connect 100 | LibName3=discret 101 | LibName4=pin_array 102 | LibName5=divers 103 | LibName6=libcms 104 | LibName7=display 105 | LibName8=valves 106 | LibName9=led 107 | LibName10=dip_sockets 108 | LibName11=ubertooth 109 | -------------------------------------------------------------------------------- /hardware/kicad/ubertooth-symbols.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 Date: Fri 26 Aug 2011 05:17:14 PM MDT 2 | # 3 | $CMP BC856 4 | F transistors/bipolar/*.* 5 | $ENDCMP 6 | # 7 | $CMP IP4221CZ6 8 | D Dual USB 2.0 integrated quad with ESD protection 9 | $ENDCMP 10 | # 11 | #End Doc Library 12 | -------------------------------------------------------------------------------- /hardware/kicad/ubertooth.mdc: -------------------------------------------------------------------------------- 1 | PCBNEW-LibDoc----V1 Sun Apr 24 11:14:30 2011 2 | # 3 | $MODULE LQFP80 4 | Li LQFP80 5 | Kw SOT315-1 6 | $EndMODULE 7 | # 8 | $MODULE SOT883 9 | Li SOT883 10 | Kw SC-101 11 | $EndMODULE 12 | # 13 | $MODULE SOT886 14 | Li SOT886 15 | Kw XSON6 MO-252 16 | $EndMODULE 17 | # 18 | $MODULE SSOP-28 19 | Li SSOP-28 20 | Cd SSOP 28 pins 21 | Kw CMS SSOP SMD 22 | $EndMODULE 23 | # 24 | $EndLIBDOC 25 | -------------------------------------------------------------------------------- /hardware/pogoprog/pogoprog.cmp: -------------------------------------------------------------------------------- 1 | Cmp-Mod V01 Created by CvPCB (2011-06-30 BZR 3033)-stable date = Sun 23 Oct 2011 11:09:03 PM MDT 2 | 3 | BeginCmp 4 | TimeStamp = /4CDDA7E7; 5 | Reference = C1; 6 | ValeurCmp = 100nF; 7 | IdModule = 0603; 8 | EndCmp 9 | 10 | BeginCmp 11 | TimeStamp = /4CDDB3EB; 12 | Reference = C2; 13 | ValeurCmp = 10μF; 14 | IdModule = SM1206POL; 15 | EndCmp 16 | 17 | BeginCmp 18 | TimeStamp = /4CDDB263; 19 | Reference = C3; 20 | ValeurCmp = 100nF; 21 | IdModule = 0603; 22 | EndCmp 23 | 24 | BeginCmp 25 | TimeStamp = /4CDDA608; 26 | Reference = D1; 27 | ValeurCmp = TXLED; 28 | IdModule = 0603D; 29 | EndCmp 30 | 31 | BeginCmp 32 | TimeStamp = /4CDDA621; 33 | Reference = D2; 34 | ValeurCmp = RXLED; 35 | IdModule = 0603D; 36 | EndCmp 37 | 38 | BeginCmp 39 | TimeStamp = /4CDDCB6A; 40 | Reference = J1; 41 | ValeurCmp = USB-MICRO-B; 42 | IdModule = GSG-USB-MICROB-FCI-10103594; 43 | EndCmp 44 | 45 | BeginCmp 46 | TimeStamp = /4CDDAFDF; 47 | Reference = P1; 48 | ValeurCmp = CONN_6; 49 | IdModule = POGOPIN-6; 50 | EndCmp 51 | 52 | BeginCmp 53 | TimeStamp = /4EA4E0D6; 54 | Reference = P2; 55 | ValeurCmp = CONN_6; 56 | IdModule = PIN_ARRAY-6X1; 57 | EndCmp 58 | 59 | BeginCmp 60 | TimeStamp = /4CDDB0FC; 61 | Reference = R1; 62 | ValeurCmp = DNP; 63 | IdModule = 0603bridged; 64 | EndCmp 65 | 66 | BeginCmp 67 | TimeStamp = /4CDDB10B; 68 | Reference = R2; 69 | ValeurCmp = DNP; 70 | IdModule = 0603; 71 | EndCmp 72 | 73 | BeginCmp 74 | TimeStamp = /4CDDA629; 75 | Reference = R3; 76 | ValeurCmp = 330; 77 | IdModule = 0603; 78 | EndCmp 79 | 80 | BeginCmp 81 | TimeStamp = /4CDDA631; 82 | Reference = R4; 83 | ValeurCmp = 330; 84 | IdModule = 0603; 85 | EndCmp 86 | 87 | BeginCmp 88 | TimeStamp = /4EA4EC49; 89 | Reference = R5; 90 | ValeurCmp = DNP; 91 | IdModule = 0603bridged; 92 | EndCmp 93 | 94 | BeginCmp 95 | TimeStamp = /4EA4EC65; 96 | Reference = R6; 97 | ValeurCmp = DNP; 98 | IdModule = 0603; 99 | EndCmp 100 | 101 | BeginCmp 102 | TimeStamp = /4CDDA5D6; 103 | Reference = U1; 104 | ValeurCmp = FT232RL; 105 | IdModule = SSOP-28; 106 | EndCmp 107 | 108 | EndListe 109 | -------------------------------------------------------------------------------- /hardware/pogoprog/pogoprog.net: -------------------------------------------------------------------------------- 1 | # EESchema Netlist Version 1.1 created Sun 23 Oct 2011 11:09:03 PM MDT 2 | ( 3 | ( /4CDDA7E7 0603 C1 100nF 4 | ( 1 3V3 ) 5 | ( 2 GND ) 6 | ) 7 | ( /4CDDB3EB SM1206POL C2 10μF 8 | ( 1 /VBUS ) 9 | ( 2 GND ) 10 | ) 11 | ( /4CDDB263 0603 C3 100nF 12 | ( 1 /VBUS ) 13 | ( 2 GND ) 14 | ) 15 | ( /4CDDA608 0603D D1 TXLED 16 | ( 1 N-000017 ) 17 | ( 2 /TXLED ) 18 | ) 19 | ( /4CDDA621 0603D D2 RXLED 20 | ( 1 N-000016 ) 21 | ( 2 /RXLED ) 22 | ) 23 | ( /4CDDCB6A GSG-USB-MICROB-FCI-10103594 J1 USB-MICRO-B 24 | ( 1 /VBUS ) 25 | ( 2 /D- ) 26 | ( 3 /D+ ) 27 | ( 4 ? ) 28 | ( 5 GND ) 29 | ) 30 | ( /4CDDAFDF POGOPIN-6 P1 CONN_6 31 | ( 1 GND ) 32 | ( 2 N-000001 ) 33 | ( 3 /VCCIO ) 34 | ( 4 /TXD ) 35 | ( 5 /RXD ) 36 | ( 6 /DTR ) 37 | ) 38 | ( /4EA4E0D6 PIN_ARRAY-6X1 P2 CONN_6 39 | ( 1 GND ) 40 | ( 2 N-000001 ) 41 | ( 3 /VCCIO ) 42 | ( 4 /TXD ) 43 | ( 5 /RXD ) 44 | ( 6 /DTR ) 45 | ) 46 | ( /4CDDB0FC 0603bridged R1 DNP 47 | ( 1 /VCCIO ) 48 | ( 2 3V3 ) 49 | ) 50 | ( /4CDDB10B 0603 R2 DNP 51 | ( 1 /VBUS ) 52 | ( 2 /VCCIO ) 53 | ) 54 | ( /4CDDA629 0603 R3 330 55 | ( 1 3V3 ) 56 | ( 2 N-000017 ) 57 | ) 58 | ( /4CDDA631 0603 R4 330 59 | ( 1 3V3 ) 60 | ( 2 N-000016 ) 61 | ) 62 | ( /4EA4EC49 0603bridged R5 DNP 63 | ( 1 /RTS ) 64 | ( 2 N-000001 ) 65 | ) 66 | ( /4EA4EC65 0603 R6 DNP 67 | ( 1 /CTS ) 68 | ( 2 N-000001 ) 69 | ) 70 | ( /4CDDA5D6 SSOP-28 U1 FT232RL 71 | ( 1 /TXD ) 72 | ( 2 /DTR ) 73 | ( 3 /RTS ) 74 | ( 4 /VCCIO ) 75 | ( 5 /RXD ) 76 | ( 6 ? ) 77 | ( 7 GND ) 78 | ( 8 ? ) 79 | ( 9 ? ) 80 | ( 10 ? ) 81 | ( 11 /CTS ) 82 | ( 12 ? ) 83 | ( 13 ? ) 84 | ( 14 ? ) 85 | ( 15 /D+ ) 86 | ( 16 /D- ) 87 | ( 17 3V3 ) 88 | ( 18 GND ) 89 | ( 19 ? ) 90 | ( 20 /VBUS ) 91 | ( 21 GND ) 92 | ( 22 /RXLED ) 93 | ( 23 /TXLED ) 94 | ( 24 ? ) 95 | ( 25 GND ) 96 | ( 26 GND ) 97 | ( 27 ? ) 98 | ( 28 ? ) 99 | ) 100 | ) 101 | * 102 | { Allowed footprints by component: 103 | $component C1 104 | SM* 105 | C? 106 | C1-1 107 | $endlist 108 | $component C2 109 | CP* 110 | SM* 111 | $endlist 112 | $component C3 113 | SM* 114 | C? 115 | C1-1 116 | $endlist 117 | $component D1 118 | LED-3MM 119 | LED-5MM 120 | LED-10MM 121 | LED-0603 122 | LED-0805 123 | LED-1206 124 | LEDV 125 | $endlist 126 | $component D2 127 | LED-3MM 128 | LED-5MM 129 | LED-10MM 130 | LED-0603 131 | LED-0805 132 | LED-1206 133 | LEDV 134 | $endlist 135 | $component R1 136 | R? 137 | SM0603 138 | SM0805 139 | R?-* 140 | $endlist 141 | $component R2 142 | R? 143 | SM0603 144 | SM0805 145 | R?-* 146 | $endlist 147 | $component R3 148 | R? 149 | SM0603 150 | SM0805 151 | R?-* 152 | $endlist 153 | $component R4 154 | R? 155 | SM0603 156 | SM0805 157 | R?-* 158 | $endlist 159 | $component R5 160 | R? 161 | SM0603 162 | SM0805 163 | R?-* 164 | $endlist 165 | $component R6 166 | R? 167 | SM0603 168 | SM0805 169 | R?-* 170 | $endlist 171 | $endfootprintlist 172 | } 173 | -------------------------------------------------------------------------------- /hardware/pogoprog/pogoprog.pro: -------------------------------------------------------------------------------- 1 | update=Mon 19 Dec 2011 09:50:07 AM MST 2 | version=1 3 | last_client=eeschema 4 | [cvpcb] 5 | version=1 6 | NetITyp=0 7 | NetIExt=.net 8 | PkgIExt=.pkg 9 | NetDir= 10 | LibDir= 11 | NetType=0 12 | [cvpcb/libraries] 13 | EquName1=devcms 14 | [general] 15 | version=1 16 | [pcbnew] 17 | version=1 18 | PadDrlX=0 19 | PadDimH=8661 20 | PadDimV=394 21 | BoardThickness=630 22 | SgPcb45=1 23 | TxtPcbV=800 24 | TxtPcbH=600 25 | TxtModV=600 26 | TxtModH=600 27 | TxtModW=120 28 | VEgarde=20 29 | DrawLar=150 30 | EdgeLar=150 31 | TxtLar=120 32 | MSegLar=80 33 | LastNetListRead=pogoprog.net 34 | [pcbnew/libraries] 35 | LibDir=../kicad 36 | LibName1=ubertooth 37 | LibName2=sockets 38 | LibName3=connect 39 | LibName4=discret 40 | LibName5=pin_array 41 | LibName6=divers 42 | LibName7=libcms 43 | LibName8=display 44 | LibName9=valves 45 | LibName10=led 46 | LibName11=dip_sockets 47 | [eeschema] 48 | version=1 49 | LibDir=../kicad 50 | NetFmt=1 51 | HPGLSpd=20 52 | HPGLDm=15 53 | HPGLNum=1 54 | offX_A4=0 55 | offY_A4=0 56 | offX_A3=0 57 | offY_A3=0 58 | offX_A2=0 59 | offY_A2=0 60 | offX_A1=0 61 | offY_A1=0 62 | offX_A0=0 63 | offY_A0=0 64 | offX_A=0 65 | offY_A=0 66 | offX_B=0 67 | offY_B=0 68 | offX_C=0 69 | offY_C=0 70 | offX_D=0 71 | offY_D=0 72 | offX_E=0 73 | offY_E=0 74 | RptD_X=0 75 | RptD_Y=100 76 | RptLab=1 77 | LabSize=60 78 | [eeschema/libraries] 79 | LibName1=ubertooth-symbols 80 | LibName2=power 81 | LibName3=device 82 | LibName4=transistors 83 | LibName5=conn 84 | LibName6=linear 85 | LibName7=regul 86 | LibName8=74xx 87 | LibName9=cmos4000 88 | LibName10=adc-dac 89 | LibName11=memory 90 | LibName12=xilinx 91 | LibName13=special 92 | LibName14=microcontrollers 93 | LibName15=dsp 94 | LibName16=microchip 95 | LibName17=analog_switches 96 | LibName18=motorola 97 | LibName19=texas 98 | LibName20=intel 99 | LibName21=audio 100 | LibName22=interface 101 | LibName23=digital-audio 102 | LibName24=philips 103 | LibName25=display 104 | LibName26=cypress 105 | LibName27=siliconi 106 | LibName28=opto 107 | LibName29=atmel 108 | LibName30=contrib 109 | LibName31=valves 110 | -------------------------------------------------------------------------------- /hardware/tc13badge/README: -------------------------------------------------------------------------------- 1 | Copyright 2010, 2011 Michael Ossmann 2 | 3 | These files are part of Project Ubertooth. 4 | 5 | This is a free hardware design; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2, or (at your option) 8 | any later version. 9 | 10 | This design is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this design; see the file COPYING. If not, write to 17 | the Free Software Foundation, Inc., 51 Franklin Street, 18 | Boston, MA 02110-1301, USA. 19 | 20 | 21 | ToorCon 13 Badge 22 | 23 | This is a special purpose Ubertooth design. See: 24 | 25 | http://greatscottgadgets.com/tc13badge/ 26 | 27 | 28 | hardware notes: 29 | 30 | Schematic and layout files were designed in KiCad, an open source electronic 31 | design automation package. 32 | 33 | PCB description: 2 layer PCB 1.6 mm 34 | DE104iML or equivalent substrate (Er=4.42@2.4GHz TanD=0.016) 35 | double side solder mask black 36 | double side silkscreen white 37 | 6 mil min trace width and 38 | 6 mil min isolation 39 | -------------------------------------------------------------------------------- /hardware/tc13badge/tc13badge: -------------------------------------------------------------------------------- 1 | update=20/11/2008-19:07:03 2 | version=1 3 | last_client=eeschema 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetITyp=0 11 | NetIExt=.net 12 | PkgIExt=.pkg 13 | NetDir= 14 | LibDir= 15 | NetType=0 16 | [cvpcb/libraries] 17 | EquName1=devcms 18 | [pcbnew] 19 | version=1 20 | PadDrlX=320 21 | PadDimH=600 22 | PadDimV=600 23 | PadForm=1 24 | PadMask=14745599 25 | ViaDiam=450 26 | ViaDril=250 27 | Isol=60 28 | Countlayer=2 29 | Lpiste=170 30 | RouteTo=15 31 | RouteBo=0 32 | TypeVia=3 33 | Segm45=1 34 | Racc45=1 35 | Unite=0 36 | SegFill=1 37 | SegAffG=0 38 | NewAffG=1 39 | PadFill=1 40 | PadAffG=1 41 | PadSNum=1 42 | ModAffC=0 43 | ModAffT=0 44 | PcbAffT=0 45 | SgPcb45=1 46 | TxtPcbV=800 47 | TxtPcbH=600 48 | TxtModV=600 49 | TxtModH=600 50 | TxtModW=120 51 | HPGLnum=1 52 | HPGdiam=15 53 | HPGLSpd=20 54 | HPGLrec=2 55 | HPGLorg=0 56 | GERBmin=15 57 | VEgarde=100 58 | DrawLar=150 59 | EdgeLar=150 60 | TxtLar=120 61 | MSegLar=150 62 | ForPlot=1 63 | WpenSer=10 64 | UserGrX=0,01 65 | UserGrY=0,01 66 | UserGrU=1 67 | DivGrPc=1 68 | TimeOut=600 69 | MaxLnkS=3 70 | ShowRat=0 71 | ShowMRa=1 72 | [pcbnew/libraries] 73 | LibDir= 74 | LibName1=sockets 75 | LibName2=connect 76 | LibName3=discret 77 | LibName4=pin_array 78 | LibName5=divers 79 | LibName6=libcms 80 | LibName7=display 81 | LibName8=valves 82 | LibName9=led 83 | LibName10=dip_sockets 84 | [eeschema] 85 | version=1 86 | LibDir= 87 | NetFmt=1 88 | HPGLSpd=20 89 | HPGLDm=15 90 | HPGLNum=1 91 | offX_A4=0 92 | offY_A4=0 93 | offX_A3=0 94 | offY_A3=0 95 | offX_A2=0 96 | offY_A2=0 97 | offX_A1=0 98 | offY_A1=0 99 | offX_A0=0 100 | offY_A0=0 101 | offX_A=0 102 | offY_A=0 103 | offX_B=0 104 | offY_B=0 105 | offX_C=0 106 | offY_C=0 107 | offX_D=0 108 | offY_D=0 109 | offX_E=0 110 | offY_E=0 111 | RptD_X=0 112 | RptD_Y=100 113 | RptLab=1 114 | SimCmd= 115 | UseNetN=0 116 | LabSize=60 117 | [eeschema/libraries] 118 | LibName1=power 119 | LibName2=device 120 | LibName3=transistors 121 | LibName4=conn 122 | LibName5=linear 123 | LibName6=regul 124 | LibName7=74xx 125 | LibName8=cmos4000 126 | LibName9=adc-dac 127 | LibName10=memory 128 | LibName11=xilinx 129 | LibName12=special 130 | LibName13=microcontrollers 131 | LibName14=dsp 132 | LibName15=microchip 133 | LibName16=analog_switches 134 | LibName17=motorola 135 | LibName18=texas 136 | LibName19=intel 137 | LibName20=audio 138 | LibName21=interface 139 | LibName22=digital-audio 140 | LibName23=philips 141 | LibName24=display 142 | LibName25=cypress 143 | LibName26=siliconi 144 | LibName27=opto 145 | LibName28=atmel 146 | LibName29=contrib 147 | LibName30=valves 148 | -------------------------------------------------------------------------------- /hardware/tc13badge/tc13badge.pro: -------------------------------------------------------------------------------- 1 | update=Fri 02 Sep 2011 08:38:27 AM MDT 2 | last_client=eeschema 3 | [general] 4 | version=1 5 | [cvpcb] 6 | version=1 7 | NetIExt=net 8 | [cvpcb/libraries] 9 | EquName1=devcms 10 | [pcbnew] 11 | version=1 12 | PadDrlX=0 13 | PadDimH=472 14 | PadDimV=886 15 | BoardThickness=630 16 | SgPcb45=1 17 | TxtPcbV=394 18 | TxtPcbH=394 19 | TxtModV=394 20 | TxtModH=394 21 | TxtModW=80 22 | VEgarde=40 23 | DrawLar=20 24 | EdgeLar=80 25 | TxtLar=80 26 | MSegLar=80 27 | LastNetListRead=tc13badge.net 28 | [pcbnew/libraries] 29 | LibDir=../kicad 30 | LibName1=sockets 31 | LibName2=connect 32 | LibName3=discret 33 | LibName4=pin_array 34 | LibName5=divers 35 | LibName6=libcms 36 | LibName7=display 37 | LibName8=valves 38 | LibName9=led 39 | LibName10=dip_sockets 40 | LibName11=ubertooth 41 | [eeschema] 42 | version=1 43 | LibDir=../kicad 44 | NetFmt=1 45 | HPGLSpd=20 46 | HPGLDm=15 47 | HPGLNum=1 48 | offX_A4=0 49 | offY_A4=0 50 | offX_A3=0 51 | offY_A3=0 52 | offX_A2=0 53 | offY_A2=0 54 | offX_A1=0 55 | offY_A1=0 56 | offX_A0=0 57 | offY_A0=0 58 | offX_A=0 59 | offY_A=0 60 | offX_B=0 61 | offY_B=0 62 | offX_C=0 63 | offY_C=0 64 | offX_D=0 65 | offY_D=0 66 | offX_E=0 67 | offY_E=0 68 | RptD_X=0 69 | RptD_Y=100 70 | RptLab=1 71 | LabSize=60 72 | [eeschema/libraries] 73 | LibName1=ubertooth-symbols 74 | LibName2=power 75 | LibName3=device 76 | LibName4=transistors 77 | LibName5=conn 78 | LibName6=linear 79 | LibName7=regul 80 | LibName8=74xx 81 | LibName9=cmos4000 82 | LibName10=adc-dac 83 | LibName11=memory 84 | LibName12=xilinx 85 | LibName13=special 86 | LibName14=microcontrollers 87 | LibName15=dsp 88 | LibName16=microchip 89 | LibName17=analog_switches 90 | LibName18=motorola 91 | LibName19=texas 92 | LibName20=intel 93 | LibName21=audio 94 | LibName22=interface 95 | LibName23=digital-audio 96 | LibName24=philips 97 | LibName25=display 98 | LibName26=cypress 99 | LibName27=siliconi 100 | LibName28=opto 101 | LibName29=atmel 102 | LibName30=contrib 103 | LibName31=valves 104 | -------------------------------------------------------------------------------- /hardware/ubertooth-one/README: -------------------------------------------------------------------------------- 1 | Copyright 2010 Michael Ossmann 2 | 3 | These files are part of Project Ubertooth. 4 | 5 | This is a free hardware design; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2, or (at your option) 8 | any later version. 9 | 10 | This design is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this design; see the file COPYING. If not, write to 17 | the Free Software Foundation, Inc., 51 Franklin Street, 18 | Boston, MA 02110-1301, USA. 19 | 20 | hardware notes: 21 | 22 | Ubertooth One schematic and layout files were designed in KiCad, an open source 23 | electronic design automation package. 24 | 25 | order of copper layers: 26 | Front 27 | Inner3 28 | Inner2 29 | Back 30 | 31 | PCB description: 4 layer PCB 1.6 mm 32 | Copper 1 35 um 33 | Dielectric 1-2 0.35 mm 34 | Copper 2 18 um 35 | Dielectric 2-3 0.76 mm 36 | Copper 3 18 um 37 | Dielectric 3-4 0.35 mm 38 | Copper 4 35 um 39 | DE104iML or equivalent substrate (Er=4.42@2.4GHz TanD=0.016) 40 | double side solder mask black 41 | double side silkscreen white 42 | 6 mil min trace width and 43 | 6 mil min isolation 44 | -------------------------------------------------------------------------------- /hardware/ubertooth-one/ubertooth-one: -------------------------------------------------------------------------------- 1 | update=20/11/2008-19:07:03 2 | version=1 3 | last_client=eeschema 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetITyp=0 11 | NetIExt=.net 12 | PkgIExt=.pkg 13 | NetDir= 14 | LibDir= 15 | NetType=0 16 | [cvpcb/libraries] 17 | EquName1=devcms 18 | [pcbnew] 19 | version=1 20 | PadDrlX=320 21 | PadDimH=600 22 | PadDimV=600 23 | PadForm=1 24 | PadMask=14745599 25 | ViaDiam=450 26 | ViaDril=250 27 | Isol=60 28 | Countlayer=2 29 | Lpiste=170 30 | RouteTo=15 31 | RouteBo=0 32 | TypeVia=3 33 | Segm45=1 34 | Racc45=1 35 | Unite=0 36 | SegFill=1 37 | SegAffG=0 38 | NewAffG=1 39 | PadFill=1 40 | PadAffG=1 41 | PadSNum=1 42 | ModAffC=0 43 | ModAffT=0 44 | PcbAffT=0 45 | SgPcb45=1 46 | TxtPcbV=800 47 | TxtPcbH=600 48 | TxtModV=600 49 | TxtModH=600 50 | TxtModW=120 51 | HPGLnum=1 52 | HPGdiam=15 53 | HPGLSpd=20 54 | HPGLrec=2 55 | HPGLorg=0 56 | GERBmin=15 57 | VEgarde=100 58 | DrawLar=150 59 | EdgeLar=150 60 | TxtLar=120 61 | MSegLar=150 62 | ForPlot=1 63 | WpenSer=10 64 | UserGrX=0,01 65 | UserGrY=0,01 66 | UserGrU=1 67 | DivGrPc=1 68 | TimeOut=600 69 | MaxLnkS=3 70 | ShowRat=0 71 | ShowMRa=1 72 | [pcbnew/libraries] 73 | LibDir= 74 | LibName1=sockets 75 | LibName2=connect 76 | LibName3=discret 77 | LibName4=pin_array 78 | LibName5=divers 79 | LibName6=libcms 80 | LibName7=display 81 | LibName8=valves 82 | LibName9=led 83 | LibName10=dip_sockets 84 | [eeschema] 85 | version=1 86 | LibDir= 87 | NetFmt=1 88 | HPGLSpd=20 89 | HPGLDm=15 90 | HPGLNum=1 91 | offX_A4=0 92 | offY_A4=0 93 | offX_A3=0 94 | offY_A3=0 95 | offX_A2=0 96 | offY_A2=0 97 | offX_A1=0 98 | offY_A1=0 99 | offX_A0=0 100 | offY_A0=0 101 | offX_A=0 102 | offY_A=0 103 | offX_B=0 104 | offY_B=0 105 | offX_C=0 106 | offY_C=0 107 | offX_D=0 108 | offY_D=0 109 | offX_E=0 110 | offY_E=0 111 | RptD_X=0 112 | RptD_Y=100 113 | RptLab=1 114 | SimCmd= 115 | UseNetN=0 116 | LabSize=60 117 | [eeschema/libraries] 118 | LibName1=power 119 | LibName2=device 120 | LibName3=transistors 121 | LibName4=conn 122 | LibName5=linear 123 | LibName6=regul 124 | LibName7=74xx 125 | LibName8=cmos4000 126 | LibName9=adc-dac 127 | LibName10=memory 128 | LibName11=xilinx 129 | LibName12=special 130 | LibName13=microcontrollers 131 | LibName14=dsp 132 | LibName15=microchip 133 | LibName16=analog_switches 134 | LibName17=motorola 135 | LibName18=texas 136 | LibName19=intel 137 | LibName20=audio 138 | LibName21=interface 139 | LibName22=digital-audio 140 | LibName23=philips 141 | LibName24=display 142 | LibName25=cypress 143 | LibName26=siliconi 144 | LibName27=opto 145 | LibName28=atmel 146 | LibName29=contrib 147 | LibName30=valves 148 | -------------------------------------------------------------------------------- /hardware/ubertooth-one/ubertooth-one.pro: -------------------------------------------------------------------------------- 1 | update=Sun Apr 24 11:48:12 2011 2 | last_client=pcbnew 3 | [general] 4 | version=1 5 | [cvpcb] 6 | version=1 7 | NetIExt=net 8 | [cvpcb/libraries] 9 | EquName1=devcms 10 | [eeschema] 11 | version=1 12 | LibDir=../kicad 13 | NetFmt=1 14 | HPGLSpd=20 15 | HPGLDm=15 16 | HPGLNum=1 17 | offX_A4=0 18 | offY_A4=0 19 | offX_A3=0 20 | offY_A3=0 21 | offX_A2=0 22 | offY_A2=0 23 | offX_A1=0 24 | offY_A1=0 25 | offX_A0=0 26 | offY_A0=0 27 | offX_A=0 28 | offY_A=0 29 | offX_B=0 30 | offY_B=0 31 | offX_C=0 32 | offY_C=0 33 | offX_D=0 34 | offY_D=0 35 | offX_E=0 36 | offY_E=0 37 | RptD_X=0 38 | RptD_Y=100 39 | RptLab=1 40 | LabSize=60 41 | [eeschema/libraries] 42 | LibName1=ubertooth-symbols 43 | LibName2=power 44 | LibName3=device 45 | LibName4=transistors 46 | LibName5=conn 47 | LibName6=linear 48 | LibName7=regul 49 | LibName8=74xx 50 | LibName9=cmos4000 51 | LibName10=adc-dac 52 | LibName11=memory 53 | LibName12=xilinx 54 | LibName13=special 55 | LibName14=microcontrollers 56 | LibName15=dsp 57 | LibName16=microchip 58 | LibName17=analog_switches 59 | LibName18=motorola 60 | LibName19=texas 61 | LibName20=intel 62 | LibName21=audio 63 | LibName22=interface 64 | LibName23=digital-audio 65 | LibName24=philips 66 | LibName25=display 67 | LibName26=cypress 68 | LibName27=siliconi 69 | LibName28=opto 70 | LibName29=atmel 71 | LibName30=contrib 72 | LibName31=valves 73 | [pcbnew] 74 | version=1 75 | PadDrlX=0 76 | PadDimH=472 77 | PadDimV=886 78 | BoardThickness=630 79 | SgPcb45=1 80 | TxtPcbV=394 81 | TxtPcbH=394 82 | TxtModV=394 83 | TxtModH=394 84 | TxtModW=80 85 | VEgarde=40 86 | DrawLar=20 87 | EdgeLar=80 88 | TxtLar=80 89 | MSegLar=80 90 | LastNetListRead=ubertooth-one.net 91 | [pcbnew/libraries] 92 | LibDir=../kicad 93 | LibName1=sockets 94 | LibName2=connect 95 | LibName3=discret 96 | LibName4=pin_array 97 | LibName5=divers 98 | LibName6=libcms 99 | LibName7=display 100 | LibName8=valves 101 | LibName9=led 102 | LibName10=dip_sockets 103 | LibName11=ubertooth 104 | -------------------------------------------------------------------------------- /hardware/ubertooth-zero/README: -------------------------------------------------------------------------------- 1 | Copyright 2010 Michael Ossmann 2 | 3 | These files are part of Project Ubertooth. 4 | 5 | This is a free hardware design; you can redistribute it and/or modify 6 | it under the terms of the GNU General Public License as published by 7 | the Free Software Foundation; either version 2, or (at your option) 8 | any later version. 9 | 10 | This design is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this design; see the file COPYING. If not, write to 17 | the Free Software Foundation, Inc., 51 Franklin Street, 18 | Boston, MA 02110-1301, USA. 19 | 20 | hardware notes: 21 | 22 | Ubertooth Zero schematic and layout files were designed in CadSoft's Eagle 23 | Light Edition which is freeware for non-commercial use and quite affordable for 24 | commercial use. 25 | -------------------------------------------------------------------------------- /hardware/ubertooth-zero/ubertooth-zero-bom.csv: -------------------------------------------------------------------------------- 1 | "Reference 2 | Designator","Manufacturer","Manufacturer 3 | Part Number","Description","Supplier","Supplier 4 | Part Number","Price 5 | Each","Quantity","Extended 6 | Price","Notes" 7 | "C61,81","Murata","GRM1555C1HR50CZ01D","CAP CER .5PF 50V C0G 0402","Mouser","81-GRM36C0R5C50",0.03,2,0.06, 8 | "C62","Murata","GRM1555C1H5R6DZ01D","CAP CER 5.6PF 50V C0G 0402","Mouser","81-GRM1555C1H5R6DZ1D",0.03,1,0.03, 9 | "C421,431","Murata","GRM1555C1H270JZ01D","CAP CER 27PF 50V 5% C0G 0402","Mouser","81-GRM1555C1H270JZ01",0.03,2,0.06, 10 | "C1,4,5","Murata","GRM1555C1H680JZ01D","CAP CER 68PF 50V 5% C0G 0402","Mouser","81-GRM1555C1H680JZ1D",0.03,3,0.09, 11 | "C3","Murata","GRM155R71E103KA01D","CAP CER 10000PF 25V 10% X7R 0402","Mouser","81-GRM36X103K25",0.03,1,0.03, 12 | "C2,6,7,16,71","Murata","GRM155R61A104KA01D","CAP CER .1UF 10V 10% X5R 0402","Mouser","81-GRM155R61A104KA01",0.02,4,0.08, 13 | "L62","Murata","LQG15HS5N6S02D","INDUCTOR 5.6NH 300MA 0402","Mouser","81-LQG15HS5N6S02D",0.04,1,0.04, 14 | "L61,81","Murata","LQW15AN7N5J00D","INDUCTOR 7.5NH 570MA 0402","Mouser","81-LQW15AN7N5J00D",0.31,2,0.62, 15 | "L71","Murata","LQW15AN27NJ00D","INDUCTOR 27NH 280MA 0402","Mouser","81-LQW15AN27NJ00D",0.31,1,0.31, 16 | "R451","KOA Speer","RK73H1ETTP4302F","Thick Film Resistor 1/16W 43K 1% 0402","Mouser","660-RK73H1ETTP4302F",0.06,1,0.06, 17 | "U1","Texas Instruments","CC2400-RTB1","IC RF TXRX 2.4GHZ LP 48-QFN","Mouser","595-CC2400-RTB1",9.14,1,9.14, 18 | "J3","Connector City","CONREVSMA003.031","Reverse Polarized SMA Connector","Mouser","712-CONREVSMA003.031",3.08,1,3.08,"Lower cost alternative: SparkFun WRL-00592 $1.95, SMA also an option" 19 | "U2","NXP","LPC1758FBD80,551","ARM Cortex M3 Micro Controller","Mouser","771-LPC1758FBD80551",8.67,1,8.67,"may substitute LPC175x" 20 | "X1","Abracon","ABMM2-16.000MHZ-E2-T","Crystal +/-20PPM 16MHz","Mouser","815-ABMM2-16-E2T",1.16,1,1.16, 21 | "X2","Molex","48037-1000","USB & Firewire Connector TYPE A RA SHLDED PLG SMT AU","Mouser","538-48037-1000",2.22,1,2.22,"better price at Digi-Key" 22 | "U5","NXP","IP4220CZ6,125","ESD Suppressor USB2.0 ESD PROTECT DUAL","Mouser","771-IP4220CZ6-T/R",0.18,1,0.18, 23 | "U4","Microchip","MCP1801T-1802I/OT","Low Dropout (LDO) Regulators Hi PSRR 150 mA LDO Vin 10V max Vout 1.8V","Mouser","579-MCP1801T-1802IOT",0.52,1,0.52, 24 | "U3","Vishay/Siliconix","SI9183DT-33-T1-E3","Low Dropout (LDO) Regulator 150mA 3.3V","Mouser","781-SI9183DT-33-E3",0.28,1,0.28, 25 | "C14,15,17,18,20,22","TDK","C1608X7R1E104K","CAP CER 0603 0.1uF 25volts X7R 10%","Mouser","810-C1608X7R1E104K",0.03,6,0.18, 26 | "R5,6,7,8,9,11","Xicon","301-330-RC","Thick Film Resistor 1/16W 330OHMS 5% 0603","Mouser","301-330-RC",0.03,6,0.18, 27 | "R1,10,13","Xicon","301-10K-RC","Thick Film Resistor 1/16W 10KOHMS 5% 0603","Mouser","301-10K-RC",0.03,2,0.06, 28 | "C9","TDK","C1608C0G1H101J","CAP CER 0603 100pF 50volts C0G 5% ","Mouser","810-C1608C0G1H101J",0.03,1,0.03, 29 | "C8","TDK","C1608C0G1H221J","CAP CER 0603 220pF 50volts C0G 5%","Mouser","810-C1608C0G1H221J",0.03,1,0.03, 30 | "R4","Xicon","301-1.5K-RC","Thick Film Resistor 1/16W 1.5KOHMS 5%","Mouser","301-1.5K-RC",0.03,1,0.03, 31 | "R2,3","Vishay/Dale","CRCW060333R0FKEA","Thick Film Resistor 1/10W 33ohms 1% 0603","Mouser","71-CRCW0603-33-E3",0.06,2,0.12, 32 | "C19,21,23,24","Murata","GRM188R60J105KA01J","CAP CER 0603 1uF 6.3volts X5R 10% ","Mouser","81-GRM18R60J105KA01J",0.04,4,0.16, 33 | "LEDs",,,"0603 LED, various colors",,,0.10,6,0.60, 34 | -------------------------------------------------------------------------------- /hardware/ubertooth-zero/ubertooth-zero.brd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/hardware/ubertooth-zero/ubertooth-zero.brd -------------------------------------------------------------------------------- /hardware/ubertooth-zero/ubertooth-zero.sch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/hardware/ubertooth-zero/ubertooth-zero.sch -------------------------------------------------------------------------------- /host/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2013 Dominic Spill 3 | # 4 | # This file is part of Ubertooth. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2, or (at your option) 9 | # any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; see the file COPYING. If not, write to 18 | # the Free Software Foundation, Inc., 51 Franklin Street, 19 | # Boston, MA 02110-1301, USA. 20 | # 21 | #top level cmake project for ubertooth lib + tools 22 | 23 | cmake_minimum_required(VERSION 2.8) 24 | set(MAJOR_VERSION 0) 25 | set(MINOR_VERSION 2) 26 | project(ubertooth_all) 27 | set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules) 28 | 29 | set(INSTALL_DEFAULT_BINDIR "bin" CACHE STRING "Appended to CMAKE_INSTALL_PREFIX") 30 | 31 | set( VERSION ${MAJOR_VERSION}.${MINOR_VERSION} ) 32 | add_definitions( -DVERSION="${VERSION}" ) 33 | 34 | # Comment the following out for releases. 35 | set(CMAKE_C_FLAGS "$ENV{CFLAGS}") 36 | 37 | add_subdirectory(libubertooth) 38 | add_subdirectory(ubertooth-tools) 39 | add_subdirectory(misc) 40 | if(NOT DISABLE_PYTHON) 41 | add_subdirectory(python) 42 | endif() 43 | 44 | # Create uninstall target 45 | configure_file( 46 | ${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in 47 | ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 48 | @ONLY) 49 | 50 | add_custom_target(uninstall 51 | ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 52 | ) 53 | -------------------------------------------------------------------------------- /host/README.cmake: -------------------------------------------------------------------------------- 1 | CMake Settings 2 | ============== 3 | The following are flags that may be of use when configuing this project. 4 | 5 | * INSTALL_UDEV_RULES 6 | * A boolean flag for installing udev rules to control access to 7 | Ubertooth hardware. 8 | 9 | * UDEV_RULES_GROUP 10 | * A variable to specify group name to be used in the udev rules, 11 | if not set CMake will attempt to determine in usb or plugdev 12 | are used on the host system. -------------------------------------------------------------------------------- /host/README.md: -------------------------------------------------------------------------------- 1 | Ubertooth Host 2 | ============== 3 | This is host code for use with bluetooth_rxtx firmware. 4 | 5 | 6 | Required Software 7 | ----------------- 8 | These tools link to libbtbb (https://github.com/greatscottgadgets/libbtbb). 9 | The versions tend to be matched, git should always work with git and all 10 | releases should come in matched pairs (until the interface stabilizes). 11 | Libbtbb can be retrieved from git and built as follows: 12 | ``` 13 | $ git clone https://github.com/greatscottgadgets/libbtbb.git 14 | $ cd libbtbb/ 15 | $ mkdir build 16 | $ cd build 17 | $ cmake .. 18 | $ make 19 | $ sudo make install 20 | ``` 21 | 22 | This software also requires libusb 1.0 or higher, which can be found at 23 | http://www.libusb.org or installed from your OS's package repository. 24 | 25 | An optional, but recommended, dependency is libPcap, which is available from 26 | http://www.tcpdump.org or can be found in your OS's package repository. 27 | 28 | Building 29 | -------- 30 | Build the library and tools using the following steps: 31 | ``` 32 | $ mkdir build 33 | $ cd build 34 | $ cmake .. 35 | $ make 36 | $ make install (may require root privileges) 37 | ``` 38 | 39 | If previous versions of libbtbb or Ubertooth tools are installed they should be 40 | removed before building the latest release. A script to do so can be found in 41 | the libbtbb archive and run as follows: 42 | ``` 43 | $ sudo libbtbb/cmake/cleanup.sh -d 44 | ``` 45 | Running the script without the '-d' option will print the files to be removed. 46 | 47 | The Tools 48 | --------- 49 | ubertooth-util: various utility functions including reboot into bootloader DFU 50 | mode. 51 | 52 | ubertooth-rx: a general purpose Bluetooth sniffing tool, will promiscuously 53 | find LAPs or, if given a LAP, will determine a UAP. Given both a LAP and a UAP 54 | it will attempt to calculate a clock and hop along with the piconet. 55 | 56 | ubertooth-dump: dumps a raw Bluetooth symbol stream from an Ubertooth board. 57 | If you pipe it into xxd, you should see various ones and zeros. If you pipe it 58 | into dd, you can find out the transfer rate (should be 1 MB/s). Timestamps are 59 | dumped to stderr. 60 | 61 | ubertooth-specan: ouputs signal strength data suitable for feeding into spectrum 62 | analyser software. e.g. 63 | ``` 64 | ubertooth-specan -G -q | feedgnuplot --stream 0.5 --domain --3d 65 | ``` 66 | 67 | will use feedgnuplot to drive gnuplot to draw a realtime animated 3D plot of the 68 | frequency spectrum. 69 | 70 | 71 | Privledge Reduction 72 | ------------------- 73 | If you desire to run any program which accesses the ubertooth hardware as a user 74 | you may do so by copying libubertooth/40-ubertooth.rules to wherever your distro 75 | keeps udev rules, typically /lib/udev/rules.d 76 | 77 | This action will allow any user in the "usb" group to access the ubertooth 78 | hardware. If you want to give access to a different group you can easily edit 79 | the rules file and change usb to whatever group you prefer. 80 | -------------------------------------------------------------------------------- /host/cmake/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | # http://www.vtk.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F 2 | 3 | IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 4 | MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") 5 | ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 6 | 7 | FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) 8 | STRING(REGEX REPLACE "\n" ";" files "${files}") 9 | FOREACH(file ${files}) 10 | MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") 11 | IF(EXISTS "$ENV{DESTDIR}${file}") 12 | EXEC_PROGRAM( 13 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 14 | OUTPUT_VARIABLE rm_out 15 | RETURN_VALUE rm_retval 16 | ) 17 | IF(NOT "${rm_retval}" STREQUAL 0) 18 | MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") 19 | ENDIF(NOT "${rm_retval}" STREQUAL 0) 20 | ELSEIF(IS_SYMLINK "$ENV{DESTDIR}${file}") 21 | EXEC_PROGRAM( 22 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 23 | OUTPUT_VARIABLE rm_out 24 | RETURN_VALUE rm_retval 25 | ) 26 | IF(NOT "${rm_retval}" STREQUAL 0) 27 | MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") 28 | ENDIF(NOT "${rm_retval}" STREQUAL 0) 29 | ELSE(EXISTS "$ENV{DESTDIR}${file}") 30 | MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") 31 | ENDIF(EXISTS "$ENV{DESTDIR}${file}") 32 | ENDFOREACH(file) 33 | -------------------------------------------------------------------------------- /host/cmake/modules/FindBLUETOOTH.cmake: -------------------------------------------------------------------------------- 1 | # - Try to find the freetype library 2 | # Once done this defines 3 | # 4 | # LIBBLUETOOTH_FOUND - system has libbluetooth 5 | # LIBBLUETOOTH_INCLUDE_DIR - the libbluetooth include directory 6 | # LIBBLUETOOTH_LIBRARIES - Link these to use libbluetooth 7 | 8 | # Copyright (c) 2013 Dominic Spill, 9 | # Copyright (c) 2006, 2008 Laurent Montel, 10 | # 11 | # Redistribution and use is allowed according to the terms of the BSD license. 12 | # For details see the accompanying COPYING-CMAKE-SCRIPTS file. 13 | 14 | 15 | if (LIBBLUETOOTH_INCLUDE_DIR AND LIBBLUETOOTH_LIBRARIES) 16 | 17 | # in cache already 18 | set(LIBBLUETOOTH_FOUND TRUE) 19 | 20 | else (LIBBLUETOOTH_INCLUDE_DIR AND LIBBLUETOOTH_LIBRARIES) 21 | IF (NOT WIN32) 22 | # use pkg-config to get the directories and then use these values 23 | # in the FIND_PATH() and FIND_LIBRARY() calls 24 | find_package(PkgConfig) 25 | pkg_check_modules(PC_LIBBLUETOOTH bluez) 26 | ENDIF(NOT WIN32) 27 | 28 | FIND_PATH(LIBBLUETOOTH_INCLUDE_DIR hci.h 29 | PATHS ${PC_LIBBLUETOOTH_INCLUDEDIR} ${PC_LIBBLUETOOTH_INCLUDE_DIRS} 30 | PATHS /usr/include /usr/local/include /usr/include/bluetooth 31 | /usr/local/include/bluetooth) 32 | 33 | FIND_LIBRARY(LIBBLUETOOTH_LIBRARIES NAMES bluetooth 34 | PATHS ${PC_LIBBLUETOOTH_LIBDIR} ${PC_LIBBLUETOOTH_LIBRARY_DIRS}) 35 | 36 | include(FindPackageHandleStandardArgs) 37 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBBLUETOOTH DEFAULT_MSG LIBBLUETOOTH_LIBRARIES LIBBLUETOOTH_INCLUDE_DIR) 38 | 39 | MARK_AS_ADVANCED(LIBBLUETOOTH_INCLUDE_DIR LIBBLUETOOTH_LIBRARIES) 40 | 41 | endif (LIBBLUETOOTH_INCLUDE_DIR AND LIBBLUETOOTH_LIBRARIES) -------------------------------------------------------------------------------- /host/cmake/modules/FindBTBB.cmake: -------------------------------------------------------------------------------- 1 | # Try to find the libbtbb library 2 | # 3 | # Once done this defines: 4 | # LIBBTBB_FOUND - system has libbtbb 5 | # LIBBTBB_INCLUDE_DIR - the libbtbb include directory 6 | # LIBBTBB_LIBRARIES - Link these to use libbtbb 7 | # 8 | # Copyright (c) 2013 Dominic Spill 9 | 10 | 11 | if (LIBBTBB_INCLUDE_DIR AND LIBBTBB_LIBRARIES) 12 | 13 | # in cache already 14 | set(LIBBTBB_FOUND TRUE) 15 | 16 | else (LIBBTBB_INCLUDE_DIR AND LIBBTBB_LIBRARIES) 17 | IF (NOT WIN32) 18 | # use pkg-config to get the directories and then use these values 19 | # in the FIND_PATH() and FIND_LIBRARY() calls 20 | find_package(PkgConfig) 21 | pkg_check_modules(PC_LIBBTBB QUIET libbtbb) 22 | ENDIF(NOT WIN32) 23 | 24 | FIND_PATH(LIBBTBB_INCLUDE_DIR 25 | NAMES btbb.h 26 | HINTS $ENV{LIBBTBB_DIR}/include ${PC_LIBBTBB_INCLUDEDIR} 27 | PATHS /usr/include /usr/local/include 28 | /opt/local/include 29 | ${CMAKE_SOURCE_DIR}/../libbtbb/src 30 | ${LIBBTBB_INCLUDE_DIR} 31 | ) 32 | 33 | set(libbtbb_library_names btbb) 34 | 35 | FIND_LIBRARY(LIBBTBB_LIBRARIES 36 | NAMES ${libbtbb_library_names} 37 | HINTS $ENV{LIBBTBB_DIR}/lib${LIB_SUFFIX} ${PC_LIBBTBB_LIBDIR} 38 | PATHS /usr/local/lib${LIB_SUFFIX} /usr/lib${LIB_SUFFIX} /opt/local/lib${LIB_SUFFIX} ${PC_LIBBTBB_LIBDIR} 39 | ${PC_LIBBTBB_LIBRARY_DIRS} ${CMAKE_SOURCE_DIR}/../libbtbb/src 40 | ) 41 | 42 | if(LIBBTBB_INCLUDE_DIR) 43 | set(CMAKE_REQUIRED_INCLUDES ${LIBBTBB_INCLUDE_DIR}) 44 | endif() 45 | 46 | if(LIBBTBB_LIBRARIES) 47 | set(CMAKE_REQUIRED_LIBRARIES ${LIBBTBB_LIBRARIES}) 48 | endif() 49 | 50 | include(FindPackageHandleStandardArgs) 51 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBBTBB DEFAULT_MSG LIBBTBB_LIBRARIES LIBBTBB_INCLUDE_DIR) 52 | 53 | MARK_AS_ADVANCED(LIBBTBB_INCLUDE_DIR LIBBTBB_LIBRARIES) 54 | 55 | endif (LIBBTBB_INCLUDE_DIR AND LIBBTBB_LIBRARIES) 56 | 57 | INCLUDE(CheckFunctionExists) 58 | CHECK_FUNCTION_EXISTS("btbb_pcap_create_file" HAVE_BTBB_PCAP) 59 | -------------------------------------------------------------------------------- /host/cmake/modules/FindUBERTOOTH.cmake: -------------------------------------------------------------------------------- 1 | # Try to find the libubertooth library 2 | # 3 | # Once done this defines: 4 | # LIBUBERTOOTH_FOUND - system has libubertooth 5 | # LIBUBERTOOTH_INCLUDE_DIR - the libubertooth include directory 6 | # LIBUBERTOOTH_LIBRARIES - Link these to use libubertooth 7 | # 8 | # Copyright (c) 2013 Dominic Spill 9 | 10 | 11 | if (LIBUBERTOOTH_INCLUDE_DIR AND LIBUBERTOOTH_LIBRARIES) 12 | 13 | # in cache already 14 | set(LIBUBERTOOTH_FOUND TRUE) 15 | 16 | else (LIBUBERTOOTH_INCLUDE_DIR AND LIBUBERTOOTH_LIBRARIES) 17 | IF (NOT WIN32) 18 | # use pkg-config to get the directories and then use these values 19 | # in the FIND_PATH() and FIND_LIBRARY() calls 20 | find_package(PkgConfig) 21 | pkg_check_modules(PC_LIBUBERTOOTH QUIET libubertooth) 22 | ENDIF(NOT WIN32) 23 | 24 | FIND_PATH(LIBUBERTOOTH_INCLUDE_DIR 25 | NAMES ubertooth.h 26 | HINTS $ENV{LIBUBERTOOTH_DIR}/include ${PC_LIBUBERTOOTH_INCLUDEDIR} 27 | PATHS /usr/include /usr/local/include /opt/local/include 28 | ${CMAKE_SOURCE_DIR}/../libubertooth/src 29 | ${LIBUBERTOOTH_INCLUDE_DIR} 30 | ) 31 | 32 | set(libubertooth_library_names ubertooth) 33 | 34 | FIND_LIBRARY(LIBUBERTOOTH_LIBRARIES 35 | NAMES ${libubertooth_library_names} 36 | HINTS $ENV{LIBUBERTOOTH_DIR}/lib ${PC_LIBUBERTOOTH_LIBDIR} 37 | PATHS /usr/local/lib /usr/lib /opt/local/lib ${PC_LIBUBERTOOTH_LIBDIR} ${PC_LIBUBERTOOTH_LIBRARY_DIRS} ${CMAKE_SOURCE_DIR}/../libubertooth/src 38 | ) 39 | 40 | if(LIBUBERTOOTH_INCLUDE_DIR) 41 | set(CMAKE_REQUIRED_INCLUDES ${LIBUBERTOOTH_INCLUDE_DIR}) 42 | endif() 43 | 44 | if(LIBUBERTOOTH_LIBRARIES) 45 | set(CMAKE_REQUIRED_LIBRARIES ${LIBUBERTOOTH_LIBRARIES}) 46 | endif() 47 | 48 | include(FindPackageHandleStandardArgs) 49 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUBERTOOTH DEFAULT_MSG LIBUBERTOOTH_LIBRARIES LIBUBERTOOTH_INCLUDE_DIR) 50 | 51 | MARK_AS_ADVANCED(LIBUBERTOOTH_INCLUDE_DIR LIBUBERTOOTH_LIBRARIES) 52 | 53 | endif (LIBUBERTOOTH_INCLUDE_DIR AND LIBUBERTOOTH_LIBRARIES) -------------------------------------------------------------------------------- /host/cmake/modules/FindUSB1.cmake: -------------------------------------------------------------------------------- 1 | # - Try to find the freetype library 2 | # Once done this defines 3 | # 4 | # LIBUSB_FOUND - system has libusb 5 | # LIBUSB_INCLUDE_DIR - the libusb include directory 6 | # LIBUSB_LIBRARIES - Link these to use libusb 7 | 8 | # Copyright (c) 2006, 2008 Laurent Montel, 9 | # 10 | # Redistribution and use is allowed according to the terms of the BSD license. 11 | # For details see the accompanying COPYING-CMAKE-SCRIPTS file. 12 | 13 | 14 | if (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) 15 | 16 | # in cache already 17 | set(LIBUSB_FOUND TRUE) 18 | 19 | else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) 20 | IF (NOT WIN32) 21 | # use pkg-config to get the directories and then use these values 22 | # in the FIND_PATH() and FIND_LIBRARY() calls 23 | find_package(PkgConfig) 24 | pkg_check_modules(PC_LIBUSB libusb-1.0) 25 | ENDIF(NOT WIN32) 26 | 27 | set(LIBUSB_LIBRARY_NAME usb-1.0) 28 | IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") 29 | set(LIBUSB_LIBRARY_NAME usb) 30 | ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") 31 | 32 | FIND_PATH(LIBUSB_INCLUDE_DIR libusb.h 33 | PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS}) 34 | 35 | FIND_LIBRARY(LIBUSB_LIBRARIES NAMES ${LIBUSB_LIBRARY_NAME} 36 | PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS}) 37 | 38 | include(FindPackageHandleStandardArgs) 39 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR) 40 | 41 | MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) 42 | 43 | endif (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) -------------------------------------------------------------------------------- /host/cmake/modules/GetGitRevisionDescription.cmake.in: -------------------------------------------------------------------------------- 1 | # 2 | # Internal file for GetGitRevisionDescription.cmake 3 | # 4 | # Requires CMake 2.6 or newer (uses the 'function' command) 5 | # 6 | # Original Author: 7 | # 2009-2010 Ryan Pavlik 8 | # http://academic.cleardefinition.com 9 | # Iowa State University HCI Graduate Program/VRAC 10 | # 11 | # Copyright Iowa State University 2009-2010. 12 | # Distributed under the Boost Software License, Version 1.0. 13 | # (See accompanying file LICENSE_1_0.txt or copy at 14 | # http://www.boost.org/LICENSE_1_0.txt) 15 | 16 | set(HEAD_HASH) 17 | 18 | file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) 19 | 20 | string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) 21 | if(HEAD_CONTENTS MATCHES "ref") 22 | # named branch 23 | string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") 24 | if(EXISTS "@GIT_DIR@/${HEAD_REF}") 25 | configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) 26 | elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}") 27 | configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) 28 | set(HEAD_HASH "${HEAD_REF}") 29 | endif() 30 | else() 31 | # detached HEAD 32 | configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) 33 | endif() 34 | 35 | if(NOT HEAD_HASH) 36 | file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) 37 | string(STRIP "${HEAD_HASH}" HEAD_HASH) 38 | string(SUBSTRING ${HEAD_HASH} 0 7 HEAD_HASH) 39 | endif() 40 | -------------------------------------------------------------------------------- /host/kismet/README: -------------------------------------------------------------------------------- 1 | Most people: You want plugin-ubertooth 2 | 3 | Testers / People running BLEEDING EDGE KISMET - you want 4 | plugin-ubertooth-phyneutral! 5 | 6 | 7 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth-phyneutral/Makefile: -------------------------------------------------------------------------------- 1 | KIS_SRC_DIR ?= /usr/src/kismet 2 | KIS_INC_DIR ?= $(KIS_SRC_DIR) 3 | UBERTOOTH_INC_DIR ?= /usr/include 4 | LIBUSB_INCLUDES ?= -I/usr/include/libusb-1.0 -I/usr/local/include/libusb-1.0 5 | LIBDIR ?= /lib 6 | 7 | include $(KIS_SRC_DIR)/Makefile.inc 8 | 9 | BLDHOME = . 10 | top_builddir = $(BLDHOME) 11 | 12 | PLUGINLDFLAGS ?= $(LDFLAGS) 13 | PLUGINLDFLAGS += -shared -rdynamic 14 | LIBS += -lstdc++ -lusb-1.0 -lpthread -lbtbb -lubertooth 15 | CFLAGS += -I$(KIS_INC_DIR) $(LIBUSB_INCLUDES) -I$(UBERTOOTH_INC_DIR) -g -fPIC 16 | CXXFLAGS += -I$(KIS_INC_DIR) $(LIBUSB_INCLUDES) -I$(UBERTOOTH_INC_DIR) -g -fPIC 17 | 18 | SRVOBJS = packetsource_ubertooth.o packet_btbb_types.o \ 19 | phy_btbb.o kismet_ubertooth.o 20 | SRVOUT = ubertooth.so 21 | 22 | all: $(SRVOUT) 23 | 24 | $(SRVOUT): $(SRVOBJS) 25 | $(CC) $(PLUGINLDFLAGS) $(CFLAGS) $(SRVOBJS) -o $(SRVOUT) $(LIBS) 26 | 27 | install: $(SRVOUT) 28 | mkdir -p $(DESTDIR)$(prefix)/$(LIBDIR)/kismet/ 29 | $(INSTALL) -o $(INSTUSR) -g $(INSTGRP) -m 644 $(SRVOUT) $(DESTDIR)$(prefix)/$(LIBDIR)/kismet/$(SRVOUT) 30 | 31 | userinstall: $(SRVOUT) 32 | mkdir -p ${HOME}/.kismet/plugins/ 33 | $(INSTALL) -v $(SRVOUT) ${HOME}/.kismet/plugins/$(SRVOUT) 34 | 35 | clean: 36 | @-rm -f *.o 37 | @-rm -f *.so 38 | 39 | .c.o: 40 | $(CC) $(CPPFLAGS) $(CFLAGS) -c $*.c -o $@ 41 | 42 | .cc.o: 43 | $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $*.cc -o $@ 44 | 45 | .SUFFIXES: .c .cc .o 46 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth-phyneutral/README.developers: -------------------------------------------------------------------------------- 1 | Kismet is currently (Spring/Summer 2011) undergoing a rewrite of the 2 | internal system for tracking networks to make Kismet truly phy-neutral, 3 | agnostic of the type of data being sniffed and type of devices being 4 | tracked. 5 | 6 | This branch of the Ubertooth Kismet plugin uses the phy-neutral 7 | extensions in Kismet. It REQUIRES the LATEST svn of Kismet as 8 | phy-neutral is a rapidly moving target and is being co-developed with 9 | the Ubertooth plugin and the phy-neutral 802.11 components. IT WILL NOT 10 | work with NON-BLEEDING-EDGE Kismet. Every time you update the Ubertooth 11 | plugin code, update Kismet and recompile it at the same time! 12 | 13 | 14 | The phy-neutral system treats devices the same way Kismet has treated packets - 15 | modules register a device component, and this is tacked on to the standard 16 | device. 17 | 18 | GPS, packet counts, time, signal, etc is all stored in the common packet 19 | component and does not need to be tracked by a phy-specific tracker. 20 | 21 | The map of tracked devices is maintained by the device tracker, and does 22 | not need to be tracked by the phy-specific tracker. 23 | 24 | The UI components are, as of yet, undone. Ultimately the UI will display the 25 | common layers and UI plugins will display phy-specific details not otherwise 26 | available. 27 | 28 | The phy-classifiers are expected to take the phy-specific data and turn it into 29 | any component representations needed by the phy, and to fill out the common 30 | packet component with the unique device address, phy info, basic packet type, 31 | etc, for common tracking. 32 | 33 | The phy-neutral fork maintains the old btbb tracker and protocols for now, 34 | so that it remains usable while under development, however since phy-neutral 35 | is so bleeding edge, it shouldn't be pushed as the primary ubertooth plugin 36 | as no release of Kismet supports it 37 | 38 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth-phyneutral/packet_btbb.cc: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2010, 2011 Michael Ossmann 4 | * Copyright 2009, 2010 Mike Kershaw 5 | * 6 | * This file is part of Project Ubertooth. 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2, or (at your option) 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program; see the file COPYING. If not, write to 20 | * the Free Software Foundation, Inc., 51 Franklin Street, 21 | * Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #include "config.h" 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | #include "packet_btbb.h" 31 | 32 | // From kismet_ubertooth 33 | extern int pack_comp_btbb; 34 | 35 | static int debugno = 0; 36 | 37 | int kis_btbb_dissector(CHAINCALL_PARMS) { 38 | int offset = 0; 39 | 40 | btbb_packinfo *pi = NULL; 41 | 42 | if (in_pack->error) 43 | return 0; 44 | 45 | kis_datachunk *chunk = 46 | (kis_datachunk *) in_pack->fetch(_PCM(PACK_COMP_LINKFRAME)); 47 | 48 | if (chunk == NULL) 49 | return 0; 50 | 51 | if (chunk->dlt != KDLT_BTBB) 52 | return 0; 53 | 54 | debugno++; 55 | 56 | if (chunk->length < 14) { 57 | _MSG("Short Bluetooth baseband frame!", MSGFLAG_ERROR); 58 | in_pack->error = 1; 59 | return 0; 60 | } 61 | 62 | pi = new btbb_packinfo(); 63 | 64 | pi->type = btbb_type_id; 65 | pi->nap = (chunk->data[6] << 8) 66 | | chunk->data[7]; 67 | pi->uap = chunk->data[8]; 68 | pi->lap = (chunk->data[9] << 16) 69 | | (chunk->data[10] << 8) 70 | | chunk->data[11]; 71 | 72 | //printf("Bluetooth Baseband Packet %d\n", debugno); 73 | 74 | printf("debug - btbb - inserting pack_comp_btbb\n"); 75 | in_pack->insert(pack_comp_btbb, pi); 76 | 77 | return 1; 78 | } 79 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth-phyneutral/packet_btbb.h: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2010, 2011 Michael Ossmann 4 | * Copyright 2009, 2010 Mike Kershaw 5 | * 6 | * This file is part of Project Ubertooth. 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2, or (at your option) 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program; see the file COPYING. If not, write to 20 | * the Free Software Foundation, Inc., 51 Franklin Street, 21 | * Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #ifndef __PACKET_BTBB_H__ 25 | #define __PACKET_BTBB_H__ 26 | 27 | #include "config.h" 28 | 29 | #include 30 | #include 31 | 32 | // we are temporarily encapsulating in ethernet frames 33 | #define KDLT_BTBB 1 34 | 35 | int kis_btbb_dissector(CHAINCALL_PARMS); 36 | 37 | enum btbb_type { 38 | btbb_type_null = 0x0, 39 | btbb_type_poll = 0x1, 40 | btbb_type_fhs = 0x2, 41 | btbb_type_dm1 = 0x3, 42 | btbb_type_dh1 = 0x4, 43 | btbb_type_hv1 = 0x5, 44 | btbb_type_hv2 = 0x6, 45 | btbb_type_hv3 = 0x7, 46 | btbb_type_dv = 0x8, 47 | btbb_type_aux1 = 0x9, 48 | btbb_type_dm3 = 0xa, 49 | btbb_type_dh3 = 0xb, 50 | btbb_type_ev4 = 0xc, 51 | btbb_type_ev5 = 0xd, 52 | btbb_type_dm5 = 0xe, 53 | btbb_type_dh5 = 0xf, 54 | btbb_type_id, 55 | btbb_type_max 56 | }; 57 | extern const char *btbb_type_str[]; 58 | 59 | class btbb_packinfo : public packet_component { 60 | public: 61 | btbb_packinfo() { 62 | self_destruct = 1; 63 | 64 | lap = 0; 65 | uap = 0; 66 | nap = 0; 67 | have_uap = false; 68 | have_nap = false; 69 | type = btbb_type_id; 70 | 71 | channel = 0; 72 | }; 73 | 74 | uint32_t lap; 75 | uint8_t uap; 76 | uint16_t nap; 77 | 78 | bool have_uap; 79 | bool have_nap; 80 | 81 | btbb_type type; 82 | 83 | int channel; 84 | }; 85 | 86 | #endif 87 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth-phyneutral/packet_btbb_types.cc: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2010, 2011 Michael Ossmann 4 | * 5 | * This file is part of Project Ubertooth. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2, or (at your option) 10 | * any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; see the file COPYING. If not, write to 19 | * the Free Software Foundation, Inc., 51 Franklin Street, 20 | * Boston, MA 02110-1301, USA. 21 | */ 22 | #include "config.h" 23 | 24 | #include 25 | 26 | #include "packet_btbb.h" 27 | 28 | const char *btbb_type_str[] = { 29 | "NULL", 30 | "POLL", 31 | "FHS", 32 | "DM1", 33 | "DH1/2-DH1", 34 | "HV1", 35 | "HV2/2-EV3", 36 | "HV3/EV3/3-EV3", 37 | "DV/3-DH1", 38 | "AUX1", 39 | "DM3/2-DH3", 40 | "DH3/3-DH3", 41 | "EV4/2-EV5", 42 | "EV5/3-EV5", 43 | "DM5/2-DH5", 44 | "DH5/3-DH5" 45 | }; 46 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth-phyneutral/phy_btbb.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2010, 2011 Michael Ossmann 3 | Copyright 2009, 2010, 2011 Mike Kershaw 4 | 5 | This file is part of Project Ubertooth. 6 | 7 | Kismet is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | Kismet is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with Kismet; if not, write to the Free Software 19 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | 21 | CODE IN BOTH phy_80211.cc AND phy_80211_dissectors.cc 22 | */ 23 | 24 | #ifndef __PHY_BTBB_H__ 25 | #define __PHY_BTBB_H__ 26 | 27 | #include "config.h" 28 | 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | #include 49 | 50 | #include 51 | 52 | class btbb_device_component : public tracker_component { 53 | public: 54 | btbb_device_component() { 55 | lap = 0; 56 | } 57 | 58 | uint32_t lap; 59 | mac_addr bdaddr; 60 | }; 61 | 62 | class Btbb_Phy : public Kis_Phy_Handler { 63 | public: 64 | Btbb_Phy() { } 65 | ~Btbb_Phy(); 66 | 67 | // Weak constructor 68 | Btbb_Phy(GlobalRegistry *in_globalreg) : 69 | Kis_Phy_Handler(in_globalreg) { }; 70 | 71 | // Builder 72 | virtual Kis_Phy_Handler *CreatePhyHandler(GlobalRegistry *in_globalreg, 73 | Devicetracker *in_tracker, 74 | int in_phyid) { 75 | return new Btbb_Phy(in_globalreg, in_tracker, in_phyid); 76 | } 77 | 78 | // Strong constructor 79 | Btbb_Phy(GlobalRegistry *in_globalreg, Devicetracker *in_tracker, 80 | int in_phyid); 81 | 82 | // BTBB dissector 83 | int DissectorBtbb(kis_packet *in_pack); 84 | 85 | // BTBB classifier 86 | int ClassifierBtbb(kis_packet *in_pack); 87 | 88 | // BTBB tracker 89 | int TrackerBtbb(kis_packet *in_pack); 90 | 91 | // Timer called from devicetracker 92 | virtual int TimerKick(); 93 | 94 | virtual void BlitDevices(int in_fd, vector *devlist); 95 | 96 | virtual void ExportLogRecord(kis_tracked_device *in_device, string in_logtype, 97 | FILE *in_logfile, int in_lineindent); 98 | 99 | protected: 100 | // Protocol references 101 | int proto_ref_btbbdev; 102 | 103 | // Device components 104 | int dev_comp_btbbdev, dev_comp_common; 105 | 106 | // Packet components 107 | int pack_comp_btbb, pack_comp_common, pack_comp_device; 108 | 109 | // We have to keep a local copy of tracked networks because we need 110 | // to filter single-appearance networks 111 | map first_nets; 112 | }; 113 | 114 | #endif 115 | 116 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth/Makefile: -------------------------------------------------------------------------------- 1 | KIS_SRC_DIR ?= /usr/src/kismet 2 | KIS_INC_DIR ?= $(KIS_SRC_DIR) 3 | UBERTOOTH_INC_DIR ?= /usr/include 4 | LIBUSB_INCLUDES ?= -I/usr/include/libusb-1.0 -I/usr/local/include/libusb-1.0 5 | LIBDIR ?= /lib 6 | 7 | include $(KIS_SRC_DIR)/Makefile.inc 8 | 9 | BLDHOME = . 10 | top_builddir = $(BLDHOME) 11 | 12 | PLUGINLDFLAGS ?= $(LDFLAGS) 13 | PLUGINLDFLAGS += -shared -rdynamic 14 | LIBS += -lstdc++ -lusb-1.0 -lpthread -lbtbb -lubertooth 15 | CFLAGS += -I$(KIS_INC_DIR) $(LIBUSB_INCLUDES) -I$(UBERTOOTH_INC_DIR) -g -fPIC 16 | CXXFLAGS += -I$(KIS_INC_DIR) $(LIBUSB_INCLUDES) -I$(UBERTOOTH_INC_DIR) -g -fPIC 17 | 18 | SRVOBJS = packetsource_ubertooth.o packet_btbb.o packet_btbb_types.o \ 19 | tracker_btbb.o kismet_ubertooth.o 20 | SRVOUT = ubertooth.so 21 | 22 | CLIOBJS = ubertooth_ui.o 23 | CLIOUT = ubertooth_ui.so 24 | 25 | all: $(SRVOUT) $(CLIOUT) 26 | 27 | $(CLIOUT): $(CLIOBJS) 28 | $(CC) $(PLUGINLDFLAGS) $(CFLAGS) $(CLIOBJS) -o $(CLIOUT) $(LIBS) 29 | 30 | $(SRVOUT): $(SRVOBJS) 31 | $(CC) $(PLUGINLDFLAGS) $(CFLAGS) $(SRVOBJS) -o $(SRVOUT) $(LIBS) 32 | 33 | install: $(SRVOUT) $(CLIOUT) 34 | mkdir -p $(DESTDIR)$(prefix)/$(LIBDIR)/kismet/ 35 | install -o $(INSTUSR) -g $(INSTGRP) -m 644 $(SRVOUT) $(DESTDIR)$(prefix)/$(LIBDIR)/kismet/$(SRVOUT) 36 | mkdir -p $(DESTDIR)$(prefix)/$(LIBDIR)/kismet_client/ 37 | install -o $(INSTUSR) -g $(INSTGRP) -m 644 $(CLIOUT) $(DESTDIR)$(prefix)/$(LIBDIR)/kismet_client/$(CLIOUT) 38 | 39 | 40 | userinstall: $(SRVOUT) $(CLIOUT) 41 | mkdir -p ${HOME}/.kismet/plugins/ 42 | install -v $(SRVOUT) ${HOME}/.kismet/plugins/$(SRVOUT) 43 | mkdir -p ${HOME}/.kismet/client_plugins/ 44 | install -v $(CLIOUT) ${HOME}/.kismet/client_plugins/$(CLIOUT) 45 | 46 | clean: 47 | @-rm -f *.o 48 | @-rm -f *.so 49 | 50 | .c.o: 51 | $(CC) $(CPPFLAGS) $(CFLAGS) -c $*.c -o $@ 52 | 53 | .cc.o: 54 | $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $*.cc -o $@ 55 | 56 | .SUFFIXES: .c .cc .o 57 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth/packet_btbb.cc: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2010, 2011 Michael Ossmann 4 | * Copyright 2009, 2010 Mike Kershaw 5 | * 6 | * This file is part of Project Ubertooth. 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2, or (at your option) 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program; see the file COPYING. If not, write to 20 | * the Free Software Foundation, Inc., 51 Franklin Street, 21 | * Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #include "config.h" 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | #include "packet_btbb.h" 31 | 32 | // From kismet_ubertooth 33 | extern int pack_comp_btbb; 34 | 35 | static int debugno = 0; 36 | 37 | int kis_btbb_dissector(CHAINCALL_PARMS) { 38 | int offset = 0; 39 | 40 | btbb_packinfo *pi = NULL; 41 | 42 | if (in_pack->error) 43 | return 0; 44 | 45 | kis_datachunk *chunk = 46 | (kis_datachunk *) in_pack->fetch(_PCM(PACK_COMP_LINKFRAME)); 47 | 48 | if (chunk == NULL) 49 | return 0; 50 | 51 | if (chunk->dlt != KDLT_BTBB) 52 | return 0; 53 | 54 | debugno++; 55 | 56 | if (chunk->length < 14) { 57 | _MSG("Short Bluetooth baseband frame!", MSGFLAG_ERROR); 58 | in_pack->error = 1; 59 | return 0; 60 | } 61 | 62 | pi = new btbb_packinfo(); 63 | 64 | pi->type = btbb_type_id; 65 | pi->nap = (chunk->data[6] << 8) 66 | | chunk->data[7]; 67 | pi->uap = chunk->data[8]; 68 | pi->lap = (chunk->data[9] << 16) 69 | | (chunk->data[10] << 8) 70 | | chunk->data[11]; 71 | 72 | //printf("Bluetooth Baseband Packet %d\n", debugno); 73 | 74 | in_pack->insert(pack_comp_btbb, pi); 75 | 76 | return 1; 77 | } 78 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth/packet_btbb.h: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2010, 2011 Michael Ossmann 4 | * Copyright 2009, 2010 Mike Kershaw 5 | * 6 | * This file is part of Project Ubertooth. 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2, or (at your option) 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program; see the file COPYING. If not, write to 20 | * the Free Software Foundation, Inc., 51 Franklin Street, 21 | * Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #ifndef __PACKET_BTBB_H__ 25 | #define __PACKET_BTBB_H__ 26 | 27 | #include "config.h" 28 | 29 | #include 30 | #include 31 | 32 | // we are temporarily encapsulating in ethernet frames 33 | #define KDLT_BTBB 1 34 | 35 | int kis_btbb_dissector(CHAINCALL_PARMS); 36 | 37 | enum btbb_type { 38 | btbb_type_null = 0x0, 39 | btbb_type_poll = 0x1, 40 | btbb_type_fhs = 0x2, 41 | btbb_type_dm1 = 0x3, 42 | btbb_type_dh1 = 0x4, 43 | btbb_type_hv1 = 0x5, 44 | btbb_type_hv2 = 0x6, 45 | btbb_type_hv3 = 0x7, 46 | btbb_type_dv = 0x8, 47 | btbb_type_aux1 = 0x9, 48 | btbb_type_dm3 = 0xa, 49 | btbb_type_dh3 = 0xb, 50 | btbb_type_ev4 = 0xc, 51 | btbb_type_ev5 = 0xd, 52 | btbb_type_dm5 = 0xe, 53 | btbb_type_dh5 = 0xf, 54 | btbb_type_id, 55 | btbb_type_max 56 | }; 57 | extern const char *btbb_type_str[]; 58 | 59 | class btbb_packinfo : public packet_component { 60 | public: 61 | btbb_packinfo() { 62 | self_destruct = 1; 63 | 64 | lap = 0; 65 | uap = 0; 66 | nap = 0; 67 | have_uap = false; 68 | have_nap = false; 69 | type = btbb_type_id; 70 | 71 | channel = 0; 72 | }; 73 | 74 | uint32_t lap; 75 | uint8_t uap; 76 | uint16_t nap; 77 | 78 | bool have_uap; 79 | bool have_nap; 80 | 81 | btbb_type type; 82 | 83 | int channel; 84 | }; 85 | 86 | #endif 87 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth/packet_btbb_types.cc: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2010, 2011 Michael Ossmann 4 | * 5 | * This file is part of Project Ubertooth. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2, or (at your option) 10 | * any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; see the file COPYING. If not, write to 19 | * the Free Software Foundation, Inc., 51 Franklin Street, 20 | * Boston, MA 02110-1301, USA. 21 | */ 22 | #include "config.h" 23 | 24 | #include 25 | 26 | #include "packet_btbb.h" 27 | 28 | const char *btbb_type_str[] = { 29 | "NULL", 30 | "POLL", 31 | "FHS", 32 | "DM1", 33 | "DH1/2-DH1", 34 | "HV1", 35 | "HV2/2-EV3", 36 | "HV3/EV3/3-EV3", 37 | "DV/3-DH1", 38 | "AUX1", 39 | "DM3/2-DH3", 40 | "DH3/3-DH3", 41 | "EV4/2-EV5", 42 | "EV5/3-EV5", 43 | "DM5/2-DH5", 44 | "DH5/3-DH5" 45 | }; 46 | -------------------------------------------------------------------------------- /host/kismet/plugin-ubertooth/tracker_btbb.h: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- */ 2 | /* 3 | * Copyright 2010, 2011 Michael Ossmann 4 | * Copyright 2009, 2010 Mike Kershaw 5 | * 6 | * This file is part of Project Ubertooth. 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2, or (at your option) 11 | * any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program; see the file COPYING. If not, write to 20 | * the Free Software Foundation, Inc., 51 Franklin Street, 21 | * Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #ifndef __TRACKER_BTBB_H__ 25 | #define __TRACKER_BTBB_H__ 26 | 27 | #include "config.h" 28 | 29 | #include "globalregistry.h" 30 | #include "packet_btbb.h" 31 | 32 | class btbb_network { 33 | public: 34 | btbb_network() { 35 | first_time = 0; 36 | last_time = 0; 37 | num_packets = 0; 38 | dirty = 0; 39 | } 40 | 41 | uint32_t lap; 42 | 43 | mac_addr bd_addr; 44 | 45 | int num_packets; 46 | 47 | time_t first_time, last_time; 48 | 49 | kis_gps_data gpsdata; 50 | 51 | int dirty; 52 | }; 53 | 54 | class Tracker_BTBB { 55 | public: 56 | Tracker_BTBB() { fprintf(stderr, "FATAL OOPS: tracker_btbb()\n"); exit(1); } 57 | Tracker_BTBB(GlobalRegistry *in_globalreg); 58 | 59 | int chain_handler(kis_packet *in_pack); 60 | 61 | void BlitDevices(int in_fd); 62 | 63 | protected: 64 | GlobalRegistry *globalreg; 65 | 66 | map first_nets; 67 | 68 | map tracked_nets; 69 | 70 | int BTBBDEV_ref; 71 | int timer_ref; 72 | }; 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /host/libubertooth/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2013 Dominic Spill 3 | # 4 | # This file is part of Ubertooth. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2, or (at your option) 9 | # any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; see the file COPYING. If not, write to 18 | # the Free Software Foundation, Inc., 51 Franklin Street, 19 | # Boston, MA 02110-1301, USA. 20 | # 21 | 22 | # Based heavily upon the hackrf cmake setup. 23 | 24 | project(libubertooth C) 25 | set(PACKAGE libubertooth) 26 | 27 | add_subdirectory(src) 28 | 29 | # Create uninstall target 30 | if(NOT ubertooth_all_SOURCE_DIR) 31 | configure_file( 32 | ${PROJECT_SOURCE_DIR}/../cmake/cmake_uninstall.cmake.in 33 | ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 34 | @ONLY) 35 | 36 | add_custom_target(uninstall 37 | ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 38 | ) 39 | endif() 40 | -------------------------------------------------------------------------------- /host/libubertooth/src/ubertooth.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010 - 2013 Michael Ossmann, Dominic Spill, Will Code, Mike Ryan 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __UBERTOOTH_H__ 23 | #define __UBERTOOTH_H__ 24 | 25 | #include "ubertooth_control.h" 26 | #include 27 | 28 | /* Mark unused variables to avoid gcc/clang warnings */ 29 | #define UNUSED(x) (void)(x) 30 | 31 | /* specan output types 32 | * see https://github.com/dkogan/feedgnuplot for plotter */ 33 | enum specan_modes { 34 | SPECAN_STDOUT = 0, 35 | SPECAN_GNUPLOT_NORMAL = 1, 36 | SPECAN_GNUPLOT_3D = 2, 37 | SPECAN_FILE = 3 38 | }; 39 | 40 | enum board_ids { 41 | BOARD_ID_UBERTOOTH_ZERO = 0, 42 | BOARD_ID_UBERTOOTH_ONE = 1, 43 | BOARD_ID_TC13BADGE = 2 44 | }; 45 | 46 | typedef void (*rx_callback)(void* args, usb_pkt_rx *rx, int bank); 47 | 48 | typedef struct { 49 | unsigned allowed_access_address_errors; 50 | } btle_options; 51 | 52 | void print_version(); 53 | struct libusb_device_handle* ubertooth_start(int ubertooth_device); 54 | void ubertooth_stop(struct libusb_device_handle *devh); 55 | int specan(struct libusb_device_handle* devh, int xfer_size, u16 num_blocks, 56 | u16 low_freq, u16 high_freq, u8 output_mode); 57 | int cmd_ping(struct libusb_device_handle* devh); 58 | int stream_rx_usb(struct libusb_device_handle* devh, int xfer_size, 59 | rx_callback cb, void* cb_args); 60 | int stream_rx_file(FILE* fp, uint16_t num_blocks, rx_callback cb, void* cb_args); 61 | void rx_live(struct libusb_device_handle* devh, btbb_piconet* pn, int timeout); 62 | void rx_file(FILE* fp, btbb_piconet* pn); 63 | void rx_dump(struct libusb_device_handle* devh, int full); 64 | void rx_btle(struct libusb_device_handle* devh); 65 | void rx_btle_file(FILE* fp); 66 | void cb_btle(void* args, usb_pkt_rx *rx, int bank); 67 | void cb_ego(void* args, usb_pkt_rx *rx, int bank); 68 | 69 | #ifdef ENABLE_PCAP 70 | extern btbb_pcap_handle * h_pcap_bredr; 71 | extern lell_pcap_handle * h_pcap_le; 72 | #endif 73 | extern btbb_pcapng_handle * h_pcapng_bredr; 74 | extern lell_pcapng_handle * h_pcapng_le; 75 | #endif /* __UBERTOOTH_H__ */ 76 | -------------------------------------------------------------------------------- /host/libubertooth/src/version.c.in: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Dominic Spill 3 | * 4 | * This file is part of Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | const char btbb_version[] = "@VERSION@"; 23 | const char btbb_release[] = "@RELEASE@"; 24 | -------------------------------------------------------------------------------- /host/libubertooth/src/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Dominic Spill 3 | * 4 | * This file is part of Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | extern const char btbb_version[]; 23 | extern const char btbb_release[]; 24 | -------------------------------------------------------------------------------- /host/misc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8) 2 | add_subdirectory(udev) 3 | -------------------------------------------------------------------------------- /host/misc/udev/40-ubertooth.rules.in: -------------------------------------------------------------------------------- 1 | # Possible Ubertooth DFU 2 | ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0004", MODE="0660", GROUP="@UBERTOOTH_GROUP@" 3 | # Ubertooth Zero 4 | ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6000", MODE="0660", GROUP="@UBERTOOTH_GROUP@" 5 | # Ubertooth Zero DFU 6 | ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6001", MODE="0660", GROUP="@UBERTOOTH_GROUP@" 7 | # Ubertooth One 8 | ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6002", MODE="0660", GROUP="@UBERTOOTH_GROUP@" 9 | # Ubertooth One DFU 10 | ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6003", MODE="0660", GROUP="@UBERTOOTH_GROUP@" 11 | -------------------------------------------------------------------------------- /host/misc/udev/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8) 2 | 3 | if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") 4 | SET(SYSTEM_IS_LINUX TRUE) 5 | SET(UDEV_OPTION_DEFAULT ON) 6 | else() 7 | SET(SYSTEM_IS_LINUX FALSE) 8 | SET(UDEV_OPTION_DEFAULT OFF) 9 | endif() 10 | 11 | option(INSTALL_UDEV_RULES 12 | "Install udev rules for the Ubertooth" 13 | ${UDEV_OPTION_DEFAULT} 14 | ) 15 | 16 | set(UDEV_RULES_PATH 17 | "/etc/udev/rules.d" 18 | CACHE STRING 19 | "Target directory for udev rule installation. Ensure you have permissions to write to this directory." 20 | ) 21 | 22 | if(SYSTEM_IS_LINUX) 23 | if(INSTALL_UDEV_RULES) 24 | if(NOT DEFINED UDEV_RULES_GROUP) 25 | foreach(group usb plugdev) 26 | execute_process(COMMAND "getent" group "${group}" 27 | RESULT_VARIABLE _GETENT_RESULT 28 | OUTPUT_QUIET 29 | ERROR_QUIET) 30 | if(NOT _GETENT_RESULT) 31 | message(STATUS "Setting udev rule group to - ${group}") 32 | set(UDEV_RULES_GROUP ${group}) 33 | break() 34 | endif(NOT _GETENT_RESULT) 35 | endforeach(group) 36 | endif(NOT DEFINED UDEV_RULES_GROUP) 37 | if(DEFINED UDEV_RULES_GROUP) 38 | set(UBERTOOTH_GROUP "${UDEV_RULES_GROUP}" 39 | CACHE STRING "Group to associate Ubertooth devices with in udev rules") 40 | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/40-ubertooth.rules.in 41 | ${CMAKE_CURRENT_BINARY_DIR}/40-ubertooth.rules 42 | @ONLY 43 | ) 44 | message(STATUS "Ubertooth udev rules will be installed to '${UDEV_RULES_PATH}' upon running 'make install'") 45 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/40-ubertooth.rules 46 | DESTINATION ${UDEV_RULES_PATH} 47 | COMPONENT "udev_rules") 48 | else(UDEV_RULES_GROUP) 49 | message(STATUS "Ubertooth udev rules will not be installed because no suitable group was found") 50 | message(STATUS "A group can be specified with -DUDEV_RULES_GROUP=") 51 | endif(DEFINED UDEV_RULES_GROUP) 52 | else(INSTALL_UDEV_RULES) 53 | message(STATUS 54 | "Ubertooth udev rules will not be installed because INSTALL_UDEV_RULES=OFF" 55 | ) 56 | endif(INSTALL_UDEV_RULES) 57 | else(SYSTEM_IS_LINUX) 58 | if(INSTALL_UDEV_RULES) 59 | message(STATUS "udev rules not supported on this platform. Hide this message via -DINSTALL_UDEV_RULES=Off") 60 | endif(INSTALL_UDEV_RULES) 61 | endif(SYSTEM_IS_LINUX) 62 | -------------------------------------------------------------------------------- /host/packaging/Portfile: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 2 | # $Id$ 3 | 4 | PortSystem 1.0 5 | PortGroup cmake 1.0 6 | PortGroup github 1.0 7 | 8 | github.setup greatscottgadgets ubertooth 2014-02-R2 9 | categories net security 10 | platforms darwin 11 | maintainers gmail.com:dominicgs 12 | license GPL-2+ 13 | 14 | description UBertooth tools 15 | 16 | long_description \ 17 | Ubertooth is a 2.4GHz monitor targeter at Bluetooth Basic Rate and Low \ 18 | Energy. This package contains a control library and host tools to \ 19 | interact with Ubertooth devices. 20 | 21 | homepage https://github.com/greatscottgadgets/ubertooth 22 | 23 | checksums sha256 0b5e67434a9dd347fbe41eb1904bec1b9416af0250803f10c19d6c4e88399c32 24 | 25 | depends_lib port:libpcap \ 26 | port:libbtbb \ 27 | port:py-pyusb-devel 28 | 29 | configure.dir ${workpath}/host/build 30 | build.dir ${configure.dir} 31 | 32 | post-extract { 33 | file mkdir ${configure.dir} 34 | } 35 | -------------------------------------------------------------------------------- /host/packaging/ubertooth.rb: -------------------------------------------------------------------------------- 1 | require "formula" 2 | 3 | class Ubertooth < Formula 4 | homepage "https://github.com/greatscottgadgets/ubertooth" 5 | url "https://github.com/greatscottgadgets/ubertooth/archive/2014-02-R2.tar.gz" 6 | sha1 "773eab8b6440dcf7fd6bcc83d9e365c3239dd5f3" 7 | version "2014-02-R2" 8 | 9 | head "https://github.com/greatscottgadgets/ubertooth.git" 10 | 11 | resource "pyusb" do 12 | url "https://pypi.python.org/packages/source/p/pyusb/pyusb-1.0.0b1.tar.gz" 13 | sha1 "f0ca8bdfbb59645ea73976f9a3cb2b0701667148" 14 | end 15 | 16 | depends_on "cmake" => :build 17 | depends_on :python 18 | depends_on "libbtbb" 19 | 20 | def install 21 | ENV.prepend_create_path "PYTHONPATH", libexec+"lib/python2.7/site-packages" 22 | resource("pyusb").stage { system "python", "setup.py", "install", "--prefix=#{libexec}" } 23 | 24 | mkdir "host/build" do 25 | system "cmake", "..", *std_cmake_args 26 | system "make", "install" 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /host/python/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Dominic Spill 2 | # 3 | # This file is part of Ubertooth 4 | # 5 | # GNU Radio is free software; you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation; either version 2, or (at your option) 8 | # any later version. 9 | # 10 | # GNU Radio is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with GNU Radio; see the file COPYING. If not, write to 17 | # the Free Software Foundation, Inc., 51 Franklin Street, 18 | # Boston, MA 02110-1301, USA. 19 | 20 | project(ubertooth-python) 21 | 22 | # Check for python installation 23 | find_package(PythonInterp) 24 | if(NOT PYTHONINTERP_FOUND) 25 | return() 26 | else() 27 | add_subdirectory(specan_ui) 28 | # add_subdirectory(usb_dfu) 29 | endif() 30 | 31 | # Create uninstall target 32 | if(NOT ubertooth_all_SOURCE_DIR) 33 | configure_file( 34 | ${PROJECT_SOURCE_DIR}/../cmake/cmake_uninstall.cmake.in 35 | ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 36 | @ONLY) 37 | 38 | add_custom_target(uninstall 39 | ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 40 | ) 41 | endif() 42 | -------------------------------------------------------------------------------- /host/python/extcap/README: -------------------------------------------------------------------------------- 1 | This is an external capture binary, a utility for capturing packets 2 | directly into Wireshark. This capability is currently under development 3 | by Mike Kershaw (dragorn) and Mike Ryan. It is expected to be integrated 4 | Real Soon. 5 | 6 | This is distributed under the terms of the GNU GPL, as is the rest of 7 | the Ubertooth project. 8 | -------------------------------------------------------------------------------- /host/python/specan_ui/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright 2013 Dominic Spill 2 | # 3 | # This file is part of Ubertooth 4 | # 5 | # GNU Radio is free software; you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation; either version 2, or (at your option) 8 | # any later version. 9 | # 10 | # GNU Radio is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with GNU Radio; see the file COPYING. If not, write to 17 | # the Free Software Foundation, Inc., 51 Franklin Street, 18 | # Boston, MA 02110-1301, USA. 19 | 20 | set(SETUP_PY_IN ${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in) 21 | set(SETUP_PY ${CMAKE_CURRENT_BINARY_DIR}/setup.py) 22 | set(DEPS ${CMAKE_CURRENT_SOURCE_DIR}/specan/__init__.py 23 | ${CMAKE_CURRENT_SOURCE_DIR}/specan/Ubertooth.py) 24 | set(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build) 25 | 26 | configure_file(${SETUP_PY_IN} ${SETUP_PY}) 27 | 28 | add_custom_command(OUTPUT ${OUTPUT}/timestamp 29 | COMMAND ${PYTHON_EXECUTABLE} setup.py build 30 | COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT}/timestamp 31 | DEPENDS ${DEPS}) 32 | 33 | add_custom_target(specan ALL DEPENDS ${OUTPUT}/timestamp) 34 | install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} build -b ${OUTPUT} install)") 35 | 36 | add_custom_target(ubertooth-specan-ui ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ubertooth-specan-ui) 37 | install(PROGRAMS ubertooth-specan-ui DESTINATION ${INSTALL_DEFAULT_BINDIR}) 38 | 39 | -------------------------------------------------------------------------------- /host/python/specan_ui/README: -------------------------------------------------------------------------------- 1 | specan_ui.py is a basic spectrum analysis tool for the Ubertooth. 2 | 3 | Requirements (or "what I developed with"): 4 | 5 | * libusb 1.0.8 6 | * PyUSB 1.0.0-a1 7 | * Qt 4.7.3 8 | * PySide 1.0.2 (0.4 will work, but will not be supported for 9 | long due to API changes) 10 | * Python 2.6.6 11 | * Numpy 1.3 12 | 13 | Debian/Ubuntu distributions may also require: 14 | 15 | * libusb-dev ("libusb-*-dev" matching your libusb package) 16 | 17 | It's only been tested on: 18 | 19 | * Mac OS X 10.6.7 20 | * Ubuntu 10.10 21 | 22 | ...but *should* execute nicely on other platforms. 23 | 24 | Execute with: 25 | 26 | $ ubertooth-specan-ui 27 | 28 | ...and enjoy the show. On Linux, you may need to do this instead: 29 | 30 | $ sudo ubertooth-specan-ui 31 | 32 | ...or you can set up udev to allow access to the Ubertooth for non-administrative users. See the "Getting Started" section of the 33 | Ubertooth project Web page for more details: 34 | 35 | http://ubertooth.sourceforget.net/ 36 | -------------------------------------------------------------------------------- /host/python/specan_ui/build/lib.linux-x86_64-2.7/specan/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/host/python/specan_ui/build/lib.linux-x86_64-2.7/specan/__init__.py -------------------------------------------------------------------------------- /host/python/specan_ui/setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | Specan setup 4 | 5 | Install script for the Ubertooth spectrum analyzer tool 6 | 7 | Usage: python setup.py install 8 | 9 | This file is part of project Ubertooth 10 | Copyright 2012 Dominic Spill 11 | """ 12 | 13 | from distutils.core import setup 14 | 15 | setup( 16 | name = "specan", 17 | description = "A tool for reading spectrum analyzer data from an Ubertooth device", 18 | author = "Jared Boone, Michael Ossmann, Dominic Spill", 19 | url = "https://github.com/greatscottgadgets/ubertooth/", 20 | license = "GPL", 21 | version = '', 22 | packages = ['specan'], 23 | scripts = ['ubertooth-specan-ui'], 24 | classifiers=[ 25 | 'Development Status :: 5 - Beta', 26 | 'Intended Audience :: Developers', 27 | 'License :: OSI Approved :: GNU General Public License (GPL)', 28 | 'Programming Language :: Python', 29 | 'Operating System :: OS Independent', 30 | ], 31 | ) 32 | -------------------------------------------------------------------------------- /host/python/specan_ui/setup.py.in: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | dfu setup 4 | 5 | Install script for the Ubertooth spectrum analyzer tool 6 | 7 | Usage: python setup.py install 8 | 9 | This file is part of project Ubertooth 10 | Copyright 2012 Dominic Spill 11 | """ 12 | 13 | from distutils.core import setup 14 | 15 | setup( 16 | name = "specan", 17 | description = "A tool for reading spectrum analyzer data from an Ubertooth device", 18 | author = "Jared Boone, Michael Ossmann, Dominic Spill", 19 | url = "https://github.com/greatscottgadgets/ubertooth/", 20 | license = "GPL", 21 | version = '${PACKAGE_VERSION}', 22 | package_dir = { '': '${CMAKE_CURRENT_SOURCE_DIR}' }, 23 | packages = ['specan'], 24 | classifiers=[ 25 | 'Development Status :: 5 - Beta', 26 | 'Intended Audience :: Developers', 27 | 'License :: OSI Approved :: GNU General Public License (GPL)', 28 | 'Programming Language :: Python', 29 | 'Operating System :: OS Independent', 30 | ], 31 | ) 32 | -------------------------------------------------------------------------------- /host/python/specan_ui/specan/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/host/python/specan_ui/specan/__init__.py -------------------------------------------------------------------------------- /host/ubertooth-tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2013 Dominic Spill 3 | # 4 | # This file is part of Ubertooth 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2, or (at your option) 9 | # any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; see the file COPYING. If not, write to 18 | # the Free Software Foundation, Inc., 51 Franklin Street, 19 | # Boston, MA 02110-1301, USA. 20 | # 21 | 22 | # Based heavily upon the hackrf cmake setup. 23 | 24 | project(ubertooth-tools C) 25 | set(PACKAGE ubertooth-tools) 26 | 27 | if(MSVC OR APPLE) 28 | set(USE_OWN_GNU_GETOPT 1) 29 | endif() 30 | 31 | add_subdirectory(src) 32 | 33 | # Create uninstall target 34 | if(NOT ubertooth_all_SOURCE_DIR) 35 | configure_file( 36 | ${PROJECT_SOURCE_DIR}/../cmake/cmake_uninstall.cmake.in 37 | ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 38 | @ONLY) 39 | 40 | add_custom_target(uninstall 41 | ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 42 | ) 43 | endif() -------------------------------------------------------------------------------- /host/ubertooth-tools/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2013 Dominic Spill 3 | # 4 | # This file is part of Ubertooth 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2, or (at your option) 9 | # any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; see the file COPYING. If not, write to 18 | # the Free Software Foundation, Inc., 51 Franklin Street, 19 | # Boston, MA 02110-1301, USA. 20 | # 21 | 22 | # Based heavily upon the hackrf cmake setup. 23 | 24 | find_package(BTBB REQUIRED) 25 | find_package(BLUETOOTH) 26 | 27 | # Use pcap only if BTBB supports it and user hasn't explicitly disabled it 28 | # If user explicitly enables it but BTBB doesn't support it, raise an error 29 | if( (NOT DEFINED USE_PCAP) OR USE_PCAP ) 30 | if( USE_PCAP AND (NOT HAVE_BTBB_PCAP) ) 31 | message( FATAL_ERROR 32 | "libbtbb does not support pcap, which is required for USE_PCAP") 33 | else() 34 | if(HAVE_BTBB_PCAP) 35 | add_definitions( -DENABLE_PCAP ) 36 | endif() 37 | endif() 38 | endif() 39 | 40 | if(USE_OWN_GNU_GETOPT) 41 | include_directories(../getopt) 42 | add_library(libgetopt_static STATIC ../getopt/getopt.c) 43 | endif(USE_OWN_GNU_GETOPT) 44 | 45 | if(NOT libubertooth_SOURCE_DIR) 46 | find_package(UBERTOOTH REQUIRED) 47 | include_directories(${LIBUBERTOOTH_INCLUDE_DIR}) 48 | LIST(APPEND TOOLS_LINK_LIBS ${LIBUBERTOOTH_LIBRARIES}) 49 | else() 50 | include_directories(${libubertooth_SOURCE_DIR}/src) 51 | LIST(APPEND TOOLS_LINK_LIBS ubertooth) 52 | endif() 53 | 54 | include_directories(${LIBUSB_INCLUDE_DIR} ${LIBBTBB_INCLUDE_DIR}) 55 | 56 | LIST(APPEND TOOLS_LINK_LIBS ${LIBUSB_LIBRARIES} ${LIBBTBB_LIBRARIES}) 57 | 58 | if(USE_OWN_GNU_GETOPT) 59 | LIST(APPEND TOOLS_LINK_LIBS libgetopt_static) 60 | endif(USE_OWN_GNU_GETOPT) 61 | 62 | LIST(APPEND TOOLS ubertooth-rx ubertooth-dump ubertooth-util ubertooth-btle ubertooth-dfu ubertooth-specan ubertooth-ego) 63 | 64 | if( USE_BLUEZ AND NOT ${LIBBLUETOOTH_FOUND} ) 65 | message( FATAL_ERROR 66 | "Cannot find libbluetooth, which is required for USE_BLUEZ") 67 | endif() 68 | 69 | if ( ${LIBBLUETOOTH_FOUND} ) 70 | LIST(APPEND TOOLS ubertooth-follow ubertooth-scan) 71 | include_directories(${LIBBLUETOOTH_INCLUDE_DIR}) 72 | LIST(APPEND TOOLS_LINK_LIBS ${LIBBLUETOOTH_LIBRARIES}) 73 | endif() 74 | 75 | foreach(tool ${TOOLS}) 76 | add_executable(${tool} ${tool}.c) 77 | target_link_libraries(${tool} ${TOOLS_LINK_LIBS}) 78 | install(TARGETS ${tool} RUNTIME DESTINATION ${INSTALL_DEFAULT_BINDIR}) 79 | endforeach(tool) 80 | 81 | # ubertooth-debug is special because of the extra source file 82 | add_executable(ubertooth-debug ubertooth-debug.c cc2400.c arglist.c) 83 | install(TARGETS ubertooth-debug RUNTIME DESTINATION ${INSTALL_DEFAULT_BINDIR}) 84 | target_link_libraries(ubertooth-debug ${TOOLS_LINK_LIBS}) 85 | -------------------------------------------------------------------------------- /host/ubertooth-tools/src/arglist.h: -------------------------------------------------------------------------------- 1 | int * 2 | listOfInts (char *arg, int *n, int (*token_parser) (char *p, int *nchars)); 3 | -------------------------------------------------------------------------------- /host/ubertooth-tools/src/cc2400.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2013 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #include 23 | 24 | /* 25 | * fp = file to output to 26 | * r = register number 27 | * v = value in the register 28 | * verbose = if non-zero, output reserved fields 29 | */ 30 | void cc2400_decode(FILE *fp, int r, unsigned short v, int verbose); 31 | 32 | /* 33 | * name = register name 34 | * 35 | * Returns register number or -1 if not found 36 | */ 37 | int cc2400_name2reg(char *name); 38 | 39 | /* 40 | * r = register number 41 | * 42 | * Returns register name 43 | */ 44 | char *cc2400_reg2name(int r); 45 | -------------------------------------------------------------------------------- /host/ubertooth-tools/src/ubertooth-dump.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2010, 2011 Michael Ossmann 3 | * 4 | * This file is part of Project Ubertooth. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2, or (at your option) 9 | * any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; see the file COPYING. If not, write to 18 | * the Free Software Foundation, Inc., 51 Franklin Street, 19 | * Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #include "ubertooth.h" 23 | #include 24 | #include 25 | 26 | static void usage(void) 27 | { 28 | printf("ubertooth-dump - output a continuous stream of received bits\n"); 29 | printf("Usage:\n"); 30 | printf("\t-h this help\n"); 31 | printf("\t-b only dump received bitstream (GnuRadio style)\n"); 32 | printf("\t-c classic modulation\n"); 33 | printf("\t-l LE modulation\n"); 34 | printf("\t-U<0-7> set ubertooth device to use\n"); 35 | printf("\t-d filename\n"); 36 | printf("\nThis program sends binary data to stdout. You probably don't want to\n"); 37 | printf("run it from a terminal without redirecting the output.\n"); 38 | } 39 | 40 | /* 41 | * The normal output format is in chunks of 64 bytes in the USB RX packet format 42 | * 50 of those 64 bytes contain the received symbols (packed 8 per byte). 43 | * 44 | * The -b output format is a stream of bytes, each either 0x00 or 0x01 45 | * representing the symbol determined by the demodulator (GnuRadio style) 46 | */ 47 | 48 | extern FILE *dumpfile; 49 | 50 | int main(int argc, char *argv[]) 51 | { 52 | int opt; 53 | int bitstream = 0; 54 | int modulation = MOD_BT_BASIC_RATE; 55 | char ubertooth_device = -1; 56 | struct libusb_device_handle *devh = NULL; 57 | 58 | while ((opt=getopt(argc,argv,"bhclU:d:")) != EOF) { 59 | switch(opt) { 60 | case 'b': 61 | bitstream = 1; 62 | break; 63 | case 'c': 64 | modulation = MOD_BT_BASIC_RATE; 65 | break; 66 | case 'l': 67 | modulation = MOD_BT_LOW_ENERGY; 68 | break; 69 | case 'U': 70 | ubertooth_device = atoi(optarg); 71 | break; 72 | case 'd': 73 | dumpfile = fopen(optarg, "w"); 74 | if (dumpfile == NULL) { 75 | perror(optarg); 76 | return 1; 77 | } 78 | break; 79 | case 'h': 80 | default: 81 | usage(); 82 | return 1; 83 | } 84 | } 85 | 86 | devh = ubertooth_start(ubertooth_device); 87 | 88 | if (devh == NULL) { 89 | usage(); 90 | return 1; 91 | } 92 | 93 | cmd_set_modulation(devh, modulation); 94 | rx_dump(devh, bitstream); 95 | 96 | ubertooth_stop(devh); 97 | return 0; 98 | } 99 | -------------------------------------------------------------------------------- /tools/RELEASENOTES: -------------------------------------------------------------------------------- 1 | Ubertooth 2014-02-R2 Release Notes 2 | 3 | The Ubertooth host utilities in this release require libbtbb-2014-02-R2 (https://github.com/greatscottgadgets/libbtbb/releases/tag/2014-02-R2) or greater. 4 | 5 | These are just the highlights, for a complete list of changes since the 6 | previous release, see the git commit log. 7 | 8 | * Bluetooth Smart (Low Energy) Support 9 | * Promiscuous and follow modes 10 | * Pcap format packet logging 11 | * Pairing / encryption support when paired with crackle: https://github.com/mikeryan/crackle 12 | * Credit for BLE features goes to Mike Ryan 13 | 14 | * Unified host tool for monitoring Basic Rate 15 | * ubertooth-rx replaces -lap, -uap, -hop tools 16 | * Once UAP is discovered, ubertooth-rx automatically tries to find clock values and begin hopping 17 | 18 | * Survey tool - ubertooth-scan 19 | * Combining both Ubertooth and a standard Bluetooth dongle 20 | * Ubertooth scans for non-discoverable master devices 21 | * Dongle probes devices for piconet information and features 22 | 23 | * Cmake now used for the build system 24 | * Improves support for non-Linux operating systems 25 | * More sensible handling of dependencies 26 | * New build instructions: https://github.com/greatscottgadgets/ubertooth/wiki/Build-Guide 27 | 28 | * Packaging (Experimental) 29 | * Early stage support for packaging systems 30 | * libbtbb in Homebrew repository, Ubertooth coming soon 31 | * MacPorts availability is under test 32 | * Release already available in Pentoo 33 | 34 | * GitHub migration 35 | * libbtbb, Ubertooth and gr-bluetooth all hosted on GitHub 36 | * Allows for more open development and collaboration model 37 | * Already seeing an increase in issue reporting and pull requests 38 | 39 | -------------------------------------------------------------------------------- /tools/ubertooth-release.txt: -------------------------------------------------------------------------------- 1 | release procedure: 2 | 3 | manual procedure from git HEAD (can be copied from previous release if there 4 | have been no hardware changes): 5 | - make ubertooth one gerbers 6 | - make ubertooth one assembly diagram (print svg with frame ref) 7 | open in inkscape, save as ubertooth-one-assembly.pdf 8 | - make ubertooth one schematic pdf (ubertooth-one-schematic.pdf) 9 | plot to svg, open in inkscape, save as pdf 10 | - make ubertooth one bom (ubertooth-one.csv) 11 | 12 | - make pogoprog gerbers 13 | - make pogoprog assembly diagram 14 | print svg, silkscreen, with frame ref, b/w, selected 15 | open in inkscape, save as pogoprog-assembly.pdf 16 | - make pogoprog schematic pdf (pogoprog-schematic.pdf) 17 | - make pogoprog bom (pogoprog.csv) 18 | 19 | - make tc13badge gerbers 20 | - make tc13badge assembly diagram (print svg with frame ref) 21 | no render hidden text, print svg, silkscreen, with frame ref, b/w, selected 22 | open in inkscape, save as tc13badge-assembly.pdf 23 | - make tc13badge schematic pdf (tc13badge-schematic.pdf) 24 | - make tc13badge bom (tc13badge.csv) 25 | 26 | 27 | scripted (release.sh): 28 | - git archive 29 | - nanoc compile 30 | - make ubertooth one binaries 31 | - make ubertooth zero binaries 32 | - copy hardware files 33 | - copy component placement sheets 34 | 35 | manual: 36 | - write RELEASENOTES.txt 37 | - tar -czvf 38 | - upload to sourceforge 39 | -------------------------------------------------------------------------------- /web/Makefile: -------------------------------------------------------------------------------- 1 | NANOC := nanoc 2 | 3 | compile: 4 | $(NANOC) compile 5 | 6 | # Add the following to your .ssh/config file to use upload 7 | #Host web.sourceforge.net 8 | # User ,ubertooth 9 | upload: compile 10 | rsync --delete --exclude .svn -ave ssh output/* web.sourceforge.net:htdocs/ 11 | 12 | clean: 13 | rm -rf output tmp 14 | -------------------------------------------------------------------------------- /web/README: -------------------------------------------------------------------------------- 1 | This is the source directory for the Project Ubertooth web site, including all 2 | project documentation. To browse the content online, visit: 3 | 4 | http://ubertooth.sourceforge.net/ 5 | 6 | If you have downloaded this material and would like to browse the content 7 | locally, point your browser to the file: 8 | 9 | output/index.html 10 | 11 | Everything below this point other than the output directory is source material 12 | for automatic generation of the web site. If you would like to contribute to the 13 | web site, you should learn how to use the nanoc site compiler by going through 14 | the short tutorial at: 15 | 16 | http://nanoc.stoneship.org/ 17 | 18 | Most contributions would basically go like this: edit content files, run "nanoc 19 | compile", test locally, and commit to svn. 20 | -------------------------------------------------------------------------------- /web/Rakefile: -------------------------------------------------------------------------------- 1 | require 'nanoc3/tasks' -------------------------------------------------------------------------------- /web/Rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # A few helpful tips about the Rules file: 4 | # 5 | # * The order of rules is important: for each item, only the first matching 6 | # rule is applied. 7 | # 8 | # * Item identifiers start and end with a slash (e.g. "/about/" for the file 9 | # "content/about.html"). To select all children, grandchildren, ... of an 10 | # item, use the pattern "/about/*/"; "/about/*" will also select the parent, 11 | # because "*" matches zero or more characters. 12 | 13 | compile '/stylesheet/' do 14 | # don't filter or layout 15 | end 16 | 17 | compile '/images/*' do 18 | # don't filter or layout 19 | end 20 | 21 | compile '*' do 22 | filter :erb 23 | layout 'default' 24 | end 25 | 26 | route '/stylesheet/' do 27 | '/style.css' 28 | end 29 | 30 | route '*' do 31 | case item[:extension] 32 | when 'html', 'html' 33 | item.identifier + 'index.html' # /foo/ -> /foo/index.html 34 | else 35 | item.identifier.chop + '.' + item[:extension] # /foo/ -> /foo.jpeg 36 | end 37 | end 38 | 39 | layout '*', :erb 40 | -------------------------------------------------------------------------------- /web/config.yaml: -------------------------------------------------------------------------------- 1 | # A list of file extensions that nanoc will consider to be textual rather than 2 | # binary. If an item with an extension not in this list is found, the file 3 | # will be considered as binary. 4 | text_extensions: [ 'css', 'erb', 'haml', 'htm', 'html', 'js', 'less', 'markdown', 'md', 'php', 'rb', 'sass', 'scss', 'txt', 'xhtml', 'xml' ] 5 | 6 | # The path to the directory where all generated files will be written to. This 7 | # can be an absolute path starting with a slash, but it can also be path 8 | # relative to the site directory. 9 | output_dir: output 10 | 11 | # A list of index filenames, i.e. names of files that will be served by a web 12 | # server when a directory is requested. Usually, index files are named 13 | # "index.hml", but depending on the web server, this may be something else, 14 | # such as "default.htm". This list is used by nanoc to generate pretty URLs. 15 | index_filenames: [ 'index.html' ] 16 | 17 | # Whether or not to generate a diff of the compiled content when compiling a 18 | # site. The diff will contain the differences between the compiled content 19 | # before and after the last site compilation. 20 | enable_output_diff: false 21 | 22 | # The data sources where nanoc loads its data from. This is an array of 23 | # hashes; each array element represents a single data source. By default, 24 | # there is only a single data source that reads data from the "content/" and 25 | # "layout/" directories in the site directory. 26 | data_sources: 27 | - 28 | # The type is the identifier of the data source. By default, this will be 29 | # `filesystem_unified`. 30 | type: filesystem_unified 31 | 32 | # The path where items should be mounted (comparable to mount points in 33 | # Unix-like systems). This is "/" by default, meaning that items will have 34 | # "/" prefixed to their identifiers. If the items root were "/en/" 35 | # instead, an item at content/about.html would have an identifier of 36 | # "/en/about/" instead of just "/about/". 37 | items_root: / 38 | 39 | # The path where layouts should be mounted. The layouts root behaves the 40 | # same as the items root, but applies to layouts rather than items. 41 | layouts_root: / 42 | -------------------------------------------------------------------------------- /web/content/firmware/develop.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Developing Firmware 3 | --- 4 |

Developing Firmware

5 | 6 |

You'll need a toolchain that supports ARM Cortex-M3. The Makefiles in 7 | Project Ubertooth are designed for GCC and a Linux-based toolchain, 8 | specifically the free installation provided at https://launchpad.net/gcc-arm-embedded, 10 | but it should be possible to compile firmware with any development environment 11 | for the Cortex-M3. Just unpack the archive and add the bin directory to your 12 | PATH.

13 | 14 |

Prior to r518, we used the Codesourcery toolchain, but it has 16 | become harder to locate.

17 | 18 | 19 |

Although firmware source and binary images can be found in the 20 | release downloads, 21 | you will probably want fresh code from git.

23 | 24 |

Ubertooth Zero and Ubertooth One are not binary compatible. The default 25 | target is Ubertooth One. If you are compiling firmware for Ubertooth Zero, set 26 | the environment variable BOARD = UBERTOOTH_ZERO.

27 | -------------------------------------------------------------------------------- /web/content/hardware/one.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Ubertooth One 3 | --- 4 |

Ubertooth One

5 | 6 |

Ubertooth One is the next generation hardware platform of Project Ubertooth. 7 | It supersedes Ubertooth Zero and is currently the 8 | preferred platform.

9 | 10 | Ubertooth One photo 11 | 12 |

architecture

13 | 14 |
    15 |
  • RP-SMA RF 16 | connector: connects to test equipment, antenna, or dummy load.
  • 17 |
  • CC2591 19 | RF front end.
  • 20 |
  • CC2400 22 | wireless transceiver.
  • 23 |
  • LPC175x ARM 24 | Cortex-M3 microcontroller with Full-Speed USB 2.0.
  • 25 |
  • USB A plug: connects to host computer running Kismet or other host 26 | code.
  • 27 |
28 | 29 |

features

30 | 31 |
    32 |
  • 2.4 GHz transmit and receive.
  • 33 |
  • Transmit power and receive sensitivity comparable to a Class 1 34 | Bluetooth device.
  • 35 |
  • standard Cortex 37 | Debug Connector (10-pin 50-mil JTAG).
  • 38 |
  • In-System Programming (ISP) serial connector.
  • 39 |
  • expansion connector: intended for inter-Ubertooth communication or 40 | other future uses.
  • 41 |
  • six indicator LEDs.
  • 42 |
43 | 44 |

design

45 | 46 |

Ubertooth One was designed in KiCad, an open 48 | source electronic design automation software package, with surface mount 49 | components suitable for reflow.

51 | 52 |

pins and LEDs

53 | 54 | Ubertooth One diagram 55 | 56 |

This diagram shows the location of LEDs and the pins of the expansion 57 | connector.

58 | 59 |

LED guide:

60 | 61 |
    62 |
  • RST: indicates that the LPC175x is powered on. This should always be on 63 | during operation except during a full reset of the LPC175x (e.g., while 64 | entering ISP mode).
  • 65 |
  • 1V8: indicates that the CC2400 is being supplied with 1.8 V. Control of 66 | this supply depends on firmware. 1V8 power is required to activate the 67 | crystal oscillator which is required to activate USB.
  • 68 |
  • USB: indicates that USB has passed enumeration and configuration.
  • 69 |
  • TX: Control of this LED depends on firmware. It typically indicates 70 | radio transmission.
  • 71 |
  • RX: Control of this LED depends on firmware. It typically indicates 72 | radio reception.
  • 73 |
  • USR: Control of this LED depends on firmware.
  • 74 |
75 | 76 |

The TX, RX, and USR LEDs blink in a distinctive chasing pattern when the 77 | bootloader is ready to accept USB DFU commands.

78 | 79 |

demonstration

80 | 81 |

Michael Ossmann presented Project Ubertooth: Building a 83 | Better Bluetooth Adapter at ShmooCon 84 | 2011.

85 | -------------------------------------------------------------------------------- /web/content/hardware/zero.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Ubertooth Zero 3 | --- 4 |

Ubertooth Zero

5 | 6 |

Ubertooth Zero was the first working prototype hardware platform of Project 7 | Ubertooth. It has been superseded by Ubertooth One.

8 | 9 | Ubertooth Zero photo 10 | 11 |

architecture

12 | 13 |
    14 |
  • RP-SMA RF 15 | connector: connects to test equipment, antenna, or dummy load.
  • 16 |
  • CC2400 18 | wireless transceiver IC.
  • 19 |
  • LPC175x ARM 20 | Cortex-M3 microcontroller with Full-Speed USB 2.0.
  • 21 |
  • USB A plug: connects to host computer running Kismet or other host 22 | code.
  • 23 |
24 | 25 |

features

26 | 27 |
    28 |
  • 2.4 GHz transmit and receive.
  • 29 |
  • Transmit power and receive sensitivity comparable to a Class 3 30 | Bluetooth device.
  • 31 |
  • non-standard JTAG connector.
  • 32 |
  • In-System Programming (ISP) serial connector.
  • 33 |
  • expansion connector: intended for inter-Ubertooth communication or 34 | other future uses.
  • 35 |
  • six indicator LEDs.
  • 36 |
37 | 38 |

design

39 | 40 |

Ubertooth Zero was designed in CadSoft 41 | EAGLE with surface mount components suitable for reflow. 43 | 44 |

demonstration

45 | 46 |

Michael Ossmann presented Ubertooth Zero, a preview (video: part 1, part 2) at ToorCon 12 in October, 2010.

50 | -------------------------------------------------------------------------------- /web/content/host/develop.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Developing Host Code 3 | --- 4 |

Developing Host Code

5 | 6 |

Host code is the software running on a host computer to which an Ubertooth 7 | One or Ubertooth Zero is attached via USB.

8 | 9 |

The Ubertooth developers use GCC on Linux. Theoretically, host code could 10 | be written on or for other platforms, but it hasn't been done yet.

11 | 12 |

Although source can be found in the 13 | release downloads, 14 | you will probably want fresh code from git.

16 | -------------------------------------------------------------------------------- /web/content/images/kismet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/kismet.png -------------------------------------------------------------------------------- /web/content/images/pogoprog-placement.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/pogoprog-placement.jpeg -------------------------------------------------------------------------------- /web/content/images/pogoprog.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/pogoprog.jpeg -------------------------------------------------------------------------------- /web/content/images/specan_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/specan_ui.png -------------------------------------------------------------------------------- /web/content/images/u1_roadmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/u1_roadmap.png -------------------------------------------------------------------------------- /web/content/images/ubertooth-lap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/ubertooth-lap.png -------------------------------------------------------------------------------- /web/content/images/ubertooth-one-zero.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/ubertooth-one-zero.jpeg -------------------------------------------------------------------------------- /web/content/images/ubertooth-one.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/ubertooth-one.jpeg -------------------------------------------------------------------------------- /web/content/images/ubertooth-zero.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samyk/ubertooth/825bc8901d4b36016cdab3fcc2f49b1487571bfc/web/content/images/ubertooth-zero.jpeg -------------------------------------------------------------------------------- /web/content/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Home 3 | --- 4 |

Project Ubertooth

5 | 6 |

An open source 2.4 GHz wireless development platform suitable for 7 | Bluetooth experimentation

8 | 9 |

Ubertooth has now moved to GitHub. You may 11 | follow the links below to find up to date information about the project.

12 | 13 |
    14 |
  • Our open source hardware, software and firmware is available from our 15 | git repository.
  • 16 |
  • Documentation can be found on the 17 | wiki.
  • 18 |
  • A list of Ubertooth One 19 | resellers is also available.
  • 20 |
21 | -------------------------------------------------------------------------------- /web/content/stylesheet.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | 5 | font-family: Palatino, 'Times New Roman', Times, serif; 6 | } 7 | 8 | body { 9 | background: #fff; 10 | } 11 | 12 | a { 13 | text-decoration: inherit; 14 | font-family: inherit; 15 | } 16 | 17 | a:link, 18 | a:visited { 19 | color: #30f; 20 | } 21 | 22 | a:hover { 23 | color: #39f; 24 | } 25 | 26 | a[name]:hover { 27 | color: inherit; 28 | } 29 | 30 | #main { 31 | position: absolute; 32 | 33 | top: 40px; 34 | left: 280px; 35 | 36 | width: 500px; 37 | } 38 | 39 | #main h1 { 40 | font-size: 40px; 41 | font-weight: normal; 42 | 43 | line-height: 40px; 44 | 45 | letter-spacing: -1px; 46 | font-family: Impact, Helvetica, Arial, sans-serif; 47 | } 48 | 49 | #main h2,h3,h4 { 50 | font-family: 'Courier New', Courier, monospace; 51 | } 52 | 53 | #main p { 54 | margin: 20px 0; 55 | 56 | font-size: 15px; 57 | 58 | line-height: 20px; 59 | } 60 | 61 | #main ul { 62 | margin: 20px; 63 | } 64 | 65 | #main li { 66 | list-style-type: square; 67 | 68 | font-size: 15px; 69 | 70 | line-height: 20px; 71 | } 72 | 73 | #main img { 74 | margin: 20px 0; 75 | } 76 | 77 | #sidebar { 78 | position: absolute; 79 | 80 | top: 40px; 81 | left: 20px; 82 | width: 200px; 83 | 84 | padding: 20px 20px 0 0; 85 | 86 | border-right: 1px solid #ccc; 87 | 88 | text-align: right; 89 | } 90 | 91 | #sidebar h1 { 92 | font-family: 'Courier New', Courier, monospace; 93 | } 94 | #sidebar h2 { 95 | 96 | font-size: 18px; 97 | 98 | color: #333; 99 | 100 | letter-spacing: 1px; 101 | 102 | line-height: 20px; 103 | font-family: 'Courier New', Courier, monospace; 104 | } 105 | 106 | #sidebar ul { 107 | list-style-type: none; 108 | 109 | margin: 20px 0; 110 | } 111 | 112 | #sidebar li { 113 | font-size: 14px; 114 | 115 | line-height: 20px; 116 | } 117 | 118 | pre, 119 | pre a { 120 | /*margin: 1em 1em 1em 1.6em;*/ 121 | font-family: 'Courier New', Courier, monospace; 122 | font-size: small; 123 | padding: 2px 2px 2px 0; 124 | /*background-color: #FAFAFA;*/ 125 | /*border: 1px solid #DADADA;*/ 126 | } 127 | -------------------------------------------------------------------------------- /web/content/usage/build.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Build Guide 3 | --- 4 |

This build guide is out of date


5 | Up to date instructions for the latest release are available on our 6 | GitHub wiki 7 | -------------------------------------------------------------------------------- /web/layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Project Ubertooth - <%= @item[:title] %> 6 | 7 | 8 | 9 | 10 |
11 | <%= yield %> 12 |
13 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /web/lib/default.rb: -------------------------------------------------------------------------------- 1 | # All files in the 'lib' directory will be loaded 2 | # before nanoc starts compiling. 3 | --------------------------------------------------------------------------------