{"id":20536665,"url":"https://github.com/islandcontroller/fiberaudio-108","last_synced_at":"2025-04-14T07:21:58.956Z","repository":{"id":153360541,"uuid":"327991461","full_name":"islandcontroller/fiberaudio-108","owner":"islandcontroller","description":"A low-cost USB audio interface with S/PDIF optical output, based on the Cmedia CM108 ASIC.","archived":false,"fork":false,"pushed_at":"2024-11-08T22:43:13.000Z","size":3691,"stargazers_count":17,"open_issues_count":0,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T21:03:47.060Z","etag":null,"topics":["audio-interface","electronics","oshw","pcb-layout","python","schematics","spdif","toslink","usb-audio","usb-audio-interface","usb-hid"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/islandcontroller.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-08T19:16:16.000Z","updated_at":"2024-11-09T16:39:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"fe51e5cd-fc5f-44a8-b780-a5fb09002b11","html_url":"https://github.com/islandcontroller/fiberaudio-108","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2Ffiberaudio-108","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2Ffiberaudio-108/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2Ffiberaudio-108/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/islandcontroller%2Ffiberaudio-108/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/islandcontroller","download_url":"https://codeload.github.com/islandcontroller/fiberaudio-108/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248837221,"owners_count":21169389,"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":["audio-interface","electronics","oshw","pcb-layout","python","schematics","spdif","toslink","usb-audio","usb-audio-interface","usb-hid"],"created_at":"2024-11-16T00:37:27.296Z","updated_at":"2025-04-14T07:21:58.918Z","avatar_url":"https://github.com/islandcontroller.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fiberaudio-108\r\n\r\n[![Prototyping](https://img.shields.io/badge/status-review-yellow?style=plastic)]()\r\n\r\nA low-cost USB audio interface with S/PDIF optical output, based on the Cmedia CM108AH ASIC.\r\n\r\n\u003cp align=\"center\"\u003e\u003cpicture\u003e\r\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"doc/block-schem-wh.svg\" /\u003e\r\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"doc/block-schem.svg\" /\u003e\r\n  \u003cimg alt=\"Block schematic\" src=\"doc/block-schem.svg\" /\u003e\r\n\u003c/picture\u003e\u003c/p\u003e\r\n\r\nView [**Schematic**](doc/sch_fiberaudio-108_rev5.pdf) :page_facing_up: or [**PCB Preview**](https://htmlpreview.github.io/?https://github.com/islandcontroller/fiberaudio-108/blob/master/doc/ibom.html) :globe_with_meridians:. Customize using the [**CM108AH Configuration Tool**](sw/README.md) :cd:.\r\n\r\nProduction files will be made available on the [Releases](https://github.com/islandcontroller/fiberaudio-108/releases) page, once validation is complete.\r\n\r\n### Key features\r\n\r\n* Cmedia CM108AH audio interface ASIC\r\n* 2.0 Stereo, up to 16-bit/48kHz (CD-DA equivalent)\r\n* USB Mini-B input\r\n* Optical S/PDIF output (JIS F05, e.g. TOSLINK\u0026trade;)\r\n* USB Audio Device Class 1.0, uses generic drivers\r\n* Configuration EEPROM\r\n\r\n## Overview\r\n\r\nThis USB audio interface provides a low-cost S/PDIF optical output for portable computers and tablet devices. Audio tranmission via optical link - as opposed to a wired line-level connection - eliminates hum caused by ground potential differences, and noise feed-through from switched-mode power supplies.\r\n\r\n| Design Requirement | Solution Approach |\r\n|--------------------|-------------------|\r\n| Provide electrical isolation between device and audio equipment | Audio signal transmission via optical link (e.g. TOSLINK\u0026trade;) |\r\n| Compatibility for wide range of operating systems, with minimal driver maintenance | USB Audio Device Class using OS-provided generic drivers |\r\n| IP accessibility for PCB design files | Use of free, open-source EDA tooling (e.g. KiCad) |\r\n| Commonly-used, small form-factor USB connector, robust enough to withstand portable use | USB **mini**-B receptacle |\r\n| Option for manual assembly | Passives no smaller than 0603. ICs leaded and no smaller than 0.5mm pin pitch (SSOP) |\r\n| Low PCB production capability requirements | \u0026bullet;\u0026nbsp;FR4 base material\u003cbr/\u003e\u0026bullet;\u0026nbsp;2-layer Cu, Top+Bot Mask, Top Overlay\u003cbr/\u003e\u0026bullet;\u0026nbsp;\u0026geq;0.25mm trace-to-outline\u003cbr/\u003e\u0026bullet;\u0026nbsp;\u0026geq;0.25mm trace width and spacing\u003cbr/\u003e\u0026bullet;\u0026nbsp;\u0026geq;0.35mm drill size\u003cbr/\u003e\u0026bullet;\u0026nbsp;Gerber, NC Drill and RS274X outputs |\r\n\r\n## Design Review (Prototyping)\r\n\r\nPrototyping was carried out using **rev. 3** board design files, in a minimum-order batch of 5 PCBs, including automated assembly.\r\n\r\n### Assembly\r\n\r\n* Manual rework of the PCB around `U3` (SRV05-4) was required in order to fix the issues found in *rev. 3*, after production was already started.\r\n* Parts `U1` (AT93C46D), `U2` (CM108AH), `SW1`, and both connectors were unavailable for automated assembly, and had to be retrofitted manually using hot-air reflow soldering.\r\n\r\n### Software Support\r\n\r\n* Drivers included with **SteamOS 3.0** provide full functionality out-of-box, including volume controls for S/PDIF output.\r\n\r\n\u003cp align=\"center\"\u003e\u003cimg src=\"doc/deck.png\" /\u003e\u003c/p\u003e\r\n\r\n* Generic Audio Device drivers included in **Windows 7.1** (x64) as well as **Windows 10** (Version 22H2, x64) only support S/PDIF output in a passthrough mode. **Volume control and the mute input are inoperative when using the default driver package** (see below for workaround).\r\n\r\n**Workaround:** ~~A vendor-specific Windows driver package for the CM108AH is available for download from the ASIC manufacturer's website: [https://www.cmedia.com.tw/support/download_center](https://www.cmedia.com.tw/support/download_center).~~\r\n\r\n\u003e Updated 08/2023: *Unfortunately, the ASIC manufacturer have stopped providing any drivers for download. I uploaded the latest signed driver package I could source (Version 8.1.8.2172) as [release `v0.1.5-driver-only`](https://github.com/islandcontroller/fiberaudio-108/releases/tag/v0.1.5-driver-only). Please check the file for integrity and verify it includes the correct signed driver binary before installing.*\r\n\r\n~~Using the Windows device manager, perform a manual driver update of the `Generic USB PnP Sound Device`, and select `Win8\\SoftwareDriver` from the extracted archive as the driver installation sources directory.~~\r\n\r\n\u003e Updated 08/2023: *To install the driver, extract the archive and right-click install the `Cm108.INF` file.*\r\n\r\nAfter installation and a reboot, a new `Digital Audio (USB PnP Sound Device)` device will show up in the Sound Settings dialog, alongside the old `Speakers (USB PnP Sound Device)` device. \r\n\r\n**Disable** the `Speaker` device.\r\n\r\nThis workaround was tested using Windows 7.1 (x64), and Windows 10 (Version 22H2, x64).\r\n\r\n### Device Configuration\r\n\r\n* A configuration tool for re-programming the external EEPROM was developed and is provided in the [`sw/`](sw/) subdirectory.\r\n\r\n* EEPROM access sporadically seems to return invalid data. Re-reading or re-programming the affected words can be used as a workaround.\r\n\r\n### Summary\r\n\r\n* The device works correctly in connection with Linux systems. For Windows hosts, a custom driver installation is required for the device to operate properly.\r\n\r\n## Licensing\r\n\r\nIf not stated otherwise within the specific file, the contents of this project are licensed under the CERN Open Hardware Licence Version 2 - Permissive. The full license text is provided in the [`LICENSE`](LICENSE) document.\r\n\r\n        SPDX-License-Identifier: CERN-OHL-P-2.0\r\n\r\nThis licensing model is compliant with the [Open Source Hardware Definition 1.0](https://www.oshwa.org/definition/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fislandcontroller%2Ffiberaudio-108","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fislandcontroller%2Ffiberaudio-108","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fislandcontroller%2Ffiberaudio-108/lists"}