{"id":33180454,"url":"https://github.com/Manawyrm/FMBerry","last_synced_at":"2025-11-20T21:03:42.894Z","repository":{"id":8022467,"uuid":"9431497","full_name":"Manawyrm/FMBerry","owner":"Manawyrm","description":"Build an open source fm radio station with your raspberry pi","archived":false,"fork":false,"pushed_at":"2024-06-19T08:37:43.000Z","size":94,"stargazers_count":146,"open_issues_count":0,"forks_count":23,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-06-24T10:32:26.324Z","etag":null,"topics":["c","hardware","raspberry","transmitter"],"latest_commit_sha":null,"homepage":null,"language":"C","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/Manawyrm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2013-04-14T16:21:26.000Z","updated_at":"2024-06-19T08:37:47.000Z","dependencies_parsed_at":"2024-01-14T17:04:38.979Z","dependency_job_id":"74c250da-616a-4f37-80ab-a18fe3bc6dc7","html_url":"https://github.com/Manawyrm/FMBerry","commit_stats":{"total_commits":90,"total_committers":6,"mean_commits":15.0,"dds":0.6444444444444444,"last_synced_commit":"eb7c5343cc67ecb93b0772ef080f4d20b32b52cb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Manawyrm/FMBerry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Manawyrm%2FFMBerry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Manawyrm%2FFMBerry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Manawyrm%2FFMBerry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Manawyrm%2FFMBerry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Manawyrm","download_url":"https://codeload.github.com/Manawyrm/FMBerry/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Manawyrm%2FFMBerry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285511820,"owners_count":27184247,"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","status":"online","status_checked_at":"2025-11-20T02:00:05.334Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["c","hardware","raspberry","transmitter"],"created_at":"2025-11-16T03:00:42.996Z","updated_at":"2025-11-20T21:03:42.888Z","avatar_url":"https://github.com/Manawyrm.png","language":"C","readme":"![FMBerry Logo](http://tbspace.de/holz/uzsjpoghdq.png)\nFMBerry\n=======\n\nWhat is this? \n-------------\nFMBerry is a piece of software that allows you to transmit FM radio with your Raspberry Pi.\n\n[YouTube-Video](http://youtu.be/NJRADd7C6rs)\n\nHow does it work? \n-------------\nIt uses the Sony-Ericsson MMR-70 transmitter, which was originally intended for use with Sonys Walkman cellphones from early 2000s.\n\nWhat do I need to build this? \n-------------\n* MMR-70 transmitter\n* Raspberry Pi (compatible \u0026 tested with every Pi, Model Beta, A, B, B+, 2, Zero, 3)\n* Soldering equipment (soldering iron and some solder)\n* Cable for connecting to your Raspberry Pis GPIO port (old IDE cable does work fine!)\n\nThe hardware is explained here:\n[HARDWARE.md](https://github.com/Manawyrm/FMBerry/blob/master/HARDWARE.md#fmberry---hardware)\n\nInstallation\n-------------\nThis software was developed under Raspbian Wheezy 2013-02-09.\n\n## Arch Linux users: [AUR - fmberry-rpi-git](https://aur.archlinux.org/packages/fmberry-rpi-git/)\n\n### Step 1: Enabling I²C\n\nOpen raspi-blacklist.conf:\n\n``sudo nano /etc/modprobe.d/raspi-blacklist.conf``\n\nComment out the Line \"``blacklist i2c-bcm2708``\" with a #.\nSave with Ctrl+O and close nano with Ctrl+X\n\nTo make sure I²C Support is loaded at boottime open /etc/modules.\n\n``sudo nano /etc/modules``\n\nAdd the following lines:\n\n``i2c-dev``\n\nThen again, Save with Ctrl+O and then close nano with Ctrl+X.\n\nPlease reboot your Raspberry after this step. \n\n### Step 2: Installing I²C tools and dependencies for the build\n\nFirst update your local package repository with\n``sudo apt-get update``\n\nthen install all needed software with the following command:\n``sudo apt-get install i2c-tools build-essential git libconfuse-dev``\n \n### Step 3: Finding out your hardware revision\n\nRun \n``cat /proc/cpuinfo | grep \"CPU revision\"``\nin your terminal.\n\nAll Raspberry Pi's with a revision newer than rev. 2 have their i2c port connected up to /dev/i2c-1.\n\nOlder devices (beta, alpha, early 256MB Model B's) have it connected up to /dev/i2c-0. \n\n### Step 4: Checking the hardware\n\nYou can check your wiring with the following command:\n\n``i2cdetect -y 1``\n\nPlease remember that you need to run the command on another port on older revisions!\n\n``i2cdetect -y 0``\n\nYou should then see your transmitter at 0x66. \n\nIf you are not able to see your transmitter please double check your wiring!\n\nIf you connect you MMR-70 to I²C bus 0 on Raspberry Pi rev2 make sure that header P5 pins are configured as [I²C pins](http://www.raspberrypi.org/phpBB3/viewtopic.php?p=355638#p355638)!\n\n![Output of i2cdetect](http://tbspace.de/holz/csuqzygpwb.png)\n\n### Step 5: Building the software\nTo build the software execute the following commands (in your homefolder):\n\n```\ngit clone https://github.com/Manawyrm/FMBerry/\ncd FMBerry\n```\n\nIf you have got an old revision board, please open fmberryd.c and change the RPI_REVISION definition to ``RPI_REV1``! \n\n``make``\n\nCompiling the software will take a couple of seconds.\n### Step 6: Installing the software\nFMBerry is essentially a daemon called fmberryd.\nTo install it into your system path type \n```sudo make install```. \n\nYou can start it by typing ``sudo /etc/init.d/fmberry start``.\n\nTo control the daemon you have to use ctlfmberry.\n\nIt currently allows the following commands:\n* ``ctlfmberry set freq 99000`` - Frequency in kHz (76000 - 108000)\n* ``ctlfmberry poweron``\n* ``ctlfmberry poweroff``\n* ``ctlfmberry set rdsid DEADBEEF`` (8 chars! Longer strings will be truncated, shorter - padded with spaces)\n* ``ctlfmberry set rdstext Mike Oldfield - Pictures in the Dark`` (max. 64 chars. Longer strings will be truncated)\n* ``ctlfmberry set txpwr 0`` - 0.5 mW Outputpower\n* ``ctlfmberry set txpwr 1`` - 0.8 mW Outputpower\n* ``ctlfmberry set txpwr 2`` - 1.0 mW Outputpower\n* ``ctlfmberry set txpwr 3`` - 2.0 mW Outputpower (Default.)\n* ``ctlfmberry stereo on`` - Enables stereo signal (Default)\n* ``ctlfmberry stereo off`` - Disables stereo signal\n* ``ctlfmberry muteon`` - Mute audio\n* ``ctlfmberry muteoff`` - Unmute audio\n* ``ctlfmberry gainlow`` - Audio gain -9dB\n* ``ctlfmberry gainoff`` - Audio gain 0dB\"\n* ``ctlfmberry set volume 0-6`` Audio volume level 0 to 6, equal -9dB to +9db, 3dB step\n* ``ctlfmberry status`` - Print current status\n* ``ctlfmberry stop`` - Stop FMBerry daemon\n\nThat's it! :)\n### Step 7: Debugging\nFMBerry writes debugging output to /var/log/syslog.\n\nYou can watch the information by running ``ctlfmberry log``. It's essentially just a ```cat /var/log/syslog | grep fmberryd```\n\nIt will tell you what's wrong. \n\n### Updating the software\nPlease check for new dependencies. You can safely just run the ```apt-get install``` command again. It will only install new dependencies if necessary.\n\nFirst stop the daemon by typing ```/etc/init.d/fmberry stop```. \n\nThen run ```git pull``` followed by a ```make``` and a ```sudo make install```.\n\nYou can then start FMBerry again with ```/etc/init.d/fmberry start```.\n## Notes\n* The Daemon itself is essentially a simple TCP server. It is listening to Port 42516. (set in fmberry.conf) You can control it by sending the exact same commands you would give to ctlfmberry.\n* For information on How to control the Daemon have a look into ctlfmberry. It's a simple shell script.\n\n## Projects using FMBerry\n\nhttps://github.com/Manawyrm/FMBerryRDSMPD (streaming of MPD title data via RDS)\nhttps://github.com/akkinitsch/FMBerryRemote (streaming of internet radio streams, controllable via Webinterface)\nhttp://achilikin.blogspot.de/2013/06/sony-ericsson-mmr-70-transmitter-led.html (enabling the LED on the transmitter to be software controllable)\n\n## Common problems\n__The daemon does not show anything.__\n\nThat's normal. You have to use ./ctlfmberry to control the daemon.\n\n__I can't seem to hear music.__\n\nTurn up the volume/unmute your raspi with alsamixer.\n\n__I am getting compile errors.__\n\nDid you install all dependencies? (All lines with apt-get)\n\n__The transmission dies after a couple of minutes.__\n\nYou didn't disable the internal processor of the MMR70. Do this by connecting TP18 to GND.\n\n__The power supply of the raspberry pi shorts out/there are no lights anymore___\n\nThere is a short circuit. Probably caused by a wiring fault or by using an 80pin IDE cable for connecting the FMBerry.\n\n\n__Alternative linux distributions don't detect the I2C bus (ArchLinux, OpenWRT, OSMC)__\n\nLinux 3.18 introduced a new feature called Device Tree support. To get the I²C Bus working, you need to put this configuration at the end of /boot/config.txt (change the first parameter according to the RPi you have): \n```\ndevice_tree=bcm2708-rpi-b-plus.dtb\ndevice_tree_param=i2c1=on\ndevice_tree_param=spi=on\n```\n\n\nThanks to Daniel for the solution to that problem! \n","funding_links":[],"categories":["electronic"],"sub_categories":["USB GADGET"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FManawyrm%2FFMBerry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FManawyrm%2FFMBerry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FManawyrm%2FFMBerry/lists"}