{"id":13497102,"url":"https://github.com/drmpeg/gr-paint","last_synced_at":"2026-03-17T04:38:00.127Z","repository":{"id":36848444,"uuid":"41155391","full_name":"drmpeg/gr-paint","owner":"drmpeg","description":"An OFDM Spectrum Painter for GNU Radio","archived":false,"fork":false,"pushed_at":"2024-02-27T08:16:52.000Z","size":2135,"stargazers_count":136,"open_issues_count":6,"forks_count":25,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-01-17T20:34:58.660Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drmpeg.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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}},"created_at":"2015-08-21T12:49:19.000Z","updated_at":"2024-11-28T22:52:03.000Z","dependencies_parsed_at":"2023-01-17T05:42:22.340Z","dependency_job_id":"3605f58c-d29e-4491-9504-31dd61d1e6ba","html_url":"https://github.com/drmpeg/gr-paint","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drmpeg%2Fgr-paint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drmpeg%2Fgr-paint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drmpeg%2Fgr-paint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drmpeg%2Fgr-paint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drmpeg","download_url":"https://codeload.github.com/drmpeg/gr-paint/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242976475,"owners_count":20215608,"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":[],"created_at":"2024-07-31T20:00:23.368Z","updated_at":"2025-12-25T04:14:48.547Z","avatar_url":"https://github.com/drmpeg.png","language":"CMake","readme":"# Copyright 2015-2018,2020-2025 Ron Economos\n#\n# This file is part of gr-paint\n#\n# gr-paint is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 3, or (at your option)\n# any later version.\n#\n# gr-paint is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with gr-paint; see the file COPYING.  If not, write to\n# the Free Software Foundation, Inc., 51 Franklin Street,\n# Boston, MA 02110-1301, USA.\n\ngr-paint\n======\n\nAuthor: Ron Economos\nEmail: \u003cw6rz@comcast.net\u003e\n\nThe goal of this project is to build a software-defined OFDM transmitter\nthat \"paints\" monochrome images into the waterfall of a receiver.\nIt is based on https://github.com/polygon/spectrum_painter\n\nAfter installation, a GNU Radio block called \"Spectrum Painter\" will\nbe available in the \"Paint\" category. The block converts a byte stream\nof image data into a 4K IFFT OFDM IQ sequence for transmission.\n\nThere are two block parameters.\n\n1) Image Width. This is the horizontal size of the image to be transmitted.\n\n2) Line Repeats. This is the number of times a line is repeated. This is\nused to adjust the aspect ratio of the image to be more or less correct.\nAspect ratio is also affected by sample rate, waterfall update time and\nthe size of the waterfall window.\n\nA GNU Radio Companion flow graph (paint_tx.grc) is provided in the apps\ndirectory. It transmits a test file with a UHD sink setup for an Ettus\nB2X0 SDR. Be sure to select the correct sink for your device.\n\nAn image conversion utility (tgatoluma) is included to create image\nfiles that work with GNU Radio (raw binary). The usage is:\n\ntgatoluma \u003cinfile\u003e \u003coutfile\u003e\n\nFor example:\n\ntgatoluma image.tga image.bin\n\nThe utility will print the horizontal size, and this must be entered into\nthe \"Image Width\" parameter of the block.\n\nThe popular program ImageMagick can be used to convert any image to TGA\nformat. For example:\n\nconvert image.png image.tga\n\nFor waterfalls that start at the top, the image needs to be flipped.\n\nconvert -flip image.jpg image.tga\n\nThree test images are included.\n\n1) marcy.bin This is a 1920x1080 frame from a cartoon.\n\n2) ramp.bin. This is a 1920x1080 test pattern with a grayscale. Used\nto set the correct contrast with the minimum and maximum levels of the\nQT GUI Waterfall Sink.\n\n3) xhatch.bin This is a 1920x1080 test pattern with circles. Used to set\nthe aspect ratio correctly.\n\nA tutorial for creating high quality images with Gqrx is available here:\n\nhttps://gist.github.com/drmpeg/31a9a7dd6918856aeb60\n\nUPDATE: Chris Kuethe KJ6GVE has submitted an \"Image File Source\" block\nthat allows any image format to be used and avoids the extra steps of\nusing ImageMagick and tgatoluma. The flow graph has been updated to include\nthe new block and a test PNG image is provided. You still have to enter\nthe correct image width into the Spectrum Painter block (the Image File\nSource block will print the image width for you).\n\nUPDATE 11/09/2015: I've added the OFDM Cyclic Prefixer block to the test\nflow graph. This can be used to fine tune the aspect ratio of the image\nin much finer granularity than line repeats. The CP Length can be any value,\nit doesn't have to be a power of two like you see in regular OFDM systems.\n\nI've also added sin(x)/x correction for bladeRF and other SDR transmitters\nthat don't compensate for DAC zero-order hold. Note that the Ettus B2X0\ndoes have sin(x)/x compensation, so it's not turned on in the test flow\ngraph.\n\nBuild instructions:\n\n    mkdir build\n    cd build\n    cmake ../\n    make\n    sudo make install\n    sudo ldconfig\n\nNote: cmake ../ will install into the default directory /usr/local. If\nyou've installed GNU Radio with a package manager like apt, then gr-paint\nshould be installed in /usr. To accomplish this, use:\n\ncmake -DCMAKE_INSTALL_PREFIX=/usr ../\n\nContributions are welcome!\n\n","funding_links":[],"categories":["GnuRadio Software"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrmpeg%2Fgr-paint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrmpeg%2Fgr-paint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrmpeg%2Fgr-paint/lists"}