{"id":15012000,"url":"https://github.com/awawa-dev/hyperserialpico","last_synced_at":"2025-04-13T02:16:27.998Z","repository":{"id":164114175,"uuid":"628649764","full_name":"awawa-dev/HyperSerialPico","owner":"awawa-dev","description":"High-speed Adalight USB serial LED driver implementation for Raspberry Pi Pico RP2040. Support for sk6812/ws2812b/apa102 and others using Rpi multi-core, DMA, PIO, SPI and parallel output.","archived":false,"fork":false,"pushed_at":"2025-04-06T21:44:52.000Z","size":67,"stargazers_count":78,"open_issues_count":0,"forks_count":174,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-13T02:15:55.628Z","etag":null,"topics":["adalight","ambilight","hyperhdr","hyperserial","led","led-controller","led-controlling","led-strips","leds","neopixel","pico","pio","raspberrypipico","rp2040","serialport","sk6812","ws2812b"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awawa-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"awawa-dev"}},"created_at":"2023-04-16T15:55:21.000Z","updated_at":"2025-04-06T21:44:53.000Z","dependencies_parsed_at":"2023-12-04T21:30:44.920Z","dependency_job_id":"7e410374-ae46-4e2a-b3a9-7de3e6537cf0","html_url":"https://github.com/awawa-dev/HyperSerialPico","commit_stats":{"total_commits":19,"total_committers":5,"mean_commits":3.8,"dds":0.5263157894736843,"last_synced_commit":"6a1040823db961be2aceab514ea1f2a2aa946aed"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awawa-dev%2FHyperSerialPico","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awawa-dev%2FHyperSerialPico/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awawa-dev%2FHyperSerialPico/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awawa-dev%2FHyperSerialPico/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awawa-dev","download_url":"https://codeload.github.com/awawa-dev/HyperSerialPico/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248654104,"owners_count":21140237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adalight","ambilight","hyperhdr","hyperserial","led","led-controller","led-controlling","led-strips","leds","neopixel","pico","pio","raspberrypipico","rp2040","serialport","sk6812","ws2812b"],"created_at":"2024-09-24T19:41:59.776Z","updated_at":"2025-04-13T02:16:27.967Z","avatar_url":"https://github.com/awawa-dev.png","language":"C++","readme":"# HyperSerialPico\nAdalight serial port LED driver implementation for Raspberry Pi Pico RP2040.  \n\n# Example of supported boards using Rp2040\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/69086569/236885968-baab51ba-a54b-4072-9a2a-cf867f2edb4b.png\" width=\"250\" height=\"250\"/\u003e\u003cimg src=\"https://user-images.githubusercontent.com/69086569/236885360-dce9cfd7-92a8-43c6-911f-649325ee8a96.png\" width=\"250\" height=\"250\"/\u003e\u003c/p\u003e\n\n# Recommended boards with a built-in level shifter\nTo ensure the LEDs will work properly with the Pico board, a 3.3V to 5V level shifter is needed. You can use an external one e.g. SN74AHCT125N or just buy a model of rp2040 that already has it built-in: Adafruit Feather RP2040 Scorpio (output: GPIO16-23), Adafruit ItsyBitsy RP2040 (output: GPIO14), Pimoroni Plasma 2040 (GPIO14-15) or Pimoroni Plasma Stick 2040 W (GPIO15).\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/69086569/242393809-4e491159-76c7-4c1e-be0a-1f10cd5291f2.png\"  width=\"200\" height=\"200\"/\u003e\u003cimg src=\"https://github.com/awawa-dev/HyperSerialPico/assets/69086569/e7a2a945-be12-47b1-8e48-ffc1b11c5b2f.png\"  width=\"200\" height=\"200\"/\u003e\u003cimg src=\"https://user-images.githubusercontent.com/69086569/241395006-ee27175e-677b-4971-97bc-ed294eaa8f3b.png\" width=\"200\" height=\"200\"/\u003e\u003cimg src=\"https://user-images.githubusercontent.com/69086569/241394387-f8193ed8-56d5-46c6-b406-911720aed605.png\" width=\"200\" height=\"200\"/\u003e\u003c/p\u003e\n\n# Supported LED strips\n| LED strip / Device             |    Single lane   |    Multi-segment   |\n|--------------------------------|:----------------:|:------------------:|\n| SK6812 cold white              |       yes        |        yes         |\n| SK6812 neutral white           |       yes        |        yes         |\n| WS281x                         |       yes        |        yes         |\n| SPI (APA102, SK9812, HD107...) |       yes        |        no*         |\n\n`*` you don't need parallel mode for SPI LEDs, they are already using high speed 10Mb internal data line\n\n# How to flash it?\nIt's very easy and you don't need any special flasher.  \n\n1) First download the firmware directly from the [Release folder](https://github.com/awawa-dev/HyperSerialPico/releases).  \\\n\\\nFor HyperHDR and generic rp2040 choose `HyperSerialPico_\u003ctype\u003e.uf2` firmware where *type* is one of supported LEDs: sk6812 cold/neutral white, variants of ws2812 and apa102. \\\n\\\nDue to the often neglected issue of the required 5 volt logic necessary for the correct operation of the supported LEDs, we want to promote rp2040 boards with a built-in 3.3V to 5V level shifter and we provide firmware compiled to their GPIO specifications. You can find these firmware \u0026 short pin-out manuals in the archives: `Adafruit_Feather_RP2040_Scorpio.zip`, `Adafruit_ItsyBitsy_2040.zip`, `Pimoroni_Plasma_2040.zip`, `Pimoroni_Plasma_Stick_2040_W.zip`. Also you can read about their specific GPIO output in the `Recommended boards with a built-in level shifter` section above.  \\\n\\\nIf you are using an application other than HyperHDR, select the `classic_adalight.zip` archive, unzip it and select `classic_adalight_HyperSerialPico_\u003ctype\u003e.uf2` firmware (note: do not use firmware from this archive for HyperHDR, they do not support my AWA protocol extension, missing many options and are simply only backwards compatible with other applications).  \n  \n3) Next put your Pico board into DFU mode:  \n* If your Pico board has only one button (`boot`) then press \u0026 hold it and connect the board to the USB port. Then you can release the button.\n* If your Pico board has two buttons, connect it to the USB port. Then press \u0026 hold `boot` and `reset` buttons, then release `reset` and next release `boot` button.  \n\n3) In the system file explorer you should find new drive (e.g. called `RPI-RP2` drive) exposed by the Pico board. Drag \u0026 drop (or copy) the selected firmware to this drive. \nThe Pico will reset automaticly after the upload and after few seconds it will be ready to use by HyperHDR as a serial port device using Adalight driver.\n\n# HyperHDR configuration\nYou need HyperHDR v20 or newer. Make sure you have enabled `AWA protocol` and `Esp8266/ESP32/Rp2040 handshake` options. You can leave the speed at `2000000` because the CDC driver should use the highest possible speed automatically (at least it happens on Windows).  \n\n![obraz](https://user-images.githubusercontent.com/69086569/236870662-12f67d14-c2ca-4ba1-b6a3-e34c27949d19.png)\n\n# Default pinout\n  \n**LED output (SK6812/WS281x):** GPIO2 for Data    \n**LED output (SPI LEDs):** GPIO3 for Data, GPIO2 for Clock  \n\nIf multi-segment mode is enabled for SK6812/WS281x, the output for the second segment is always the next GPIO pin (`OUTPUT_DATA_PIN` + 1).\n\nrp2040 allows hardware SPI on corresponding pairs of pins:  \nspi0 ⇒ Data/Clock: GPIO3/GPIO2, GPIO19/GPIO18, GPIO7/GPIO6  \nspi1 ⇒ Data/Clock: GPIO11/GPIO10, GPI15/GPIO14, GPIO27/GPI26  \n\nPinout can be changed, but you need to make changes to `CMakeList.txt` (e.g. `OUTPUT_DATA_PIN` / `OUTPUT_SPI_DATA_PIN` / `OUTPUT_SPI_CLOCK_PIN`) and recompile the project. Also multi-segment mode can be enabled in this file: `SECOND_SEGMENT_INDEX` option at the beginning and optionally `SECOND_SEGMENT_REVERSED`. Once compiled, the results can be found in the `firmware` folder.\n\nOf course, you can also build your custom firmware completely online using Github Actions. The manual can be found on [wiki](https://github.com/awawa-dev/HyperSerialPico/wiki). Be sure to follow the steps in the correct order.\n\n# Some benchmark results\n\n| Single LED strip | Max. refresh rate | Parallel multi-segment mode | Max. refresh rate |\n|------------------|:-----------------:|-----------------------------|:-----------------:|\n| 300LEDs RGBW  |  83  | 300LEDs RGBW\u003cbr\u003eSECOND_SEGMENT_INDEX=150 |  100  |\n| 600LEDs RGBW  |  42  | 600LEDs RGBW\u003cbr\u003eSECOND_SEGMENT_INDEX=300 |   83  |\n| 900LEDs RGBW  |  28  | 900LEDs RGBW\u003cbr\u003eSECOND_SEGMENT_INDEX=450 |   55  |\n","funding_links":["https://github.com/sponsors/awawa-dev"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawawa-dev%2Fhyperserialpico","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawawa-dev%2Fhyperserialpico","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawawa-dev%2Fhyperserialpico/lists"}