├── .gitignore ├── .gitattributes ├── .vscode ├── extensions.json └── settings.json ├── shared ├── content │ ├── assets │ │ ├── favicon.png │ │ ├── home │ │ │ ├── nfc.JPG │ │ │ ├── gpio.JPG │ │ │ ├── rfid.jpg │ │ │ ├── sub1.jpg │ │ │ ├── ibutton.JPG │ │ │ ├── infrared.jpg │ │ │ ├── quickstart.jpg │ │ │ ├── cover-usage.jpg │ │ │ └── cover-development.jpg │ │ ├── how-to-dfu.mp4 │ │ ├── firmware │ │ │ ├── vcp.png │ │ │ ├── cli-prompt.png │ │ │ └── vcp-usbmodem.png │ │ ├── how-to-reboot.mp4 │ │ ├── how-to-power-on.mp4 │ │ ├── applications │ │ │ ├── power-charging-on.png │ │ │ └── power-charging-off.png │ │ ├── flashing-firmware │ │ │ ├── dfuse-target.png │ │ │ └── dfuse-upgrade.png │ │ └── logo.svg │ ├── javascripts │ │ └── extra.js │ └── stylesheets │ │ └── home.css ├── overrides │ ├── home.html │ ├── icons │ │ └── flp │ │ │ └── btn │ │ │ ├── down.svg │ │ │ ├── left.svg │ │ │ ├── right.svg │ │ │ ├── up.svg │ │ │ ├── ok.svg │ │ │ └── back.svg │ ├── partials │ │ └── integrations │ │ │ └── disqus.html │ └── main.html ├── main.py └── mkdocs.yml ├── en ├── content │ ├── assets │ │ └── flashing-firmware │ │ │ ├── win-device-manager.png │ │ │ ├── win-driver-update-2.png │ │ │ ├── win-driver-update.png │ │ │ └── win-device-manager-updated.png │ ├── usage │ │ ├── general │ │ │ ├── first-boot.md │ │ │ ├── rebooting.md │ │ │ └── flashing-firmware.md │ │ └── applications │ │ │ └── power.md │ ├── index.md.save │ ├── index.md │ └── development │ │ ├── mechanics │ │ └── blueprints.md │ │ ├── hardware │ │ ├── devboard-stlinkV3.md │ │ └── schematic.md │ │ └── firmware │ │ └── cli.md └── mkdocs.yml ├── ru ├── content │ ├── assets │ │ └── flashing-firmware │ │ │ ├── win-device-manager.png │ │ │ ├── win-driver-update-2.png │ │ │ ├── win-driver-update.png │ │ │ └── win-device-manager-updated.png │ ├── usage │ │ ├── general │ │ │ ├── first-boot.md │ │ │ ├── rebooting.md │ │ │ └── flashing-firmware.md │ │ └── applications │ │ │ └── power.md │ ├── index.md │ └── development │ │ ├── mechanics │ │ └── blueprints.md │ │ ├── hardware │ │ ├── devboard-stlinkV3.md │ │ └── schematic.md │ │ └── firmware │ │ └── cli.md └── mkdocs.yml ├── .github └── workflows │ ├── build-pr.yml │ └── deploy.yml ├── Dockerfile ├── nginx.conf ├── README.md └── serve.py /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | .DS_Store 3 | .idea 4 | site/ 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "zaaack.markdown-editor" 4 | ] 5 | } -------------------------------------------------------------------------------- /shared/content/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/favicon.png -------------------------------------------------------------------------------- /shared/content/assets/home/nfc.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/nfc.JPG -------------------------------------------------------------------------------- /shared/content/assets/home/gpio.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/gpio.JPG -------------------------------------------------------------------------------- /shared/content/assets/home/rfid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/rfid.jpg -------------------------------------------------------------------------------- /shared/content/assets/home/sub1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/sub1.jpg -------------------------------------------------------------------------------- /shared/content/assets/how-to-dfu.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/how-to-dfu.mp4 -------------------------------------------------------------------------------- /shared/content/assets/firmware/vcp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/firmware/vcp.png -------------------------------------------------------------------------------- /shared/content/assets/home/ibutton.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/ibutton.JPG -------------------------------------------------------------------------------- /shared/content/assets/home/infrared.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/infrared.jpg -------------------------------------------------------------------------------- /shared/content/assets/how-to-reboot.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/how-to-reboot.mp4 -------------------------------------------------------------------------------- /shared/content/assets/home/quickstart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/quickstart.jpg -------------------------------------------------------------------------------- /shared/content/assets/how-to-power-on.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/how-to-power-on.mp4 -------------------------------------------------------------------------------- /shared/content/assets/home/cover-usage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/cover-usage.jpg -------------------------------------------------------------------------------- /shared/content/assets/firmware/cli-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/firmware/cli-prompt.png -------------------------------------------------------------------------------- /shared/overrides/home.html: -------------------------------------------------------------------------------- 1 | {% extends "main.html" %} 2 | 3 | 4 | {% block content %} 5 | {{ page.content }} 6 | {% endblock %} -------------------------------------------------------------------------------- /shared/content/assets/firmware/vcp-usbmodem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/firmware/vcp-usbmodem.png -------------------------------------------------------------------------------- /shared/content/assets/home/cover-development.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/home/cover-development.jpg -------------------------------------------------------------------------------- /shared/content/assets/applications/power-charging-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/applications/power-charging-on.png -------------------------------------------------------------------------------- /shared/content/assets/flashing-firmware/dfuse-target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/flashing-firmware/dfuse-target.png -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "markdown-editor.useVscodeThemeColor": false, 3 | "markdown-editor.imageSaveFolder": "${projectRoot}/shared/content/assets/images" 4 | } -------------------------------------------------------------------------------- /en/content/assets/flashing-firmware/win-device-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/en/content/assets/flashing-firmware/win-device-manager.png -------------------------------------------------------------------------------- /en/content/assets/flashing-firmware/win-driver-update-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/en/content/assets/flashing-firmware/win-driver-update-2.png -------------------------------------------------------------------------------- /en/content/assets/flashing-firmware/win-driver-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/en/content/assets/flashing-firmware/win-driver-update.png -------------------------------------------------------------------------------- /ru/content/assets/flashing-firmware/win-device-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/ru/content/assets/flashing-firmware/win-device-manager.png -------------------------------------------------------------------------------- /ru/content/assets/flashing-firmware/win-driver-update-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/ru/content/assets/flashing-firmware/win-driver-update-2.png -------------------------------------------------------------------------------- /ru/content/assets/flashing-firmware/win-driver-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/ru/content/assets/flashing-firmware/win-driver-update.png -------------------------------------------------------------------------------- /shared/content/assets/applications/power-charging-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/applications/power-charging-off.png -------------------------------------------------------------------------------- /shared/content/assets/flashing-firmware/dfuse-upgrade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/shared/content/assets/flashing-firmware/dfuse-upgrade.png -------------------------------------------------------------------------------- /en/content/assets/flashing-firmware/win-device-manager-updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/en/content/assets/flashing-firmware/win-device-manager-updated.png -------------------------------------------------------------------------------- /ru/content/assets/flashing-firmware/win-device-manager-updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flipperdevices/docs/HEAD/ru/content/assets/flashing-firmware/win-device-manager-updated.png -------------------------------------------------------------------------------- /en/content/usage/general/first-boot.md: -------------------------------------------------------------------------------- 1 | Flipper Zero comes in transportation mode, meaning it's turned off. 2 | 3 | {{ gif("assets/how-to-power-on.mp4") }} 4 | 5 | Press and hold :flp-btn-back: for a second to turn it on. -------------------------------------------------------------------------------- /en/content/usage/general/rebooting.md: -------------------------------------------------------------------------------- 1 | If your Flipper Zero hangs, you can always restart it with a simple shortcut. 2 | 3 | {{ gif("assets/how-to-reboot.mp4") }} 4 | 5 | Press and hold :flp-btn-left: + :flp-btn-back: for a second to reboot it. -------------------------------------------------------------------------------- /ru/content/usage/general/first-boot.md: -------------------------------------------------------------------------------- 1 | Из коробки Flipper Zero находится в режиме транспортировки, то есть выключен. 2 | 3 | {{ gif("assets/how-to-power-on.mp4") }} 4 | 5 | Нажмите и удержите :flp-btn-back: на секунду, чтобы включить устройство. -------------------------------------------------------------------------------- /en/content/index.md.save: -------------------------------------------------------------------------------- 1 | --- 2 | template: home.html 3 | hide: 4 | - navigation 5 | - toc 6 | --- 7 | 8 | Welcome to the Flipper Zero Docsss. 9 | 10 | 11 | The main page is still in a WIP state. 12 | 13 | Use tabs and sidebar to navigate. 14 | -------------------------------------------------------------------------------- /ru/content/usage/general/rebooting.md: -------------------------------------------------------------------------------- 1 | Если ваш Flipper Zero зависнет, вы всегда можете перезагрузить его нажатием простой комбинации кнопок. 2 | 3 | {{ gif("assets/how-to-reboot.mp4") }} 4 | 5 | Нажмите и удержите :flp-btn-left: + :flp-btn-back: на секунду, чтобы перезагрузить устройство. -------------------------------------------------------------------------------- /shared/overrides/icons/flp/btn/down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /shared/overrides/icons/flp/btn/left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /shared/overrides/icons/flp/btn/right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /shared/overrides/icons/flp/btn/up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /shared/content/javascripts/extra.js: -------------------------------------------------------------------------------- 1 | let basePath = document.querySelector('.md-logo').href; 2 | let documentPath = document.baseURI.replace(basePath, ''); 3 | 4 | if (documentPath) { 5 | document.querySelectorAll('.md-select__link').forEach(function(selector) { 6 | let url = new URL(selector.href + documentPath, document.baseURI).href; 7 | fetch(url, { 8 | method: 'HEAD' 9 | }) 10 | .then(function(response) { 11 | if (response.status === 200) { 12 | selector.href += documentPath; 13 | } 14 | }); 15 | }); 16 | } -------------------------------------------------------------------------------- /shared/overrides/icons/flp/btn/ok.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ru/content/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | template: home.html 3 | hide: 4 | - navigation 5 | - toc 6 | --- 7 | 27 | -------------------------------------------------------------------------------- /en/content/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | template: home.html 3 | hide: 4 | - navigation 5 | - toc 6 | --- 7 | 8 | 28 | -------------------------------------------------------------------------------- /en/content/development/mechanics/blueprints.md: -------------------------------------------------------------------------------- 1 | # Mechanical Blueprints 2 | ## Uncased External Module 3 | 4 | ![](https://cdn.flipperzero.one/FlipperZero-ext-module-secA.png) 5 | 6 | ![](https://cdn.flipperzero.one/ds3m4.png) 7 | 8 | ![FlipperZero External Module NoCase PLS Headers](https://cdn.flipperzero.one/FlipperZero-External-Module-No-Case-PLS-Headers.png) 9 | 10 | 11 | ![Flipper Zero External Module No Case](https://cdn.flipperzero.one/Flipper-Zero-Uncased-Ext-module-Drawing.png) 12 | 13 | 14 | [Flipper Zero Uncased Ext. Module Drawing.pdf](https://cdn.flipperzero.one/Flipper-Zero-Uncased-Ext-module-Drawing.pdf) -------------------------------------------------------------------------------- /ru/content/development/mechanics/blueprints.md: -------------------------------------------------------------------------------- 1 | # Механические чертежи 2 | ## Внешний модуль без корпуса 3 | 4 | ![](https://cdn.flipperzero.one/FlipperZero-ext-module-secA.png) 5 | 6 | ![](https://cdn.flipperzero.one/ds3m4.png) 7 | 8 | ![FlipperZero External Module NoCase PLS Headers](https://cdn.flipperzero.one/FlipperZero-External-Module-No-Case-PLS-Headers.png) 9 | 10 | 11 | ![Flipper Zero External Module No Case](https://cdn.flipperzero.one/Flipper-Zero-Uncased-Ext-module-Drawing.png) 12 | 13 | 14 | [Flipper Zero Uncased Ext. Module Drawing.pdf](https://cdn.flipperzero.one/Flipper-Zero-Uncased-Ext-module-Drawing.pdf) -------------------------------------------------------------------------------- /shared/overrides/icons/flp/btn/back.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/workflows/build-pr.yml: -------------------------------------------------------------------------------- 1 | name: Build PR 2 | 3 | on: 4 | pull_request: 5 | branches: master 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout code 12 | uses: actions/checkout@v2 13 | with: 14 | fetch-depth: 0 15 | - name: Set up QEMU 16 | uses: docker/setup-qemu-action@v1 17 | - name: Set up Docker Buildx 18 | uses: docker/setup-buildx-action@v1 19 | - name: Login to GitHub Container Registry 20 | uses: docker/login-action@v1 21 | with: 22 | registry: ghcr.io 23 | username: ${{ secrets.CR_USERNAME }} 24 | password: ${{ secrets.CR_PAT }} 25 | - name: Build 26 | id: docker_build 27 | uses: docker/build-push-action@v2 28 | with: 29 | context: . 30 | tags: docs 31 | -------------------------------------------------------------------------------- /en/mkdocs.yml: -------------------------------------------------------------------------------- 1 | nav: 2 | - Home: index.md 3 | - Usage: 4 | - General: 5 | - First Boot: usage/general/first-boot.md 6 | - Rebooting: usage/general/rebooting.md 7 | - Flashing Firmware: usage/general/flashing-firmware.md 8 | - Applications: 9 | - Power: usage/applications/power.md 10 | - Development: 11 | - Firmware: 12 | - Command Line Interface: development/firmware/cli.md 13 | - Hardware: 14 | - Circuit Diagrams: development/hardware/schematic.md 15 | - Developer Board: development/hardware/devboard-stlinkV3.md 16 | - Mechanics: 17 | - Blueprints: development/mechanics/blueprints.md 18 | 19 | site_name: Flipper Zero — Documentation 20 | site_url: https://docs.flipperzero.one/en/ 21 | edit_uri: https://github.com/Flipper-Zero/docs/edit/master/en/content/ 22 | 23 | extra: 24 | remark: docs-en 25 | 26 | theme: 27 | language: en 28 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | 3 | on: 4 | push: 5 | branches: master 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout code 12 | uses: actions/checkout@v2 13 | with: 14 | fetch-depth: 0 15 | - name: Set up QEMU 16 | uses: docker/setup-qemu-action@v1 17 | - name: Set up Docker Buildx 18 | uses: docker/setup-buildx-action@v1 19 | - name: Login to GitHub Container Registry 20 | uses: docker/login-action@v1 21 | with: 22 | registry: ghcr.io 23 | username: ${{ secrets.CR_USERNAME }} 24 | password: ${{ secrets.CR_PAT }} 25 | - name: Build and push 26 | id: docker_build 27 | uses: docker/build-push-action@v2 28 | with: 29 | context: . 30 | push: true 31 | tags: ghcr.io/flipper-zero/docs:latest 32 | - name: Image digest 33 | run: echo ${{ steps.docker_build.outputs.digest }} -------------------------------------------------------------------------------- /shared/overrides/partials/integrations/disqus.html: -------------------------------------------------------------------------------- 1 | {% set remark = config.extra.remark %} 2 | {% if page and page.meta and page.meta.remark is string %} 3 | {% set remark = page.meta.remark %} 4 | {% endif %} 5 | {% if not page.is_homepage and remark %} 6 |

{{ lang.t("meta.comments") }}

7 |
8 | 27 | {% endif %} -------------------------------------------------------------------------------- /ru/mkdocs.yml: -------------------------------------------------------------------------------- 1 | nav: 2 | - Главная: index.md 3 | - Использование: 4 | - Основное: 5 | - Первое включение: usage/general/first-boot.md 6 | - Перезагрузка: usage/general/rebooting.md 7 | - Обновление прошивки: usage/general/flashing-firmware.md 8 | - Приложения: 9 | - Power: usage/applications/power.md 10 | - Рaзработка: 11 | - Прошивка: 12 | - Командная строка: development/firmware/cli.md 13 | - Железо: 14 | - Принципиальные схемы: development/hardware/schematic.md 15 | - Отладочная плата: development/hardware/devboard-stlinkV3.md 16 | - Механика: 17 | - Чертежи: development/mechanics/blueprints.md 18 | 19 | 20 | site_name: Flipper Zero — Документация 21 | site_url: https://docs.flipperzero.one/ru/ 22 | edit_uri: https://github.com/Flipper-Zero/docs/edit/master/ru/content/ 23 | 24 | extra: 25 | remark: docs-ru 26 | 27 | copyright: Copyright © 2021 Flipper Devices Inc. 28 | 29 | markdown_extensions: 30 | - toc: 31 | permalink: true 32 | slugify: !!python/name:pymdownx.slugs.uslugify 33 | 34 | theme: 35 | language: ru 36 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM squidfunk/mkdocs-material as builder 2 | 3 | RUN apk add yq rsync --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community 4 | 5 | RUN pip install mkdocs-macros-plugin mkdocs-git-revision-date-localized-plugin mkdocs-smart-meta-plugin 6 | 7 | COPY shared /docs/shared 8 | COPY en /docs/en 9 | COPY ru /docs/ru 10 | COPY .git /docs/.git 11 | 12 | WORKDIR /docs/en 13 | RUN rsync -a --exclude mkdocs.yml ../shared/ . && \ 14 | yq eval-all 'select(fileIndex == 0) *d select(fileIndex == 1)' ../shared/mkdocs.yml mkdocs.yml > mkdocs.yml.tmp && \ 15 | rm mkdocs.yml && \ 16 | mv mkdocs.yml.tmp mkdocs.yml 17 | RUN mkdocs build -s 18 | 19 | WORKDIR /docs/ru 20 | RUN rsync -a --exclude mkdocs.yml ../shared/ . && \ 21 | yq eval-all 'select(fileIndex == 0) *d select(fileIndex == 1)' ../shared/mkdocs.yml mkdocs.yml > mkdocs.yml.tmp && \ 22 | rm mkdocs.yml && \ 23 | mv mkdocs.yml.tmp mkdocs.yml 24 | RUN mkdocs build -s 25 | 26 | 27 | FROM nginx:alpine 28 | COPY nginx.conf /etc/nginx/conf.d/default.conf 29 | COPY --from=builder /docs/en/site /usr/share/nginx/html/en 30 | COPY --from=builder /docs/ru/site /usr/share/nginx/html/ru 31 | 32 | 33 | EXPOSE 80 34 | ENTRYPOINT ["nginx", "-g", "daemon off;"] 35 | -------------------------------------------------------------------------------- /nginx.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | 4 | location ~ ^/en(?:/(.*))?$ { 5 | error_page 404 /en/404.html; 6 | root /usr/share/nginx/html; 7 | } 8 | 9 | location ~ ^/ru(?:/(.*))?$ { 10 | error_page 404 /ru/404.html; 11 | root /usr/share/nginx/html; 12 | } 13 | 14 | location = / { 15 | # Set first language in Accept-Language browser header 16 | # accept-language: en,en-US;q=0.8,ja;q=0.6 17 | set $first_language $http_accept_language; 18 | if ($http_accept_language ~* '^(.+?),') { 19 | set $first_language $1; 20 | } 21 | 22 | # Set default language to EN if no cookie 23 | set $language_suffix 'en'; 24 | 25 | if ($first_language ~* 'ru') { 26 | set $language_suffix 'ru'; 27 | } 28 | 29 | # If mkdocs_lang set, use it value as lang suffix 30 | if ($cookie_mkdocs_lang ~* '^([a-z]{2})$'){ 31 | set $language_suffix $1; 32 | } 33 | 34 | # If not english, got to lang specific folder 35 | if ($language_suffix !~* 'en') { 36 | return 302 https://$http_host/$language_suffix$request_uri; 37 | } 38 | 39 | # Else return english page 40 | return 302 https://$http_host/en$request_uri; 41 | } 42 | } -------------------------------------------------------------------------------- /en/content/development/hardware/devboard-stlinkV3.md: -------------------------------------------------------------------------------- 1 | # Developer board with ST-Link V3 2 | 3 | ![Flipper Zero Devboard with ST-Link V3](https://cdn.flipperzero.one/devboard-stlinkv3.png) 4 | 5 | This is a devboard for advanced developers, who need in-circuit debug. It is based on [ST-Link V3 Mini](https://www.st.com/en/development-tools/stlink-v3mini.html), and **differs only in form factor** and ease of connection. Some unused ST-Link and Flipper Zero pins are broken out additionally. 6 | 7 | !!! warning "You do not need this board to update Flipper Zero" 8 | You can update the firmware, develop and upload your own firmware to Flipper Zero via USB without this devboard! It is only needed for in-circuit debug while firmware is running using GDB/OpenOCD/etc. If you don't know exactly how to use it, you don't need this board. 9 | 10 | ## Specifications 11 | 12 | * ST-Link V3 Mini for firmware flashing and in-circuit debug 13 | * Built-in UART to USB, connected to Flipper Zero's UART (GPIO 13, 14) 14 | * Unused Flipper Zero pins are broken out for debug and prototyping 15 | 16 | ## Schematic and BOM 17 | 18 | {{ altium("0ec64b13-433d-419c-8d70-d2e84bef7532") }} 19 | 20 | ## Altium Designer project sources 21 | 22 | [github.com/Flipper-Zero/flipperzero-devboard-stlinkv3](https://github.com/Flipper-Zero/flipperzero-devboard-stlinkv3) 23 | -------------------------------------------------------------------------------- /ru/content/development/hardware/devboard-stlinkV3.md: -------------------------------------------------------------------------------- 1 | # Отладочная плата на базе ST-Link V3 2 | 3 | ![Flipper Zero Devboard with ST-Link V3](https://cdn.flipperzero.one/devboard-stlinkv3.png) 4 | 5 | Отладочная плата для продвинутых разработчиков, которым нужна внутрисхемная отладка своих программ. Построена на базе обычного [ST-Link V3 Mini](https://www.st.com/en/development-tools/stlink-v3mini.html), **отличается только формфактором** и удобством подключения. Дополнительно на плату выведены неиспользуемые интерфейсы ST-Link и GPIO Flipper Zero. 6 | 7 | !!! warning "Отладочная плата не нужна для прошивки Flipper Zero" 8 | Вы можете обновлять прошивку, разрабатывать и загружать свою прошивку во Flipper Zero по USB без отладочной платы! Отладочная плата нужна для внутрисхемной отладки запущенных программ, например через GDB, OpenOCD. Если вы точно не знаете, как ее использовать, эта плата вам не нужна. 9 | 10 | ## Технические характеристики 11 | 12 | * ST-Link V3 Mini для прошивки и внутрисхемной отладки 13 | * Встроенный UART to USB, подключенный к UART Flipper Zero (GPIO 13, 14) 14 | * Выводы неиспользуемых GPIO Flipper Zero для отладки и макетирования 15 | 16 | ## Схема и BOM 17 | 18 | {{ altium("0ec64b13-433d-419c-8d70-d2e84bef7532") }} 19 | 20 | ## Исходники проекта в Altium Designer 21 | 22 | [github.com/Flipper-Zero/flipperzero-devboard-stlinkv3](https://github.com/Flipper-Zero/flipperzero-devboard-stlinkv3) 23 | -------------------------------------------------------------------------------- /shared/overrides/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block extrahead %} 4 | {% set title = config.site_name %} 5 | {% if page and page.meta and page.meta.title %} 6 | {% set title = page.meta.title %} 7 | {% elif page and page.title and not page.is_homepage %} 8 | {% set title = page.title | striptags %} 9 | {% endif %} 10 | 11 | 12 | {% if page and page.meta and page.meta.description %} 13 | {% set description = page.meta.description %} 14 | {% elif page and page.meta and page.meta.smart_description %} 15 | {% set description = page.meta.smart_description %} 16 | {% endif %} 17 | {% if description %} 18 | 19 | {% endif %} 20 | 21 | {% if page and page.meta and page.meta.image %} 22 | {% set image = page.meta.image %} 23 | {% elif page and page.meta and page.meta.smart_image %} 24 | {% set image = page.meta.smart_image %} 25 | {% endif %} 26 | {% if image %} 27 | 28 | {% endif %} 29 | 30 | 31 | 32 | 33 | 34 | {% endblock %} -------------------------------------------------------------------------------- /shared/main.py: -------------------------------------------------------------------------------- 1 | from urllib.parse import urlparse, urljoin 2 | 3 | 4 | def is_absolute(url): 5 | return bool(urlparse(url).netloc) 6 | 7 | 8 | def define_env(env): 9 | "Hook function" 10 | 11 | @env.macro 12 | def gif(url): 13 | if not is_absolute(url): 14 | url = urljoin(env.conf['site_url'], url) 15 | return f'

