Skip to content
Snippets Groups Projects
Unverified Commit 81b766ae authored by Erwin Ried's avatar Erwin Ried Committed by GitHub
Browse files

Merge branch 'master' into dockerfile

parents ec29e20d efeb4d19
No related branches found
No related tags found
No related merge requests found
Showing with 50 additions and 347 deletions
...@@ -17,17 +17,6 @@ env: ...@@ -17,17 +17,6 @@ env:
- ARTEFACT_BASE=$TRAVIS_BUILD_DIR/artefacts/ - ARTEFACT_BASE=$TRAVIS_BUILD_DIR/artefacts/
- ARTEFACT_PATH=$ARTEFACT_BASE/$BUILD_NAME - ARTEFACT_PATH=$ARTEFACT_BASE/$BUILD_NAME
notifications:
irc:
channels:
- "chat.freenode.net#portapack"
template:
- "%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message}"
- "Change view : %{compare_url}"
- "Build details : %{build_url}"
# TODO: The "build_number.1" in this URL is almost certainly wrong, but correct value not available from Travis?
- "Firmware download : https://jboone.github.io/portapack-havoc-nightly/"
before_install: before_install:
- sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa -y - sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa -y
- sudo apt-get update -q - sudo apt-get update -q
...@@ -65,9 +54,3 @@ addons: ...@@ -65,9 +54,3 @@ addons:
- cmake - cmake
- dfu-util - dfu-util
deploy:
provider: script
skip-cleanup: true
script: bash $TRAVIS_BUILD_DIR/tools/deploy-nightly.sh
on:
branch: master
![HAVOC banner](doc/banner.png) ## Fork of the unofficial HAVOC
HAVOC is an **unofficial** fork of the PortaPack H1 firmware, a portability add-on for the [HackRF One software-defined radio](http://greatscottgadgets.com/hackrf/). Keeping the latest release files and all features I found, and possible my own features in the future, around here. Check Releases
Hardware is available at [ShareBrained Technology](http://sharebrained.com/portapack). [![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=CBPQA4HRRPJQ6&source=url)
It is build on top of [ShareBrained's firmware](https://github.com/sharebrained/portapack-hackrf/), meaning most of the original functionality remains the same. I only have this [Portapack H2+HackRF+battery](https://s.click.aliexpress.com/e/_dSMPvNo), so that's the version I'll be using for testing the releases before I post them here. BTW, if you have the same H2 (I know... I know it is a *dirty* clone) you could print my case:
[![Case](docs/images/h2_front.jpg)](https://www.thingiverse.com/thing:4260973)
# Documentation & finding help <details>
<summary>More details about the H2 case</summary>
[STL files](https://www.thingiverse.com/thing:4260973)
![Helpful note](doc/helpful.png)
</details>
Please RTFM before asking for help: <details>
* [Havoc wiki](https://github.com/furrtek/portapack-havoc/wiki) <summary>Printed magnetic cover for the H2 case</summary>
* [PortaPack wiki](https://github.com/sharebrained/portapack-hackrf/wiki)
* [Some questions and answers](https://github.com/furrtek/portapack-havoc/issues) [![Cover](docs/images/h2_cover.jpg)](https://www.thingiverse.com/thing:4278961)
* [Facebook group](https://www.facebook.com/groups/177623356165819/) if that's your thing
* And probably a bunch of posts on a variety of forums... [STL files](https://www.thingiverse.com/thing:4278961)
If you want to submit a bug report, use this page: https://github.com/furrtek/portapack-havoc/issues. Check if it hasn't been already posted, there's a search function. Also check the progress list below. Tickets which aren't related to the firmware itself, or the original HackRF and Portapack H1 will be closed. </details>
# Summary
As its name implies, HAVOC's functions can be fun, mean or even useful sometimes. You probably shouldn't use them. No ! Bad ! Put it down.
**In most countries, radio transmissions are tightly regulated. Transmitting outside of free/public bands without a licence or authorization, even at very low power, is certainly forbidden where you live. Always bear that in mind. You're the ONLY ONE responsible for what you do with this software.**
# Fork features
* IQ file replay
* Microphone FM transmit with CTCSS
* CTCSS decoder
* Frequency manager (save & load from SD card, with categories and notes)
* File manager
* "Soundboard" wave file player (put 8-bit mono files in SD card /wav directory)
* ADS-B receiver with map view
* ADS-B transmitter (aircraft spoof)
* SSTV transmitter
* Fully configurable jammer
* POCSAG transmitter
* POCSAG receiver/decoder
* Morse transmitter (FM tone and CW)
* OOK transmitter for common remote encoders (PT2262, doorbells, remote outlets, some garage doors, ...)
* RDS (Radio Data System) PSN, RadioText and Time groups transmitter
* Meteorological radiosonde receiver (M10, M2K2, ...)
* AFSK receiver
* AFSK transmitter (Bell202, ...)
* Nuoptix DTMF sync transmitter (quite specific but can be useful in some theme parks :) )
* TouchTunes jukebox universal remote (by Notpike)
* LCR (Language de Commande Routier) message generator
* Street lighting control transmitter (CCIR tones)
* "Play Dead" in case of emergency
* Fully configurable RF signal generator
* RSSI audio output as pitch (for direction finding)
# Progress
Feature | Progress | Notes
------- | -------- | -----
POCSAG RX | 95% | Needs support for numeric messages
Morse TX | 95% | Needs fox hunt scheduler and live keying mode
Mic. TX | 95% | Carrier leak bug, need to find guard tones for various brands of wireless mics
ADS-B RX | 90% | Needs angle and speed decoding
Close-Call™ | 85% | Needs adjustments and optimization for wider frequency range
ADS-B TX | 85% | Works but baseband module needs cleaning
SSTV TX | 80% | Needs better bitmap file handling, support for other modes (ROBOT ?) and callsign FSK ID
Radiosondes | 75% | Needs support for other models
Wave visualizer | 70% | Needs cleaning and handling of other sample formats, high priority
AFSK RX | 70% | Needs work regarding flexibility
Sigfox RX | 40% | Tuning basics done, needs decoding code and testing
Generic TXs | 30% | Raw AX.25, AFSK, FSK, CCIR, DTMF... Tonesets are ready
CC1101 TRX | 10% | And other sub-GHz transceiver chips like SI4032...
SSTV RX | 0% |
Scanner | 0% | Easy, could be used with POCSAG RX to catch jumping channels
SSB TX | 0% | Requested but math is hard :(
OOK RX | 0% | See if rtl_433's author is fine with using protocol defs
Analog TV TX| 0% | Enough CPU ? B&W and no sound ?
LoJack RX | 0% | Basically AFSK RX
DMR info RX | 0% | Retrieve DMR channel info. **No voice** because of vocoder complexity and possible legal issue
Tetra info? | 0% | Same
# Screenshots
![HAVOC screenshots](doc/screenshots.png)
# Thanks
* Sig and cLx for research on AFSK LCR, Xylos, and for lending remote-controlled outlets
* Pyr3x, Rainer Matla and DC1RDB for the donations :)
* Keld Norman and Giorgio Campiotti for ideas and suggestions
* In general, people who help making it better instead of asking already answered questions
# License
Except where specified in subdirectories of this project, all work is offered under the following license:
Copyright (C) 2013-2019 Jared Boone, ShareBrained Technology, Inc.
Copyright (C) 2015-2016 Furrtek
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
# Contact
## Original firmware and hardware
Jared Boone <jared@sharebrained.com>
ShareBrained Technology, Inc.
<http://www.sharebrained.com/>
The latest version of this repository can be found at
https://github.com/sharebrained/portapack-hackrf/
## HAVOC specific things
Warning: won't reply to questions about flashing and compiling. See links above.
Furrtek <furrtek@gmail.com>
<http://www.furrtek.org>
doc/banner.png

58.7 KiB

doc/helpful.png

191 KiB

doc/images/hardware/portapack_h1_operating.jpg

114 KiB

doc/images/hardware/portapack_h1_parts.jpg

137 KiB

doc/mainmenu.png

13.6 KiB

doc/pj1.jpg

47.4 KiB

doc/pj2.jpg

62.5 KiB

doc/pocsag_rx.png

12.2 KiB

doc/pwmrssi.png

3.07 KiB

doc/screenshots.png

261 KiB

doc/stealth.png

245 B

doc/unistroke.png

19.7 KiB

~ Pretty ugly PortaPack H1 (+HAVOC) UI widget documentation ~
by @furrtek - v0.1 - 2017/02/02
Not approved at all by @Sharebrained
The display is 240 x 320 pixels.
A View is basically a rectangular zone on the screen.
Widgets (aka controls, UI elements...) go into Views.
Views can be pushed to/popped from a stack.
The main menu view is at the bottom of the stack and can't be popped.
The title bar view is a special case, it (normally) can't be hidden by pushed Views.
Since the title bar is 16 pixel high, a regular full-screen view is 240 x 304 pixels.
If the current View can be popped (removed), an arrow shows on the left of the title bar.
Kind of widgets:
==== Rectangle ====
A simple filled or outlined rectangle. No interactivity.
Constructors:
- Empty
- Rectangle(Rect, Color)
Methods:
- set_color(Color)
- set_outline(bool): Default is filled, set to true for outline only
==== Text ====
A simple text label. No interactivity.
Constructors:
- Empty
- Text(Rect)
- Text(Rect, std::string)
Methods:
- set(std::string): Updates text
==== BigFrequency (HAVOC) ====
Displays a big 7-segment style frequency value in the XXXX.xxxMHz format.
If the value is 0, ----.--- is displayed. No leading zeros. No interactivity.
Constructors:
- BigFrequency(Rect, rf::Frequency)
Methods:
- set(rf::Frequency): Updates value
==== ProgressBar (HAVOC) ====
Displays progress as an horizontal progress bar with value and maximum value.
No interactivity.
Constructors:
- ProgressBar(Rect)
Methods:
- set_max(uint32_t): Updates maximum value
- set_value(uint32_t): Updates current value
The maximum value is set by default to 100.
==== Console ====
Displays a scrolling text console. No interactivity.
Constructors:
- Console(Rect)
Methods:
- clear(): Clears text and resets cursor to top-left
- write(std::string): Adds text
- writeln(std::string): Adds text and CR + LF
==== Checkbox (HAVOC) ====
A toggle option shown as a tickable box with a text label.
Interactive: select and touch.
Constructors:
- Empty
- Checkbox(Point, size_t, std::string)
- Checkbox(Point, size_t, std::string, bool)
(Position, length of text label, text, regular size/small)
Methods:
- bool value(): Returns state
- set_text(std::string): Updates text label
- set_value(bool): Sets state
Callbacks:
- on_select: Select key press or touch. Returns state
==== Button ====
A momentary push-button. Interactive: select and touch.
Constructors:
- Empty
- Button(Rect, std::string)
Methods:
- std::string text(): Returns text
- set_text(std::string): Updates text
Callbacks:
- on_select: Select key press or touch
- on_dir: Direction keys press
- on_highlight: Focus get
==== Image ====
Shows a 1-bit bitmap. No interactivity.
Constructors:
- Empty
- Image(Rect, Bitmap*, Color, Color)
(Rect, pointer to bitmap (see bitmap.hpp), foreground, background)
Methods:
- set_bitmap(Bitmap*): Updates bitmap
- set_foreground(Color): Changes foreground color
- set_background(Color): Changes background color
- invert_colors(): Flip foreground color with background
==== ImageButton ====
Same as the Image widget, except interactive (select and touch). No methods.
Constructors:
- Empty
- ImageButton(Rect, Bitmap*, Color, Color)
(Rect, pointer to bitmap (see bitmap.hpp), foreground, background)
Callbacks:
- on_select: Select key press or touch
==== ImageOptionsField (HAVOC) ====
Options list displayed as images.
Interactive: change (jog wheel) and focus.
Constructors:
- Empty
- ImageOptionsField(Rect, options_t)
options_t is a std::vector of std::pair of unsigned char pointers to color bitmap data and an int32_t
Methods:
- set_options(options_t)
- size_t selected_index()
- size_t selected_index_value()
- set_selected_index(size_t)
- set_by_value(value_t)
Callbacks:
- on_change: Option was changed
- on_show_options: Focus get
==== OptionsField ====
==== NumberField ====
==== SymField (HAVOC) ====
==== Waveform (HAVOC) ====
FROM ubuntu:latest FROM ubuntu:latest
# Set location to download ARM toolkit from. # Set location to download ARM toolkit from.
# This will need to be changed over time or replaced with a static link to the latest release. # This will need to be changed over time or replaced with a static link to the latest release.
ENV ARMBINURL=https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2?revision=108bd959-44bd-4619-9c19-26187abf5225&la=en&hash=E788CE92E5DFD64B2A8C246BBA91A249CB8E2D2D \ ENV ARMBINURL=https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2?revision=108bd959-44bd-4619-9c19-26187abf5225&la=en&hash=E788CE92E5DFD64B2A8C246BBA91A249CB8E2D2D \
PATH=$HOME/bin:$PATH:/opt/build/armbin/bin PATH=$HOME/bin:$PATH:/opt/build/armbin/bin
#Create volume /havoc/bin for compiled firmware binaries #Create volume /havoc/bin for compiled firmware binaries
VOLUME /havoc VOLUME /havoc
WORKDIR /havoc/firmware WORKDIR /havoc/firmware
# Fetch dependencies from APT # Fetch dependencies from APT
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y git tar wget dfu-util cmake python3 python-pip ccache && \ apt-get install -y git tar wget dfu-util cmake python3 python-pip ccache && \
apt-get -qy autoremove apt-get -qy autoremove
RUN pip install pyyaml RUN pip install pyyaml
# Grab the GNU ARM toolchain from arm.com # Grab the GNU ARM toolchain from arm.com
# Then extract contents to /opt/build/armbin/ # Then extract contents to /opt/build/armbin/
RUN mkdir /opt/build && cd /opt/build && \ RUN mkdir /opt/build && cd /opt/build && \
wget -O gcc-arm-none-eabi $ARMBINURL && \ wget -O gcc-arm-none-eabi $ARMBINURL && \
mkdir armbin && \ mkdir armbin && \
tar --strip=1 -xjvf gcc-arm-none-eabi -C armbin tar --strip=1 -xjvf gcc-arm-none-eabi -C armbin
# Configure CCACHE # Configure CCACHE
RUN mkdir ~/bin && cd ~/bin && \ RUN mkdir ~/bin && cd ~/bin && \
for tool in gcc g++ cpp c++;do ln -s $(which ccache) arm-none-eabi-$tool;done for tool in gcc g++ cpp c++;do ln -s $(which ccache) arm-none-eabi-$tool;done
CMD cd .. && cd build && \ CMD cd .. && cd build && \
cmake .. && make firmware cmake .. && make firmware
\ No newline at end of file
portapack.ried.cl
\ No newline at end of file
docs/favicon.ico

33.7 KiB

docs/images/h2_cover.jpg

43.4 KiB

docs/images/h2_front.jpg

150 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment