├── README.md └── images ├── Decryption.png ├── Encryption.png ├── assign_headset_highlight.png ├── assign_headset_select.png ├── assign_radio_highlight.png ├── assign_radio_select.png ├── back_cable_route.jpg ├── broadcast_tts.png ├── config_deploy.png ├── config_encryption.png ├── config_load.png ├── config_primary.png ├── config_secondary.png ├── config_select.png ├── configure_hardware.png ├── configure_headset.png ├── configure_ptt.png ├── configure_radio.png ├── configure_tts.png ├── custom_alert.png ├── custom_blank.png ├── default_pinout.png ├── deploy_options.png ├── enable_ptt.png ├── encrypt_generate.png ├── generate_keys.png ├── hardware_assign.png ├── headset_settings.png ├── highlight_key.png ├── highlight_ptt.png ├── input_primary.png ├── input_secondary.png ├── insert_storage.png ├── insert_storage_usb.png ├── keys_generated.png ├── keys_loaded.png ├── main_configure.png ├── radio_settings.png ├── save_settings.png ├── select_key.png ├── select_ptt.png ├── settings_saved.png ├── side_view.jpg ├── tts_highlight.png ├── tts_select.png ├── usb_audio.jpg └── write_success.png /README.md: -------------------------------------------------------------------------------- 1 | # Encrypted Digital Voice On A Raspberry Pi # 2 | 3 | This document provides an overview of the Crypto Voice Module project as 4 | well as a brief theory of operations and instructions for how to build one 5 | using the provided software builds 6 | 7 | ## What Is It? ## 8 | 9 | The Crypto Voice Module is a system for implementing 10 | [Secure Voice](https://en.wikipedia.org/wiki/Secure_voice). The system digitizes 11 | voice input using a low-bitrate voice encoder 12 | ([Codec 2](http://www.rowetel.com/wordpress/?page_id=452)) in this case, 13 | encrypts the digital voice signal, and transmits it in a way that allows it to 14 | be transferred over a standard analog voice radio signal such as a narrowband 15 | FM voice radio, single-sideband radio, or analog telephone. 16 | 17 | Conceptually the device is similar to military voice encryption terminals like 18 | the [KY-99](https://www.cryptomuseum.com/crypto/usa/ky99/index.htm) or 19 | commercial versions like the 20 | [Securenet](https://www.cryptomuseum.com/crypto/motorola/saber/index.htm#algo) 21 | modules from Motorola. On one end of the device the user plugs in a headset, 22 | and on the other end the user connects the device to a radio or analog phone. 23 | The user then uses the radio or phone as they usually would, except the sound 24 | is being digitized and encrypted by the Crypto Voice Module. 25 | 26 | ## How Does It Work? ## 27 | 28 | The analog voice is first digitized then sent to a voice encoder or vocoder. 29 | A vocoder is an audio compression system optimized for compressing voice so it 30 | is understandable even at extremely low bitrates. A typical song is encoded at 31 | somewhere between 128-328 kbits/second, while a typical vocoder is able to 32 | produce voice down to 1.2-1.6 kbits/second, with some systems able to work at 33 | even lower bit rates. 34 | 35 | The Crypto Voice Module uses the 36 | open source [Codec 2](http://www.rowetel.com/wordpress/?page_id=452) vocoder 37 | running in the 1.6 kbits/second mode. This vocder operates on audio blocks 38 | 40 ms in duration and is able to represent that 40 ms block in 52 bits. 39 | 40 | Once a 52 bit block of compressed audio is produced, it is encrypted using an AES-256 41 | cipher in a cipher feedback mode. This allows a receiver to self-synchronize 42 | with a transmitter if a block is lost. A diagram of encryption is shown below. 43 | 44 | ![Encryption](images/Encryption.png) 45 | 46 | After a transmission completes or every 5 minutes, a new randomly generated 47 | 128-bit initialization vector is obtained from the random number generator. 48 | This initialization vector is fed into a KMAC-256 keyed hash algorithm along 49 | with a 1048 bit shared key embedded into the Crypto Voice Module. This generates 50 | a new 256-bit AES key for each block. This key along with the initialization 51 | vector is fed into the AES cipher and produces a stream key which is then XOR-ed 52 | with the 52-bit compressed voice block to obtain a 52-bit ciphertext block. 53 | 48 of these 52 bits are then copied into a 128-bit shift register which is used 54 | as the initialization vector for encrypting the next block. 55 | 56 | Decryption operates the same way, but in reverse. Whenever a new initialization 57 | vector is produced there is some loss of data as the receiver resynchronizes, 58 | but resynchronization can complete within 4 blocks, or 160 ms. 59 | 60 | ![Decryption](images/Decryption.png) 61 | 62 | Once the encrypted block is produced, it is transmitted using an audio frequency 63 | shift keying modulator. This is a standard means of transmitting digital data 64 | at low bit rates over analog mediums intended to transfer voice. This is how 65 | the original [acoustic coupler](https://en.wikipedia.org/wiki/Acoustic_coupler) 66 | modems used to transfer data over phone lines worked. The low data rate required 67 | of the vocoder and slow data rate of the frequency shift keying modulator allows 68 | the encrypted digital voice signal to be transmitted over a standard narrowband 69 | FM radio channel. 70 | 71 | ## How Do You Build One? ## 72 | 73 | At a minimum, you will need the following: 74 | 75 | * 1 Raspberry Pi 3 Model B+ ~~or Raspberry Pi Zero~~ (I no longer recommend the 76 | Raspberry Pi Zero due to issues getting the USB audio devices to work reliably 77 | through the necessary USB hub) 78 | * ~~1 USB OTG Hub (if using a Raspberry Pi Zero)~~ 79 | * 1 Raspberry Pi Power Supply 80 | * 2 USB audio receivers (I used 81 | [these](https://www.amazon.com/MillSO-Sapphire-External-Headphone-Desktops/dp/B0827XDGV4), 82 | but anything that says it supports the USB Audio Device Class should work) 83 | * 1 SD card, minimum 64 MB (*not* GB) 84 | 85 | ### A Brief Note on USB Audio Receivers ### 86 | 87 | Select a product that is convenient for your use case. For example, I selected 88 | a product that has a short TRRS audio cable built into it like this: 89 | 90 | ![USB Audio](images/usb_audio.jpg) 91 | 92 | I selected a product with TRRS (instead of separate speaker/microphone 93 | connectors) because both my headset and radio cable used TRRS connectors. If 94 | you don't, find a one that has separate speaker/microphone connectors. 95 | 96 | I selected a product with the built-in audio cable because I originally planed 97 | to put my completed built in an enclosure, and the built-in cables mean I don't 98 | need to buy extension cables to route the audio jacks out the enclosure. 99 | 100 | One thing to be cautious of is some of the devices are rather large, and the 101 | USB connectors on the PI are spaced rather close together. Whatever you buy, 102 | make sure you can actually plug two of them in at the same time. 103 | 104 | ### Optional Components ### 105 | 106 | More advanced builds may involve additional components to make the design more 107 | polished or portable, such as 108 | 109 | * USB phone charger instead of a power supply (get one that has at least one 110 | port that outputs as close to 2.5A output as possible) 111 | * Micro USB power switch cable to allow power to be disconnected without 112 | unplugging USB connectors 113 | * SD card extenders to make it easier to insert/remove the SD card 114 | * Enclosure to contain the build 115 | * Portable LCD and keyboard/numpad to use the Console Interface 116 | * Buttons to utilize the keypad, for screenless operation 117 | 118 | Note that the system works *very* well using phone charger battery instead of a 119 | power supply. When idle, the software consumes about 1.5 W on a Raspberry Pi 3B+. 120 | The software does not require a lot of power, and this design is well-suited to 121 | portable applications. 122 | 123 | If you decide to put it in an enclosure, it is recommended that you do *not* do 124 | so until you go through the programming and configuration process. 125 | 126 | ## An Example Build ## 127 | 128 | ![Build](images/side_view.jpg) 129 | 130 | This section shows an example build that the author made. With some slight 131 | modification this build could be put into an enclosure for improved portability. 132 | 133 | * 1 [Raspberry Pi Model 3B+ with enclosure and heatsinks.](https://www.amazon.com/gp/product/B01C6EQNNK/). 134 | You do not need the power supply. If you put the build in an enclosure you do 135 | not need an enclosure for the Pi. 136 | * 1 Cell phone battery charger (I used a spare one I had). See above sections 137 | for power supply requirements. If you wish to attach the power button to the 138 | side of the battery you will need a reasonably thick battery 139 | * 2 [MISO USB Audio devices](https://www.amazon.com/gp/product/B0828J36JD/) 140 | * 1 [Micro USB Power Switch cable](https://www.amazon.com/gp/product/B018BFWLRU/) 141 | * 1 [Micro SD Extension Cable](https://www.amazon.com/gp/product/B085HGTJWT/). 142 | This makes it easier to access the SD card when the Pi is mounted to the 143 | battery pack 144 | * 1 SD Card. Likely any SD Card you have will work 145 | * 1 Short Micro USB Cable 146 | 147 | ### Build Procedure ### 148 | 149 | 1) Follow the instructions that came with the Pi to install the heatsinks and 150 | install the Pi into its case 151 | 1) Insert the SD Extension Cable into the Pi's SD card slot 152 | 1) Use hot glue or heavy duty double-sided tape to attach the SD Extension Cable 153 | to the top of the Pi enclosure. If the ribbon cable is too long, fold the 154 | ribbon cable in place using a dab of hot glue 155 | 1) Install the USB Audio devices into the bottom USB ports of the Pi 156 | 1) Use hot glue or heavy duty double-sided tape to attach the Pi to the top of 157 | the battery pack. If there are charge indicator lights or power buttons, try 158 | not to obstruct them 159 | 1) Plug the Micro USB Cable into the Micro USB Power Switch. Plug the Male side 160 | of the Micro USB Power Switch into the Pi's Power port. 161 | 1) Route the Micro USB Power Switch cable under the USB Audio devices so that 162 | they are wedged between the battery pack and the USB Audio device dongles. 163 | Hot glue the cable to the battery pack and USB Audio devices to to prevent 164 | them from being bent or damaged, taking care that the USB cable is not 165 | pushing them above horizontal. 166 | 167 | ![Bottom](images/back_cable_route.jpg) 168 | 1) Use heavy duty double-sided tape or hot glue to attach the power switch to 169 | the side of the battery 170 | 1) Hot glue the audio connectors from the USB Audio devices to the sides of the 171 | Pi enclosure. As cables will be plugged and unplugged into these connectors, 172 | ensure you use plenty of glue to hold the connectors firmly in place 173 | 1) Plug the USB A side of the cable into the highest power outlet of the battery 174 | pack 175 | 1) Label the USB Audio Devices once you have gone through the configuration 176 | process and know which one is the headset device and which is the radio 177 | device 178 | 179 | ## Programming ## 180 | 181 | 1. Download the release_raspberrpi.zip 182 | [release](https://github.com/aarmono/crypto_transceiver_buildroot/releases) 183 | for your model of Raspberry Pi. This is a heavily customized version of the 184 | Linux software that normally runs on a Raspberry Pi and will *not* run 185 | anything else but the barebones software necessary to run the 186 | crypto_transceiver software. *Note:* you only need to flash the SD card once. 187 | For subsequent firmware updates you only need to use the zImage file 188 | 1. Unzip the release_raspberrypi.zip. You should then have a file named sdcard.img 189 | 1. I recommend using [balenaEtcher](https://etcher.balena.io/) to flash the image 190 | onto the SD Card. Install the software and follow the prompts, selecting the 191 | sdcard.img file when asked to supply an image to write to the SD Card. 192 | 193 | ## First Time Boot ## 194 | 195 | There still will need to be some configuration which needs to be performed 196 | on the device the first time it is powered on. To do this, ensure a programmed 197 | SD card with key is installed in the Raspberry Pi, both audio devices are plugged 198 | into their own USB ports, a monitor is connected to the Raspberry Pi through the 199 | HDMI connector, and a keyboard is connected to a USB port. 200 | 201 | Power on the device. After a few seconds, the boot process should complete; and 202 | you should see a configuration interface displayed on your screen. 203 | 204 | ![Main Menu](images/broadcast_tts.png) 205 | 206 | You will first need to assign each USB audio device as either the Headset device 207 | or the Radio device. To do this: 208 | 209 | 1. Highlight "Configuration Options" and press Enter 210 | 211 | ![Configuration Options](images/main_configure.png) 212 | 1. Highlight "Configure Hardware" and press Enter 213 | 214 | ![Configure Hardware](images/configure_hardware.png) 215 | 1. Highlight "Assign Audio Devices" and press Enter 216 | 217 | ![Assign Audio Devices](images/hardware_assign.png) 218 | 1. While facing the USB ports of the Pi, use the arrow keys to select which port 219 | the audio device you wish to use for the Headset is connected to. 220 | 221 | ![Highlight Headset](images/assign_headset_highlight.png) 222 | 1. Confirm your choice by pressing Spacebar. The selection should now have a star 223 | next to it. Then press Enter 224 | 225 | ![Select Headset](images/assign_headset_select.png) 226 | 1. Use the arow keys to select which port the audio device you wish to use for the 227 | Radio is connected to. 228 | 229 | ![Highlight Radio](images/assign_radio_highlight.png) 230 | 1. Confirm your choice by pressing Spacebar. The selection should now have a star 231 | next to it. Then press Enter. 232 | 233 | ![Select Radio](images/assign_radio_select.png) 234 | 235 | Next you will need to adjust the audio settings for the Headset and Radio devices. 236 | To do this: 237 | 238 | 1. Highlight "Adjust Headset Volume" and press Enter. A configuration screen will 239 | appear. 240 | 241 | ![Configure Headset](images/configure_headset.png) 242 | 1. The following are the configuration settings I use. Navigate between settings 243 | by pressing the Left and Right arrow keys. The "Mic" setting that is set to 244 | 0 appears to be some sort of sidetone, so I always turn it off. Auto Gain 245 | Control can be toggled by highlighting it with the arrow keys and pressing "m". 246 | Additional help is available by pressing F1 247 | 248 | ![Headset Settings](images/headset_settings.png) 249 | 1. When the settings are set as desired, press Escape to exit 250 | 1. Highlight "Adjust Radio Volume" and press Enter. A configuration screen will 251 | appear. 252 | 253 | ![Configure Radio](images/configure_radio.png) 254 | 1. The following are the configuration settings I use. Navigate between settings 255 | by pressing the Left and Right arrow keys. As above, I turn off the sidetone. 256 | It is also important on the Radio device that Auto Gain Control be turned Off. 257 | If the settings are too high the signal can become clipped/distorted. 258 | 259 | ![Radio Settings](images/radio_settings.png) 260 | 1. When the settings are set as desired, press Escape to exit 261 | 262 | If you have not already done so, create an encryption key by following the 263 | "Generating and Saving a Key" step above. You can also adjust other settings 264 | as desired. When you have finished, select "Save Current Settings to SD Card". 265 | 266 | ![Save Settings](images/save_settings.png) 267 | 268 | If this is successful, you should see a messsage to that effect. 269 | 270 | ![Settings Saved](images/settings_saved.png) 271 | 272 | ## Generating Keys ## 273 | 274 | 1. Highlight "Configuration Options" and press Enter 275 | 276 | ![Configuration Options](images/main_configure.png) 277 | 1. Highlight "Configure Encryption" and press Enter 278 | 279 | ![Configure Encryption](images/config_encryption.png) 280 | 1. Highlight "Generate Encryption Keys" and press Enter 281 | 282 | ![Generate Keys](images/encrypt_generate.png) 283 | 1. Generate as many keys as desired by selecting the desired 284 | Key Slot and pressing Spacebar. 285 | 286 | ![Key Create](images/generate_keys.png) 287 | 1. When finished, press Enter. A notification indicating keys 288 | have been generated will be shown 289 | 290 | ![Keys Created](images/keys_generated.png) 291 | 292 | ## Advanced Configuration ## 293 | 294 | ![Default Pinout](images/default_pinout.png) 295 | 296 | Some functions can be performed using buttons connected to the Pi GPIO header: 297 | 298 | * Headset volume 299 | * Plain/Secure toggle 300 | * Key Load 301 | * Key Select 302 | * Push to Talk 303 | * TTS Alert Broadcasts 304 | 305 | The default pin assignments are listed in the diagram above. All input pins 306 | default to Active Low with the internal pull-up resistor enabled. All output 307 | pins default to Active Low, open drain. 308 | 309 | ### Configure Push To Talk ### 310 | 311 | Push to Talk is the only I/O that needs to be enabled. 312 | 313 | 1. Highlight "Configuration Options" and press Enter 314 | 315 | ![Configuration Options](images/main_configure.png) 316 | 1. Highlight "Configure Hardware" and press Enter 317 | 318 | ![Configure Hardware](images/configure_hardware.png) 319 | 1. Highlight "Configure PTT GPIO" and press Enter 320 | 321 | ![Configure PTT](images/configure_ptt.png) 322 | 1. Highlight "Enable PTT" and press Enter 323 | 324 | ![Enable PTT](images/enable_ptt.png) 325 | 1. Use the arow keys to select "On" 326 | 327 | ![Highlight On](images/highlight_ptt.png) 328 | 1. Confirm your choice by pressing Spacebar. The selection should now have a 329 | star next to it. Then press Enter 330 | 331 | ![Select On](images/select_ptt.png) 332 | 333 | ### Configure TTS Alert Broadcasts ### 334 | 335 | The software has the ability to broadcast two pre-configured messages as 336 | Text To Speech Alerts using the Console Interface or the keypad. To 337 | Configure these: 338 | 339 | 1. Highlight "Configuration Options" and press Enter 340 | 341 | ![Configuration Options](images/main_configure.png) 342 | 1. Highlight "Configure TTS Alert Broadcasts" and press Enter 343 | 344 | ![Configure TTS](images/configure_tts.png) 345 | 1. Hightlight "Configure Primary TTS Alert" and press Enter 346 | 347 | ![Configure Primary](images/config_primary.png) 348 | 1. Using the Keyboard, enter a message and press Enter. Messages 349 | cannot exceed 160 characters in length 350 | 351 | ![Primary Input](images/input_primary.png) 352 | 1. Hightlight "Configure Secondary TTS Alert" and press Enter 353 | 354 | ![Configure Primary](images/config_primary.png) 355 | 1. Using the Keyboard, enter a message and press Enter. Messages 356 | cannot exceed 160 characters in length 357 | 358 | ![Secondary Input](images/input_secondary.png) 359 | 360 | ## Device Deployment ## 361 | 362 | The Console Interface has capabilities for creating duplicate SD Cards with 363 | the same hardware, firmware, and radio configuration, in scenarios where 364 | multiple devices will be deployed to the field. These devices are "locked", 365 | meaning the user is prevented from making changes to the configuration or 366 | (optionally) accessing the Console Interface at all. 367 | 368 | 1. Highlight "Configuration Options" and press Enter 369 | 370 | ![Configuration Options](images/main_configure.png) 371 | 1. Highlight "Deploy Images" and press Enter 372 | 373 | ![Config Deploy](images/config_deploy.png) 374 | 1. You will see a number of options for images to deploy onto an SD Card 375 | or USB Drive. "Locked" Device images are written so that the user cannot 376 | change system configuration, and the SD Card is then permanently made 377 | read-only to prevent tampering. "Handheld" images additionally lock 378 | the display entirely so it cannot be used. This option is recommended 379 | when deploying devices which will not have a screen connected. 380 | 381 | ![Deployment Options](images/deploy_options.png) 382 | 383 | Locked Device images with keys are only recommended in situations where 384 | a single SD Card is used to initialize multiple devices which are deployed 385 | without an SD Card installed. Ideally the SD Card is destroyed after 386 | the devices are initialized. In this configuration the device is rendered 387 | inoperable by disconnecting power. 388 | 389 | Locked Device images without keys are recommended in situations where 390 | each device is deployed with in SD Card installed. Keys are then loaded 391 | from a "Keys Only" SD Card or USB Drive, and that Card/Drive is removed 392 | from the device prior to deployment. In this configuration key zeroize 393 | is accomplished by disconnecting power, and when power is reconnected 394 | the device can still function in an insecure mode. 395 | 396 | "Keys Only" images will write just the encryption keys to either an SD 397 | Card or USB Drive. As mentioned above, they are designed to work in 398 | combination with Locked Device images without keys. These cards/drives 399 | are not write-protected after the process completes, and it is recommended 400 | that after keys are loaded onto devices the media used for key storage be 401 | destroyed or (if the storage media supports it) securely erased. 402 | 1. Once an option is selected, you will be prompted to insert storage media. 403 | Locked Device images can only be written to SD Cards. 404 | 405 | ![Insert Storage](images/insert_storage.png) 406 | 407 | Keys can be written to either an SD Card or a USB Drive. If both a USB Drive 408 | and SD Card is installed in the system, the USB Drive will be used. Select 409 | "Yes" once you have done so to start the process. 410 | 411 | ![Insert USB Storage](images/insert_storage_usb.png) 412 | 1. Once you have selected "Yes", the image writing process will start. At the 413 | end you should see a message that says "Success". 414 | 415 | ![Write Success](images/write_success.png) 416 | 1. Once you see "Success", if you do not wish to write protect the SD Card you 417 | can remove it. If the SD Card is installed in the system once you press "OK", 418 | it will be write-protected. You will see one of three messaages: 419 | 420 | * "Write Protect Succeeded": The write protection process completed successfully, 421 | and the data on the SD Card can no longer be modified. 422 | * "Could Not Write Protect": The SD Card does not support write protection (or you 423 | removed it from the device prior to pressing "OK", and the card is *not* write 424 | protected. 425 | * "Write Protect Doesn't Work": The SD Card claimed to write protect the drive, 426 | but the software was still able to write to it. If this happens you will find 427 | a file named "BAD_WP" if you read that SD Card using a PC. 428 | 1. Once you have selected "OK" you will be prompted to copy the image to another 429 | storage media by pressing "Yes" or stop the deployment process by pressing "No". 430 | 431 | ![Insert Storage](images/insert_storage.png) 432 | 433 | ## Broadcasting TTS Alerts ## 434 | 435 | The system has the ability to broadcast two pre-configured Text To Speech Alerts, 436 | and custom Alerts can be broadcast using the Console Interface. 437 | 438 | ### Using The Console Interface ### 439 | 440 | Follow the steps below to use the "TTS Alert Broadcast" feature with the Console Interface: 441 | 442 | 1. Highlight the "Broadcast TTS Alert" option and press Enter 443 | 444 | ![Broadcast TTS](images/broadcast_tts.png) 445 | 1. Using the arrow keys, highlight either the Primary, Secondary, or Custom Alert option 446 | 447 | ![Alert Hightlight](images/tts_highlight.png) 448 | 1. Select the option by pressing Spacebar 449 | 450 | ![Alert Select](images/tts_select.png) 451 | 1. Press Enter to broadcast the Alert. You will hear it play over the headset. 452 | 1. If you select "Custom" Alert, then an input box will appear prompting you to 453 | enter the message to be broadcast 454 | 455 | ![Custom Blank](images/custom_blank.png) 456 | 1. Type the message using the keyboard, then press Enter to broadcast it. You 457 | will hear it play over the headset 458 | 459 | ![Custom Alert](images/custom_alert.png) 460 | 461 | ### Using The Keypad ### 462 | 463 | The keypad has two multi-function "action" buttons: the "primary" action button 464 | and the "secondary" action button. A triple-press of either action button will 465 | activate the primary TTS alert broadcast or the secondary TTS alert broadcast. 466 | 467 | ## Key Select ## 468 | 469 | ### Using The Console Interface ### 470 | 471 | Follow the steps below to use the "Key Select" feature with the Console Interface: 472 | 473 | 1. When keys are loaded into the device a "Select Active Key" option appears 474 | in the Main Menu. Highlight "Select Active Key" and press Enter 475 | 476 | ![Config Select](images/config_select.png) 477 | 1. Use the arrow keys to highlight the key you wish to select as the Active Key 478 | 479 | ![Highlight Key](images/highlight_key.png) 480 | 1. Select the key by pressing Spacebar. An asterisk will appear net to the Key 481 | Slot. 482 | 483 | ![Select Key](images/select_key.png) 484 | 1. Confirm your choice by pressing Enter. A confirmation chime will be played over 485 | the headset 486 | 487 | 488 | ### Using The Keypad ### 489 | 490 | Follow the steps below to use the "Key Select" feature with the kaypad: 491 | 492 | 1. Press and hold the primary action button. You will hear "Key Select" over 493 | the headset 494 | 1. With the primary action button held down, press and hold the secondary 495 | action button. You will hear the index of the key currently in use. 496 | 1. With the primary action button held down, release the secondary action 497 | to go the next key slot index with a key. 498 | 1. With the primary action button held down, press and hold the secondary 499 | action button. You will hear the index of the currently selected key. 500 | 1. Continue this press and release until you hear the index of the key you 501 | wish to use. 502 | 1. With both the primary and secondary action buttons held down, release the 503 | primary action button to update the key currently in use. You will hear 504 | a confirmation notification over the headset. 505 | 1. Release the secondary action button. 506 | 507 | While the primary action button is held down and the secondary action button is 508 | released, release the primary action button to cancel the key selection process. 509 | 510 | ## Key Load ## 511 | 512 | The Key Load feature will load keys into the device under the following conditions: 513 | 514 | * Keys have not already been loaded into the device 515 | * There is a USB Drive or SD Card containing keys installed in the device 516 | 517 | When keys are loaded into the device, the Key Index will be set to the first Slot 518 | containing a key 519 | 520 | ### Using The Console Interface ### 521 | 522 | Follow the steps below to use the "Key Load" feature with the Console Interface: 523 | 524 | 1. Ensure an SD Card or USB Drive containing keys is installed in the device. 525 | 1. When no keys are loaded into the device a "Load Keys" option appears 526 | in the Main Menu. Highlight "Load Keys" and press Enter 527 | 528 | ![Config Load](images/config_load.png) 529 | 1. If the keys were loaded from the SD Card or USB Drive, a message box will be 530 | displayed indicating keys were loaded, and a confirmation chime will be played 531 | over the headset 532 | 533 | ![Keys Loaded](images/keys_loaded.png) 534 | 535 | ### Using The Keypad ### 536 | 537 | Follow the steps below to use the "Key Load" feature with the keypad: 538 | 539 | 1. Ensure an SD Card or USB Drive containing keys is installed in the device. 540 | 1. Press and hold the secondary action button. You will hear "Key Load" over 541 | the headset. 542 | 1. With the secondary action button held down, press and hold the primary 543 | action button. If there is a card/drive with keys and the device is 544 | ready to load them (see above conditions), you will hear "Ready to Load" 545 | over the headset. Otherwise you will hear "Cannot Load". 546 | 1. With both the primary and secondary action buttons held down, release the 547 | secondary action button to Load the keys. You will hear a confirmation 548 | notification over the headset confirming keys have been loaded and the 549 | Index of the Key Slot currently in use. 550 | 1. Release the primary action button. 551 | 1. Remove the SD card or USB drive containing keys from the device. 552 | 553 | While the secondary action button is held down and the primary action button is 554 | released, release the secondary action button to cancel the key selection process. 555 | -------------------------------------------------------------------------------- /images/Decryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/Decryption.png -------------------------------------------------------------------------------- /images/Encryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/Encryption.png -------------------------------------------------------------------------------- /images/assign_headset_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/assign_headset_highlight.png -------------------------------------------------------------------------------- /images/assign_headset_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/assign_headset_select.png -------------------------------------------------------------------------------- /images/assign_radio_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/assign_radio_highlight.png -------------------------------------------------------------------------------- /images/assign_radio_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/assign_radio_select.png -------------------------------------------------------------------------------- /images/back_cable_route.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/back_cable_route.jpg -------------------------------------------------------------------------------- /images/broadcast_tts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/broadcast_tts.png -------------------------------------------------------------------------------- /images/config_deploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/config_deploy.png -------------------------------------------------------------------------------- /images/config_encryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/config_encryption.png -------------------------------------------------------------------------------- /images/config_load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/config_load.png -------------------------------------------------------------------------------- /images/config_primary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/config_primary.png -------------------------------------------------------------------------------- /images/config_secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/config_secondary.png -------------------------------------------------------------------------------- /images/config_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/config_select.png -------------------------------------------------------------------------------- /images/configure_hardware.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/configure_hardware.png -------------------------------------------------------------------------------- /images/configure_headset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/configure_headset.png -------------------------------------------------------------------------------- /images/configure_ptt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/configure_ptt.png -------------------------------------------------------------------------------- /images/configure_radio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/configure_radio.png -------------------------------------------------------------------------------- /images/configure_tts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/configure_tts.png -------------------------------------------------------------------------------- /images/custom_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/custom_alert.png -------------------------------------------------------------------------------- /images/custom_blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/custom_blank.png -------------------------------------------------------------------------------- /images/default_pinout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/default_pinout.png -------------------------------------------------------------------------------- /images/deploy_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/deploy_options.png -------------------------------------------------------------------------------- /images/enable_ptt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/enable_ptt.png -------------------------------------------------------------------------------- /images/encrypt_generate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/encrypt_generate.png -------------------------------------------------------------------------------- /images/generate_keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/generate_keys.png -------------------------------------------------------------------------------- /images/hardware_assign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/hardware_assign.png -------------------------------------------------------------------------------- /images/headset_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/headset_settings.png -------------------------------------------------------------------------------- /images/highlight_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/highlight_key.png -------------------------------------------------------------------------------- /images/highlight_ptt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/highlight_ptt.png -------------------------------------------------------------------------------- /images/input_primary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/input_primary.png -------------------------------------------------------------------------------- /images/input_secondary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/input_secondary.png -------------------------------------------------------------------------------- /images/insert_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/insert_storage.png -------------------------------------------------------------------------------- /images/insert_storage_usb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/insert_storage_usb.png -------------------------------------------------------------------------------- /images/keys_generated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/keys_generated.png -------------------------------------------------------------------------------- /images/keys_loaded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/keys_loaded.png -------------------------------------------------------------------------------- /images/main_configure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/main_configure.png -------------------------------------------------------------------------------- /images/radio_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/radio_settings.png -------------------------------------------------------------------------------- /images/save_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/save_settings.png -------------------------------------------------------------------------------- /images/select_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/select_key.png -------------------------------------------------------------------------------- /images/select_ptt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/select_ptt.png -------------------------------------------------------------------------------- /images/settings_saved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/settings_saved.png -------------------------------------------------------------------------------- /images/side_view.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/side_view.jpg -------------------------------------------------------------------------------- /images/tts_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/tts_highlight.png -------------------------------------------------------------------------------- /images/tts_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/tts_select.png -------------------------------------------------------------------------------- /images/usb_audio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/usb_audio.jpg -------------------------------------------------------------------------------- /images/write_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aarmono/crypto_transceiver_instructions/95d7cc36b3389cff7525bb2876178d8ba5ae8f0b/images/write_success.png --------------------------------------------------------------------------------