' 16 | 17 | @env.macro 18 | def video(url): 19 | if not is_absolute(url): 20 | url = urljoin(env.conf['site_url'], url) 21 | return f'

' 22 | 23 | @env.macro 24 | def screenshot(url, width='400px'): 25 | if not is_absolute(url): 26 | url = urljoin(env.conf['site_url'], url) 27 | return f'

' 28 | 29 | @env.macro 30 | def altium(id): 31 | return f'
' -------------------------------------------------------------------------------- /shared/content/stylesheets/home.css: -------------------------------------------------------------------------------- 1 | /* Menu: 1st lvl */ 2 | 3 | ul.home-menu { 4 | display: flex; 5 | flex-wrap: wrap; 6 | width: 100%; 7 | margin: 1.5rem 0; 8 | list-style-type: none; 9 | } 10 | 11 | ul.home-menu > li { 12 | display: flex; 13 | align-items: stretch; 14 | width: calc(50% - 30px); 15 | min-height: 280px; 16 | border: 1px solid var(--md-typeset-kbd-border-color); 17 | border-radius: 4px; 18 | margin: 0; 19 | } 20 | 21 | ul.home-menu > li:nth-child(2n) { 22 | margin-left: 60px; 23 | } 24 | 25 | ul.home-menu > li:nth-child(n + 3) { 26 | margin-top: 60px; 27 | } 28 | 29 | ul.home-menu > li aside { 30 | flex-shrink: 0; 31 | width: 38.19660113%; 32 | } 33 | 34 | ul.home-menu > li aside img { 35 | width: 100%; 36 | height: 100%; 37 | object-fit: cover; 38 | } 39 | 40 | ul.home-menu li main { 41 | flex-grow: 1; 42 | padding: 0 1.5rem; 43 | } 44 | 45 | ul.home-menu li main h2 { 46 | margin: 1rem 0; 47 | text-align: center; 48 | } 49 | 50 | /* Menu: 2nd lvl */ 51 | 52 | ul.home-submenu { 53 | display: flex; 54 | flex-direction: column; 55 | padding-bottom: 1rem; 56 | } 57 | 58 | ul.home-submenu a { 59 | color: var(--md-typeset-color); 60 | } 61 | 62 | ul.home-submenu a:hover, 63 | ul.home-submenu a:focus { 64 | color: var(--md-typeset-a-color); 65 | } 66 | 67 | /* Vertical layout */ 68 | 69 | @media (max-width: 1024px) { 70 | ul.home-menu { 71 | flex-wrap: none; 72 | flex-direction: column; 73 | } 74 | 75 | ul.home-menu > li { 76 | width: 100%; 77 | margin-left: 0 !important; 78 | } 79 | 80 | ul.home-menu > li:not(:first-of-type) { 81 | margin-top: 40px !important; 82 | } 83 | } 84 | 85 | @media (max-width: 720px) { 86 | ul.home-menu > li { 87 | flex-direction: column; 88 | } 89 | 90 | ul.home-menu > li aside { 91 | width: 100%; 92 | height: 40vw; 93 | max-height: 200px; 94 | } 95 | } -------------------------------------------------------------------------------- /en/content/development/hardware/schematic.md: -------------------------------------------------------------------------------- 1 | # Circuit Diagrams 2 | 3 | ![](https://cdn.flipperzero.one/flipperzero-pcb-names-inside.jpg) 4 | These are circuit diagrams of all Flipper Zero PCBs. They could be useful for hardware module developers and for low-level debug. These schematics are for educational purposes only and can't be treated as production documentation. 5 | 6 | !!! warning "Schematics are stripped" 7 | **All Flipper Zero schematics** are published below, but values of some passive components are ommited to complicate device cloning before official release. 8 | 9 | ## Main PCB 10 | ![Flipper Zero Main PCB](https://cdn.flipperzero.one/flipperzero-main-pcb-preview.jpg) 11 | 12 | ### Main blocks overview 13 | Every block is shown in detail as a separate document below. 14 | {{ altium("77b5e9f1-7fd1-47b2-879b-42631ccf1aeb") }} 15 | 16 | ### Power 17 | Power management system for all components. 18 | {{ altium("a41279af-a514-4eef-b0e6-caffcecea7d5") }} 19 | 20 | ### Periphery 21 | {{ altium("1c1704de-b682-4693-88e0-74342e87bb44") }} 22 | 23 | ### MCU STM32WB55 24 | {{ altium("eb69a746-c7bf-4301-9a4b-906995425d9c") }} 25 | 26 | ### LCD Display 27 | {{ altium("3ad3a937-2a28-4678-bfc4-36e5a1f72d8b") }} 28 | 29 | ### Sub-1 GHz CC1101 30 | {{ altium("c28de394-dc04-4c0d-8d9a-ba7cc9b5a9d8") }} 31 | 32 | ### Buttons 33 | {{ altium("d0bcb592-ee4c-4912-9167-e34b86a9e4f9") }} 34 | 35 | ## iButton PCB 36 | Piezo speaker and IR are also placed on this PCB. 37 | ![ibutton pcb](https://cdn.flipperzero.one/flipperzero-ibutton-pcb-preview.jpg) 38 | 39 | {{ altium("3d9c4181-e623-4504-b520-bfef6ba96cef") }} 40 | 41 | ## NFC PCB 42 | This PCB contains RFID 125 KHz and NFC modules. 43 | ![Flipper Zero NFC PCB](https://cdn.flipperzero.one/flipperzero-nfc-pcb-preview.jpg) 44 | 45 | ### NFC blocks overview 46 | {{ altium("da79a091-8e8b-46df-9398-45f1dfcffa6e") }} 47 | 48 | ### NFC 49 | {{ altium("308a6997-56f9-40aa-825d-5b77a3d98f39") }} 50 | 51 | ### RFID PERIPHERY 52 | {{ altium("06f61470-8f77-449f-8930-46659635d796") }} 53 | 54 | ### RFID_iBTN 55 | {{ altium("bd11bd9a-85e3-4f0d-bd8e-9ed7057658b8") }} 56 | 57 | ## RFID Antenna PCB 58 | ![Flipper Zero RFID Antenna PCB](https://cdn.flipperzero.one/flipperzero-antenna-pcb-preview.jpg) -------------------------------------------------------------------------------- /ru/content/development/hardware/schematic.md: -------------------------------------------------------------------------------- 1 | # Принципиальные схемы 2 | 3 | ![](https://cdn.flipperzero.one/flipperzero-pcb-names-inside.jpg) 4 | Здесь находятся принципиальные схемы всех плат Flipper Zero. Они могут быть полезны разработчикам модулей и для низкоуровневой отладки. Схемы опубликованы как справочный материал и не являются точной производственной документацией. 5 | 6 | !!! warning "Схемы сокращены" 7 | Ниже выложены **все схемы Flipper Zero**, однако у некоторых пассивных компонентов убраны номиналы. Это сделано для усложнения копирования устройства до официального релиза. 8 | 9 | ## Плата Main 10 | ![Flipper Zero Main PCB](https://cdn.flipperzero.one/flipperzero-main-pcb-preview.jpg) 11 | 12 | ### Общая схема блоков Main 13 | Каждый блок вынесен отдельным документом ниже. 14 | {{ altium("77b5e9f1-7fd1-47b2-879b-42631ccf1aeb") }} 15 | 16 | ### Power 17 | Система питания всех компонентов. 18 | {{ altium("a41279af-a514-4eef-b0e6-caffcecea7d5") }} 19 | 20 | ### Periphery 21 | {{ altium("1c1704de-b682-4693-88e0-74342e87bb44") }} 22 | 23 | ### MCU STM32WB55 24 | {{ altium("eb69a746-c7bf-4301-9a4b-906995425d9c") }} 25 | 26 | ### LCD Display 27 | {{ altium("3ad3a937-2a28-4678-bfc4-36e5a1f72d8b") }} 28 | 29 | ### Sub-1 GHz CC1101 30 | {{ altium("c28de394-dc04-4c0d-8d9a-ba7cc9b5a9d8") }} 31 | 32 | ### Buttons 33 | {{ altium("d0bcb592-ee4c-4912-9167-e34b86a9e4f9") }} 34 | 35 | ## Плата iButton 36 | На плате iButton также размещены пьезодинамик и ИК-порт. 37 | ![ibutton pcb](https://cdn.flipperzero.one/flipperzero-ibutton-pcb-preview.jpg) 38 | 39 | {{ altium("3d9c4181-e623-4504-b520-bfef6ba96cef") }} 40 | 41 | ## Плата NFC 42 | На плате находятся модули RFID 125 кГц и NFC. 43 | ![Flipper Zero NFC PCB](https://cdn.flipperzero.one/flipperzero-nfc-pcb-preview.jpg) 44 | 45 | ### Общая схема блоков NFC 46 | {{ altium("da79a091-8e8b-46df-9398-45f1dfcffa6e") }} 47 | 48 | ### NFC 49 | {{ altium("308a6997-56f9-40aa-825d-5b77a3d98f39") }} 50 | 51 | ### RFID PERIPHERY 52 | {{ altium("06f61470-8f77-449f-8930-46659635d796") }} 53 | 54 | ### RFID_iBTN 55 | {{ altium("bd11bd9a-85e3-4f0d-bd8e-9ed7057658b8") }} 56 | 57 | ## Антенная плата RFID 58 | ![Flipper Zero RFID Antenna PCB](https://cdn.flipperzero.one/flipperzero-antenna-pcb-preview.jpg) -------------------------------------------------------------------------------- /en/content/usage/applications/power.md: -------------------------------------------------------------------------------- 1 | Flipper Zero has a power management system, which mainly consists of **fuel gauge** and **charger** ICs. 2 | 3 | The main goal of the fuel gauge is to monitor the battery charging level. It works by calculating the incoming and spent energy precisely. 4 | 5 | Charger IC controls the charging process, which is very important for battery life and user safety. 6 | 7 | Power state application obtains information from these ICs and shows it on display. Let's examine each line of that information. 8 | 9 | ## Review 10 | 11 | === "Not charging" 12 | {{ screenshot("assets/applications/power-charging-off.png") }} 13 | === "Charging" 14 | {{ screenshot("assets/applications/power-charging-on.png") }} 15 | 16 | ### Current 17 | 18 | The first value is current, reported by fuel gauge (consumed by the battery). While Flipper is not charging, the value is negative and shows current consumption. 19 | 20 | The second value is the charging current, reported by the charger IC. It goes up as the charging starts. 21 | 22 | ### Voltage 23 | 24 | This line shows current voltage levels: from the fuel gauge and from the charger respectively. 25 | 26 | !!! warning 27 | The voltage level given by the charger is correct only during the charging process. 28 | 29 | ### Charge 30 | 31 | The current battery level is shown on this line in percentage. 32 | 33 | It's calculated by the fuel gauge using the value of energy consumed by the battery during charging, and spent during the device usage. 34 | 35 | ### Capacity 36 | 37 | The first value on this line shows energy left in the battery, and the second one shows its full capacity. 38 | 39 | The remaining energy can be calculated correctly only if the installed battery has the same full capacity value that was set during fuel gauge calibration. 40 | 41 | !!! warning 42 | As seen on the screenshot above, some testing units might report that the full capacity is 3000 mAh, which is wrong and leads to battery level miscalculations. The real capacity is 2000 mAh. 43 | 44 | ### Temperature 45 | 46 | The last line shows the fuel gauge and the battery Celsius temperatures respectively. 47 | 48 | The battery temperature is measured using NTC thermistor, which is placed on the battery and connected to the charger IC. It changes its resistance depending on the temperature. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flipper Zero Docs 2 | 3 | ## Participation 4 | 5 | To fix a bug or add something new to this repository, you need to **open a pull-request**. Also, 6 | on every page of the site, there is an edit icon (pencil) to the right of the header. 7 | 8 | ### I18N and `shared` folder 9 | 10 | - Put assets, custom HTMLs, scripts, and stylesheets to `shared` until they're language-specific 11 | - **Keep the navigation structure the same** for all languages* so the language selector can work properly 12 | 13 | ### Creating a new document 14 | 15 | After creating a new document, add it to the `nav:` block in the language-specific `mkdocs.yml`. 16 | 17 | ### Writing 18 | 19 | Documents are written in Markdown. [Material for Mkdocs](https://squidfunk.github.io/mkdocs-material/reference/abbreviations/) and [Mkdocs](https://www.mkdocs.org/user-guide/writing-your-docs/#writing-with-markdown) docs might help you showing what blocks are supported. 20 | 21 | ### Assets 22 | 23 | All images, videos, and other assets must be uploaded to the `assets` folder. 24 | 25 | ### GIFs, Videos and screenshots 26 | 27 | We have some custom macros to embed "gifs" and videos. 28 | 29 | To embed a "gif" (autoplayable silent MP4 video), use: 30 | 31 | ``` 32 | {{ gif("/assets/example-gif-file-name.mp4") }} 33 | ``` 34 | 35 | To embed a video, use: 36 | 37 | ``` 38 | {{ video("/assets/example-video-file-name.mp4") }} 39 | ``` 40 | 41 | To embed a Flipper Zero screenshot, use: 42 | 43 | ``` 44 | {{ screenshot("/assets/example-screenshot.png") }} 45 | ``` 46 | 47 | The screenshot should be 128*64 PNG with transparent background. 48 | 49 | ## Live MkDocs server 50 | 51 | You can run mkdocs server locally and render changes on the fly while editing. 52 | 53 | ## macOS 54 | 55 | 1. `brew install yq rsync` 56 | 2. Install mkdocs insiders version if you have a token: 57 | 58 | `pip3 install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git` 59 | 60 | `pip3 install mkdocs-macros-plugin mkdocs-git-revision-date-localized-plugin mkdocs-smart-meta-plugin` 61 | 62 | **OR** onstall public version 63 | 64 | `pip3 install mkdocs-material mkdocs-macros-plugin mkdocs-git-revision-date-localized-plugin mkdocs-smart-meta-plugin` 65 | 66 | 3. Run `python3 ./serve.py` being in the root directory 67 | 4. Proceed to `http://localhost:8000` 68 | 69 | **P.S. If you use publoc version of mkdocs the live preview might look a bit different to production, because we use [mkdocs-material-insiders](https://squidfunk.github.io/mkdocs-material/insiders/) version.** 70 | 71 | ## Linux 72 | 73 | TODO 74 | 75 | ## Windows 76 | 77 | TODO 78 | -------------------------------------------------------------------------------- /ru/content/usage/applications/power.md: -------------------------------------------------------------------------------- 1 | Система управления питанием Flipper Zero представлена двумя специальными чипами: **контроллером уровня заряда батареи** (fuel gauge) и **контроллером заряда** (charger). 2 | 3 | Главной задачей первого является отслеживание уровня заряда батареи. Это реализуется благодаря точному учету чипом количества энергии, которое прошло в батарею и было истраченно из нее. 4 | 5 | Контроллер заряда нужен для соблюдения требований к процессу заряда литиевой батареи, что очень важно для продления ее срока службы, а также для обеспечения безопасности при использовании устройства. 6 | 7 | Приложение Power state получает информацию от этих чипов и выводит ее на экран. Давайте разберемся, что все это значит. 8 | 9 | ## Обзор 10 | 11 | === "Без зарядки" 12 | {{ screenshot("assets/applications/power-charging-off.png") }} 13 | === "При зарядке" 14 | {{ screenshot("assets/applications/power-charging-on.png") }} 15 | 16 | ### Current 17 | 18 | Первое число — это ток, полученный от контроллера уровня заряда, который сейчас «втекает» в батарею. Если Флиппер не подключен к внешнему источнику питания и заряд сейчас не происходит, то в этом месте будет отрицательное значение, означающее ток разряда. 19 | 20 | Второе значение — это ток заряда, который расчитывается самим контроллером заряда. Число может быть положительным только в процессе заряда. 21 | 22 | ### Voltage 23 | 24 | Эта строка отображает напряжения, полученные от контроллера уровня заряда и от зарядного контроллера соответственно. 25 | 26 | !!! warning "Внимание" 27 | Второе значение напряжения будет валидным только в процессе заряда АКБ. 28 | 29 | ### Charge 30 | 31 | Строка показывает текущий уровень заряда батареи в процентах. 32 | 33 | Это значение расчитывается контроллером уровня заряда исходя из количества энергии, вошедшей в батарею и вышедшей из нее за время пользования устройством. 34 | 35 | ### Capacity 36 | 37 | Первое значение в этой строке показывает количество энергии, оставшейся в батарее, а второе — полную емкость. 38 | 39 | Оставшаяся энергия рассчитывается верно только в случае соответствия полной емкости установленной батареи укзанному при калибровке контроллера значению. 40 | 41 | !!! warning "Внимание" 42 | Как видно на скриншоте выше, некоторые тестовые устройства сообщают о полной емкости 3000 мАч, что неверно и приводит к ошибочным вычислениям уровня заряда. Реальная емкость установленных батарей — 2000 мАч. 43 | 44 | ### Temperature 45 | 46 | В последней строке выводятся температуры контроллера уровня заряда и батареи соответственно. 47 | 48 | Для измерения температуры батареи используется NTC-термистор, который размещен на самом АКБ, а подключен к контроллеру заряда. Он изменяет свое сопротивление в зависимости от температуры батареи, таким образом позволяя ее измерить. -------------------------------------------------------------------------------- /en/content/development/firmware/cli.md: -------------------------------------------------------------------------------- 1 | Flipper Zero has its own command line interface, which might be useful for automated testing or remote control. 2 | 3 | ## Connection 4 | 5 | Connect your Flipper Zero to the PC over USB. Your host will detect a virtual COM-port: 6 | 7 | ![](../../assets/firmware/vcp.png) 8 | 9 | This COM-port does not require a special driver and is accessible on most modern operating systems. 10 | 11 | You will need any terminal client to open the port: `screen`, `minicom`, etc. No additional setup required except choosing the right port. 12 | 13 | For example, the port name in macOS starts with `/dev/tty.usbmodem`: 14 | 15 | ![](../../assets/firmware/vcp-usbmodem.png) 16 | 17 | It is `/dev/tty.usbmodem2069315E544E1` in our case. 18 | 19 | To connect to the CLI using `screen` substitute your port name and enter this command in the shell: 20 | ```sh 21 | screen /dev/tty.usbmodem2069315E544E1 22 | ``` 23 | 24 | You will see command prompt and firmware build information: 25 | 26 | ![](../../assets/firmware/cli-prompt.png) 27 | 28 | ## Commands 29 | 30 | ### Basic 31 | 32 | | Command | Description | 33 | | ------: | :------- | 34 | | `?` or `help` | Outputs all available commands | 35 | | `!` or `version` | Outputs firmware build information | 36 | | `uid` | Outputs unique device identificator | 37 | | `log` | Redirects stdout to the port | 38 | | `date` | Outputs current real time clock value | 39 | 40 | ### Power and Boot 41 | 42 | | Command | Description | 43 | | ------: | :------- | 44 | | `poweroff` | Turns off the device | 45 | | `reset` | Reboots the device | 46 | | `dfu` | Reboots the device to [DFU-mode](../../usage/general/flashing-firmware.md) | 47 | | `power_otg_on` | Turns on periphery power | 48 | | `power_otg_off` | Turns off periphery power | 49 | | `power_test` | Outputs battery and charging info | 50 | 51 | ### User Interface 52 | 53 | | Command | Parameters | Description | 54 | | ------: | :-------- | :------- | 55 | | `input_send` | ` ` | Emulates button presses.
Available buttons: `up`, `down`, `left`, `right`, `ok`, `back`.
Available events: `press`, `release`, `short`, `long`. | 56 | | `led` | ` ` | Controls the LED and display backlight.
Available channels: `r`, `g`, `b`, `bl`.
Value range: `[0-255]` | 57 | | `vibro` | `` | Turns on (`1`) or turns off (`0`) the vibration motor | 58 | | `screen_stream ` | | Outputs the display framebuffer to the port. Used for screen streaming and gets called automatically | 59 | 60 | ### GPIO 61 | 62 | | Command | Parameters | Description | 63 | | ------: | :-------- | :------- | 64 | | `gpio_set` | ` ` | Controls GPIO in push-pull output mode | 65 | 66 | ### SD Card 67 | 68 | | Command | Description | 69 | | ------: | :------- | 70 | | `sd_info` | Outputs the SD Card info | 71 | | `sd_status` | Outputs the SD Card status | 72 | | `sd_format` | Formats SD Card **without confirmation** | 73 | 74 | ### NFC 75 | 76 | | Command | Description | 77 | | ------: | :------- | 78 | | `nfc_detect` | Starts reading NFC tags | 79 | 80 | ### Bluetooth 81 | 82 | | Command | Description | 83 | | ------: | :------- | 84 | | `bt_info` | Outputs Bluetooth subsystem info | 85 | 86 | ### Applications Launcher 87 | 88 | Any app could be launched using a command prefixed with `app_`, for example `app_iButton`. 89 | 90 | See more in the `help` command output. -------------------------------------------------------------------------------- /shared/mkdocs.yml: -------------------------------------------------------------------------------- 1 | docs_dir: content 2 | repo_url: https://github.com/Flipper-Zero/docs 3 | repo_name: flipper-zero/docs 4 | 5 | extra: 6 | social: 7 | - icon: fontawesome/brands/discord 8 | link: https://flipperzero.one/discord 9 | - icon: fontawesome/brands/twitter 10 | link: https://twitter.com/flipper_zero 11 | - icon: fontawesome/brands/youtube 12 | link: https://www.youtube.com/channel/UCfKVWB_pOfsY-HQ2siMBn6g 13 | - icon: fontawesome/brands/facebook 14 | link: https://facebook.com/flipperzero 15 | - icon: fontawesome/brands/instagram 16 | link: https://instagram.com/flipper_zero 17 | alternate: 18 | - name: English 19 | link: /en/ 20 | lang: en 21 | - name: Русский 22 | link: /ru/ 23 | lang: ru 24 | home: 25 | - 0: 26 | img: quickstart.jpg 27 | title: 28 | en: Quick start 29 | ru: Быстрый start 30 | path: usage/general/first-boot 31 | children: 32 | - 0: 33 | title: 34 | en: First Boot 35 | ru: First Boot 36 | path: usage/general/first-boot 37 | - 1: 38 | title: 39 | en: Rebooting 40 | ru: Rebooting 41 | path: usage/general/rebooting 42 | - 2: 43 | title: 44 | en: Flashing Firmware 45 | ru: Flashing Firmware 46 | path: usage/general/flashing-firmware 47 | - 3: 48 | title: 49 | en: Power 50 | ru: Power 51 | path: usage/applications/power 52 | - 1: 53 | img: sub1.jpg 54 | title: 55 | en: Sub-1 Ghz 56 | ru: Sub-1 Ghz 57 | children: 58 | - 0: 59 | title: 60 | en: Circuit Diagrams 61 | ru: Жопа Diagrams 62 | path: development/hardware/devboard-stlinkV3 63 | 64 | extra_css: 65 | - stylesheets/home.css 66 | 67 | extra_javascript: 68 | - javascripts/extra.js 69 | 70 | copyright: Copyright © 2021 Flipper Devices Inc. 71 | 72 | markdown_extensions: 73 | - toc: 74 | permalink: true 75 | - abbr 76 | - admonition 77 | - attr_list 78 | - pymdownx.snippets 79 | - pymdownx.emoji: 80 | emoji_index: !!python/name:materialx.emoji.twemoji 81 | emoji_generator: !!python/name:materialx.emoji.to_svg 82 | options: 83 | custom_icons: 84 | - overrides/icons 85 | - pymdownx.highlight 86 | - pymdownx.superfences 87 | - pymdownx.tabbed 88 | 89 | plugins: 90 | - search 91 | - git-revision-date-localized 92 | - macros 93 | - smart-meta 94 | 95 | theme: 96 | name: material 97 | custom_dir: overrides 98 | palette: 99 | - scheme: default 100 | primary: deep orange 101 | accent: deep orange 102 | toggle: 103 | icon: material/toggle-switch-off-outline 104 | name: Switch to dark mode 105 | - scheme: slate 106 | primary: deep orange 107 | accent: deep orange 108 | toggle: 109 | icon: material/toggle-switch 110 | name: Switch to light mode 111 | logo: assets/logo.svg 112 | favicon: assets/favicon.png 113 | icon: 114 | logo: material/library 115 | repo: fontawesome/brands/github-alt 116 | translate: material/web 117 | features: 118 | - navigation.tabs 119 | - navigation.sections 120 | -------------------------------------------------------------------------------- /ru/content/development/firmware/cli.md: -------------------------------------------------------------------------------- 1 | У Flipper Zero есть командная строка, которая может быть полезна для автоматизации тестирования устройства или удалённого управления. 2 | 3 | ## Подключение 4 | 5 | Соедините Flipper Zero с компьютером с помощью USB-кабеля. Ваш хост определит виртуальный COM-порт: 6 | 7 | ![](../../assets/firmware/vcp.png) 8 | 9 | Этот COM-порт не требует специального драйвера и доступен на всех современных операционных системах. 10 | 11 | Для работы с ним требуется терминальный клиент: `screen`, `minicom` или любой другой. Кроме выбора порта никаких дополнительных настроек больше не требуется. 12 | 13 | В macOS, например, название такого порта будет начинаться на `/dev/tty.usbmodem`: 14 | 15 | ![](../../assets/firmware/vcp-usbmodem.png) 16 | 17 | В нашем примере это `/dev/tty.usbmodem2069315E544E1`. 18 | 19 | Для подключения к командной строке с помощью `screen` выполните следующую команду в консоли, подставив название своего порта: 20 | ```sh 21 | screen /dev/tty.usbmodem2069315E544E1 22 | ``` 23 | 24 | Вы увидите приглашение командной строки и информацию об установленной прошивке: 25 | 26 | ![](../../assets/firmware/cli-prompt.png) 27 | 28 | ## Команды 29 | 30 | ### Основное 31 | 32 | | Команда | Описание | 33 | | ------: | :------- | 34 | | `?` или `help` | Выводит список доступных команд | 35 | | `!` или `version` | Выводит информацию об установленной прошивке | 36 | | `uid` | Выводит уникальный идентификатор устройства | 37 | | `log` | Переадресовывает вывод stdout в консоль | 38 | | `date` | Выводит текущее значение часов реального времени | 39 | 40 | ### Питание и загрузка 41 | 42 | | Команда | Описание | 43 | | ------: | :------- | 44 | | `poweroff` | Выключает устройство | 45 | | `reset` | Перезагружает устройство | 46 | | `dfu` | Перезагружает устройство в [DFU-режим](../../usage/general/flashing-firmware.md) | 47 | | `power_otg_on` | Включает питание периферии | 48 | | `power_otg_off` | Выключает питание периферии | 49 | | `power_test` | Выводит информацию об аккумуляторе и зарядке | 50 | 51 | ### Интерфейс 52 | 53 | | Команда | Параметры | Описание | 54 | | ------: | :-------- | :------- | 55 | | `input_send` | ` ` | Имитирует использование кнопок.
Доступные кнопки: `up`, `down`, `left`, `right`, `ok`, `back`.
Доступные события: `press`, `release`, `short`, `long`. | 56 | | `led` | ` ` | Управляет светодиодом и подсветкой дисплея.
Доступные каналы: `r`, `g`, `b`, `bl`.
Диапазон значений: `[0-255]` | 57 | | `vibro` | `` | Включает (`1`) или выключает (`0`) вибромотор | 58 | | `screen_stream ` | | Выводит буфер дисплея в консоль. Используется для трансляции экрана, вызывается автоматически | 59 | 60 | ### GPIO 61 | 62 | | Команда | Параметры | Описание | 63 | | ------: | :-------- | :------- | 64 | | `gpio_set` | ` ` | Управляет GPIO в режиме push-pull output | 65 | 66 | ### SD-карта 67 | 68 | | Команда | Описание | 69 | | ------: | :------- | 70 | | `sd_info` | Выводит информацию об SD-карте | 71 | | `sd_status` | Выводит статус SD-карты | 72 | | `sd_format` | Форматирует SD-карту **без предупреждения** | 73 | 74 | ### NFC 75 | 76 | | Команда | Описание | 77 | | ------: | :------- | 78 | | `nfc_detect` | Запускает чтение NFC-метки | 79 | 80 | ### Bluetooth 81 | 82 | | Команда | Описание | 83 | | ------: | :------- | 84 | | `bt_info` | Выводит информацию о подсистеме Bluetooth | 85 | 86 | ### Запуск приложений 87 | 88 | Любое приложение можно запустить командой с префиксом `app_`, например `app_iButton`. 89 | 90 | Подробнее смотри в выводе команды `help`. -------------------------------------------------------------------------------- /en/content/usage/general/flashing-firmware.md: -------------------------------------------------------------------------------- 1 | ## Download latest firmware 2 | 3 | Click the image to download latest build of full firmware: 4 | [![](https://update.flipperzero.one/latest-firmware-banner.png){: width="400"}](https://update.flipperzero.one/release/full.dfu) 5 | 6 | ## Enter DFU Mode 7 | 8 | DFU means Device Firmware Update. 9 | 10 | {{ gif("assets/how-to-dfu.mp4") }} 11 | 12 | To enter DFU Mode: 13 | 14 | 1. Press and hold :flp-btn-left: + :flp-btn-back:, just like for reboot, then wait a second 15 | 2. Release :flp-btn-back:, but keep holding :flp-btn-left: for one more second 16 | 3. Release :flp-btn-left: 17 | 18 | The display should turn off, and the LED lights up in blue color, meaning you are in DFU Mode. 19 | 20 | Connect your Flipper Zero to the PC over USB. 21 | 22 | ## Flash in Windows 23 | 24 | ### Fix drivers 25 | 26 | This step has to be done just once. 27 | 28 | As you can see, our Flipper Zero appeared as `DFU in FS Mode`, and we need to install a compatible driver. 29 | 30 | ![](../../assets/flashing-firmware/win-device-manager.png) 31 | 32 | Go to Windows Update Centre -> View optional updates. 33 | 34 | ![](../../assets/flashing-firmware/win-driver-update.png) 35 | 36 | Find `STMicroelectronics` in driver updates, select it and press `Download and install`. 37 | 38 | ![](../../assets/flashing-firmware/win-driver-update-2.png) 39 | 40 | Check that the name of the device in Device Manager has changed to `STM Device in DFU Mode`. 41 | In some cases, PC reboot is required. 42 | 43 | ![](../../assets/flashing-firmware/win-device-manager-updated.png) 44 | 45 | ### Install DfuSeDemo 46 | 47 | This step has to be done just once. 48 | 49 | [DfuSeDemo](https://www.st.com/en/development-tools/stsw-stm32080.html) is required to flash Flipper Zero in Windows. 50 | 51 | Click the link, download it for free and install. 52 | 53 | The website will ask you to register to download the software, that's okay. 54 | 55 | ### Flashing 56 | 57 | Launch DfuSeDemo and select `STM Device in DFU Mode` in the top section of the app. 58 | 59 | After that, choose `00 Internal Flash 256 sectors…` section in targets table. 60 | 61 | Next, click `Choose` in the bottom of the window and select the firmware file you downloaded on the first step. 62 | 63 | ![](../../assets/flashing-firmware/dfuse-target.png) 64 | 65 | Press Upgrade and click “Yes” in pop-up window. 66 | 67 | ![](../../assets/flashing-firmware/dfuse-upgrade.png) 68 | 69 | [Reboot](rebooting.md) Flipper Zero after successful upgrade. 70 | 71 | ## Flash in macOS/Linux 72 | 73 | ### Install dfu-util 74 | 75 | `dfu-util` is currently required to flash Flipper Zero firmware via USB-C port. 76 | 77 | You can skip this part if you have `dfu-util` installed. 78 | 79 | === "macOS" 80 | Install [Homebrew](https://brew.sh) if you don't have it: 81 | ``` sh 82 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 83 | ``` 84 | 85 | Install `dfu-util`: 86 | ``` sh 87 | brew install dfu-util 88 | ``` 89 | === "Ubuntu/Debian" 90 | ``` sh 91 | sudo apt-get install dfu-util 92 | ``` 93 | === "Fedora" 94 | ``` sh 95 | sudo yum install dfu-util 96 | ``` 97 | === "Arch" 98 | ``` sh 99 | sudo pacman -Sy dfu-util 100 | ``` 101 | === "Linux Sources" 102 | You can always [build dfu-util from sources](http://dfu-util.sourceforge.net/build.html). 103 | 104 | ### Upload firmware 105 | 106 | Run this command in the terminal to upload new firmware: 107 | ``` sh 108 | dfu-util -a 0 -D full.dfu 109 | ``` 110 | 111 | After flashing the firmware, [reboot](rebooting.md) to exit DFU mode. 112 | 113 | The USB cable can be unplugged before or after rebooting. 114 | -------------------------------------------------------------------------------- /shared/content/assets/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ru/content/usage/general/flashing-firmware.md: -------------------------------------------------------------------------------- 1 | ## Скачивание свежей прошивки 2 | 3 | Кликните на картинку, чтобы скачать свежую сборку полной прошивки: 4 | [![](https://update.flipperzero.one/latest-firmware-banner.png){: width="400"}](https://update.flipperzero.one/release/full.dfu) 5 | 6 | ## Вход в режим DFU 7 | 8 | DFU означает Device Firmware Update. 9 | 10 | {{ gif("assets/how-to-dfu.mp4") }} 11 | 12 | Чтобы войти в режим DFU: 13 | 14 | 1. Нажмите и удержите :flp-btn-left: + :flp-btn-back: как при перезагрузке, подождите секунду 15 | 2. Отпустите :flp-btn-back:, но продолжайте держать :flp-btn-left: ещё на секунду 16 | 3. Отпустите :flp-btn-left: 17 | 18 | Дисплей погаснет, а светодиод загорится синим, что означает успешный вход в режим DFU. 19 | 20 | Подключите ваш Flipper Zero к компьютеру с помощью USB-кабеля. 21 | 22 | ## Прошивка в Windows 23 | 24 | ### Установка драйвера 25 | 26 | Этот шаг не нужно выполнять каждый раз. 27 | 28 | В диспетчере устройств Flipper Zero отображается как `DFU in FS Mode`, и для него необходимо установить драйвер. 29 | 30 | ![](../../assets/flashing-firmware/win-device-manager.png) 31 | 32 | Перейдите в Центр обновления Windows -> Посмотреть необязательные обновления. 33 | 34 | ![](../../assets/flashing-firmware/win-driver-update.png) 35 | 36 | Найдите пункт `STMicroelectronics`, отметьте галочкой и нажмите `Загрузить`. 37 | 38 | ![](../../assets/flashing-firmware/win-driver-update-2.png) 39 | 40 | После загрузки и установки драйвера название в диспетчере устройств изменится на `STM Device in DFU Mode`. 41 | Иногда может потребоваться перезагрузка ПК. 42 | 43 | ![](../../assets/flashing-firmware/win-device-manager-updated.png) 44 | 45 | ### Установка DfuSeDemo 46 | 47 | Этот шаг не нужно выполнять каждый раз. 48 | 49 | Для прошивки Flipper Zero в Windows необходима утилита [DfuSeDemo](https://www.st.com/en/development-tools/stsw-stm32080.html). 50 | 51 | Кликните по ссылке, скачайте бесплатную утилиту и установите. 52 | 53 | Сайт попросит вас зарегистрироваться для скачивания, это нормально. 54 | 55 | ### Прошивка 56 | 57 | Запустите DfuSeDemo и выберите `STM Device in DFU Mode` в верхней части окна. 58 | 59 | В таблице выберите раздел `00 Internal Flash 256 sectors…`. 60 | 61 | Нажмите `Choose` в нижней части окна и выберите скачанный на первом шаге файл прошивки. 62 | 63 | ![](../../assets/flashing-firmware/dfuse-target.png) 64 | 65 | Нажимаем `Upgrade`, а во всплывающем окне выберите `Да`. 66 | 67 | ![](../../assets/flashing-firmware/dfuse-upgrade.png) 68 | 69 | После успешной прошивки [перезагрузите](rebooting.md) Flipper Zero. 70 | 71 | ## Прошивка в macOS/Linux 72 | 73 | ### Установка dfu-util 74 | 75 | Сейчас для прошивки Flipper Zero через USB-C порт необходима утилита `dfu-util`. 76 | 77 | Вы можете пропустить эту часть, если у вас `dfu-util` уже установлен. 78 | 79 | === "macOS" 80 | Установите [Homebrew](https://brew.sh), если у вас его нет: 81 | ``` sh 82 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 83 | ``` 84 | 85 | Установите `dfu-util`: 86 | ``` sh 87 | brew install dfu-util 88 | ``` 89 | === "Ubuntu/Debian" 90 | ``` sh 91 | sudo apt-get install dfu-util 92 | ``` 93 | === "Fedora" 94 | ``` sh 95 | sudo yum install dfu-util 96 | ``` 97 | === "Arch" 98 | ``` sh 99 | sudo pacman -Sy dfu-util 100 | ``` 101 | === "Из исходников" 102 | dfu-util всегда можно [собрать из исходников](http://dfu-util.sourceforge.net/build.html). 103 | 104 | ### Прошивка 105 | 106 | Запустите эту команду в терминале, чтобы загрузить прошивку на устройство: 107 | ``` sh 108 | dfu-util -a 0 -D full.dfu 109 | ``` 110 | 111 | После установки прошивки [перезагрузитесь](rebooting.md), чтобы выйти из режима DFU. 112 | 113 | USB-кабель можно вытаскивать как до перезагрузки, так и после. 114 | -------------------------------------------------------------------------------- /serve.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import logging 3 | import os 4 | import shutil 5 | import tempfile 6 | import sys 7 | import subprocess 8 | 9 | import tornado.web 10 | 11 | from os.path import isfile, join 12 | 13 | from mkdocs.commands.build import build 14 | from mkdocs.config import load_config 15 | 16 | log = logging.getLogger('mkdocs') 17 | log.propagate = False 18 | stream = logging.StreamHandler() 19 | formatter = logging.Formatter("%(levelname)-7s - %(message)s ") 20 | stream.setFormatter(formatter) 21 | log.addHandler(stream) 22 | log.setLevel(logging.INFO) 23 | 24 | 25 | def _init_asyncio_patch(): 26 | if sys.platform.startswith("win") and sys.version_info >= (3, 8): 27 | import asyncio 28 | try: 29 | from asyncio import WindowsSelectorEventLoopPolicy 30 | except ImportError: 31 | pass # Can't assign a policy which doesn't exist. 32 | else: 33 | if not isinstance(asyncio.get_event_loop_policy(), WindowsSelectorEventLoopPolicy): 34 | asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy()) 35 | 36 | 37 | def _get_handler(site_dir, handler): 38 | from tornado.template import Loader 39 | 40 | class WebHandler(handler): 41 | 42 | def write_error(self, status_code, **kwargs): 43 | if status_code in (404, 500): 44 | error_page = '{}.html'.format(status_code) 45 | if isfile(join(site_dir, error_page)): 46 | self.write(Loader(site_dir).load(error_page).generate()) 47 | else: 48 | super().write_error(status_code, **kwargs) 49 | 50 | return WebHandler 51 | 52 | 53 | def _get_redirect_handler(language): 54 | class RedirectHandler(tornado.web.RequestHandler): 55 | def get(self, path): 56 | self.redirect(os.path.join('/' + language, path)) 57 | 58 | return RedirectHandler 59 | 60 | 61 | def _livereload(host, port, languages, builder, site_dir): 62 | # We are importing here for anyone that has issues with livereload. Even if 63 | # this fails, the --no-livereload alternative should still work. 64 | _init_asyncio_patch() 65 | from livereload import Server 66 | import livereload.handlers 67 | 68 | class LiveReloadServer(Server): 69 | def _setup_logging(self): 70 | logger = logging.getLogger('livereload') 71 | logger.setLevel(logging.INFO) 72 | return 73 | 74 | def get_web_handlers(self, script): 75 | handlers = [] 76 | for lang in languages: 77 | handlers.append((fr'/{lang}/(.*)', 78 | _get_handler(os.path.join(site_dir, lang), livereload.handlers.StaticFileHandler), { 79 | 'path': os.path.join(site_dir, lang), 80 | 'default_filename': self.default_filename, 81 | })) 82 | handlers.append((r'/(.*)', _get_redirect_handler(languages[0]))) 83 | return handlers 84 | 85 | server = LiveReloadServer() 86 | 87 | def full_builder_func(): 88 | for lang in languages: 89 | builder(lang) 90 | 91 | server.watch('shared', full_builder_func, delay=0) 92 | for lang in languages: 93 | server.watch(lang, create_builder(builder, lang), delay=0) 94 | 95 | server.serve(root=site_dir, host=host, port=port, restart_delay=0) 96 | 97 | 98 | def create_builder(builder, lang): 99 | def func(): 100 | builder(lang) 101 | 102 | return func 103 | 104 | 105 | def pre_build(language, out): 106 | subprocess.call(['rsync', '-a', '--delete', '.git', out]) 107 | 108 | subprocess.call(['rsync', '-a', '--delete', '--exclude', 'mkdocs.yml', 109 | 'shared/', language + '/', out + '/' + language]) 110 | config = subprocess.check_output(['yq', 'eval-all', 'select(fileIndex == 0) *d select(fileIndex == 1)', 111 | os.path.join('shared', 'mkdocs.yml'), os.path.join(language, 'mkdocs.yml')]) 112 | with open(os.path.join(out, language, 'mkdocs.yml'), 'wb') as out: 113 | out.write(config) 114 | 115 | 116 | def serve(host, port, languages): 117 | docs_dir = tempfile.mkdtemp(prefix='mkdocs_') 118 | site_dir = tempfile.mkdtemp(prefix='mkdocs_out_') 119 | 120 | def builder(lang): 121 | log.info(f'Building {lang}...') 122 | pre_build(lang, docs_dir) 123 | 124 | lang_path = os.path.join(docs_dir, lang) 125 | 126 | config = load_config( 127 | config_file=os.path.join(lang_path, 'mkdocs.yml'), 128 | dev_addr=f'{host}:{port}', 129 | strict=True, 130 | site_dir=os.path.join(site_dir, lang) 131 | ) 132 | 133 | config['site_url'] = f'http://{host}:{port}/{lang}/' 134 | 135 | # mkdocs is usually launched from the docs root directory, so it doesn't resolve relative paths smart enough, 136 | # leading to some bugs when launched from another place. 137 | # For example, custom_icons don't work without this dirty hack, and our neat Flipper buttons fail to load :( 138 | # I could've filled an issue to mkdocs-material-extensions regarding this, but I believe it's more reliable 139 | # to just switch the working directory, cause there might be other features that rely on it. 140 | # 141 | # It was kinda hard to figure this out, and it's actually 9 AM right now and I haven't slept yet, so please 142 | # satisfy my praise kink by saying 'good girl' telepathically 143 | cwd = os.getcwd() 144 | os.chdir(lang_path) 145 | 146 | build(config, live_server=True, dirty=False) 147 | 148 | os.chdir(cwd) 149 | 150 | try: 151 | for lang in languages: 152 | builder(lang) 153 | _livereload(host, port, languages, builder, site_dir) 154 | finally: 155 | shutil.rmtree(docs_dir) 156 | shutil.rmtree(site_dir) 157 | 158 | 159 | if __name__ == '__main__': 160 | serve('localhost', 8000, ['en', 'ru']) 161 | --------------------------------------------------------------------------------