{"slug": "show-hn-a-usb-c-lte-modem-that-gives-my-computer-a-phone-line", "title": "Show HN: A USB-C LTE modem that gives my computer a phone line", "summary": "Koppar released an open-source 4-layer USB-C LTE modem board that gives a computer its own phone line, handling LTE data, SMS and voice calls with call audio carried over USB, and published the full design—KiCad 10 project, Gerbers, JLCPCB assembly files and RP2040 sound-card firmware—on GitHub. The board pairs a Quectel EC25-EUX module (ordering code EC25EUXGR-128-SGNS, the EUX variant required because North American data-only versions lack voice) with an RP2040 that level-shifts the module's 1.8 V PCM interface into a USB microphone and speaker, so a computer can answer calls through a headset or hand them to a script or an AI agent. Koppar says the design was generated from a one-page spec and then reviewed part by part against the datasheets, with the review notes, ordering guidance and open items documented in REVIEW.md.", "body_md": "A 4-layer board that gives a computer its own phone line: LTE data, SMS and voice calls, with the call audio on USB. Plug in a nano-SIM and one USB-C cable, and the computer can answer a call through your headset, hand it to a script or an AI agent, or send a text.\n\nThe board was designed by [Koppar](https://koppar.ai/?ref=gh-lte) from a one-page\nspec ([`spec.txt`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/spec.txt)), then reviewed part by part against the datasheets.\n\nOne USB-C cable, and the computer sees three ordinary devices through the on-board USB hub:\n\n| Device | From | For | \n|---|---|---|\n| Network adapter | Quectel EC25-EUX (U8) | LTE data, with 3G and 2G fallback (European bands) | \n| Serial ports | EC25-EUX | AT commands: caller ID ( `+CLIP` ), texts (`AT+CMGS` ), answer (`ATA` ) | \n| USB sound card | RP2040 (U5) | Call audio: the module's 1.8 V PCM interface, level-shifted, as a USB microphone and speaker | \n\nThere is no battery, screen or speaker. Three LEDs show NET (green), RING (amber) and CALL (blue). Power is 5 V from USB-C, a 3.8 V / 3 A buck for the module's 2 A transmit bursts, and 3.3 V for the hub, the RP2040 and its flash.\n\n| Top | Back | \n|---|---|\n\n| Path | What it is | \n|---|---|\n| [`spec.txt`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/spec.txt) | The spec the board was designed from. | \n| [`board/`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/board) | KiCad 10 project: schematic, board, rules, the module footprint, symbol and 3D model. | \n| [`board/fab/`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/board/fab) | Gerbers and drill files ( `gerbers.zip` ), IPC-2581, schematic PDF. | \n| [`board/fab/jlc/`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/board/fab/jlc) | JLCPCB assembly BOM and placement files, with the part choices checked by hand. | \n| [`REVIEW.md`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/REVIEW.md) | The design review: what passed, what changed and why, ordering notes, what is still open. | \n| [`firmware/`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/firmware) | The RP2040 sound-card firmware (after bring-up). | \n\n**Board.** Upload `board/fab/gerbers.zip` to JLCPCB: 4 layers, 1.6 mm, stackup\nJLC04161H-3313 (the antenna feeds are 49 Ω on it). Every via is 0.45 / 0.2 mm and\nnone sits in a pad, so pick *Min via hole size 0.2mm/(0.3/0.35mm)* and *Via covering:\nPlugged*: no via-in-pad, no extra options.\n\n**Assembly.** Use `board/fab/jlc/BOM-JLCPCB.csv` and `CPL-JLCPCB.csv`. Glance at the\nplacement preview before confirming, especially the LEDs and the SIM socket\n(the card slot is at the board edge). [`REVIEW.md`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/REVIEW.md#ordering-notes-checked-2026-10-30-against-the-live-jlcpcb-catalogue)\nlists the parts the files correct.\n\n**Parts you source yourself.** These are not on JLCPCB's assembly line, or are not on the board at all:\n\n| Part | What to get | Where | \n|---|---|---|\n| U8, the LTE module | Quectel EC25-EUX, ordering code **EC25EUXGR-128-SGNS** (EC25EUXGA-128-SGNS is end-of-life; same LGA-144 footprint). It must be the EUX: the North American data-only variants have no voice. | [Techship](https://techship.com/product/quectel-ec25-eux-lte-cat-4-lga) ,[DigiKey](https://www.digikey.com/en/products/detail/quectel/EC25EUXGR-128-SGNS/15516833) ,[Octopart](https://octopart.com/part/quectel/EC25EUXGR-128-SGNS) (stock changes, check the suffix). Deselect U8 at assembly and solder it with hot air or a stencil, or consign it. | \n| 2 antennas | LTE, 698 to 2690 MHz, U.FL (I-PEX MHF I), 50 Ω: one on MAIN (J3), one on DIV (J4) | e.g. [Taoglas FXUB63](https://www.mouser.com/new/taoglas/taoglas-fxub63/) or[Taoglas FXUB62.07.0150C](https://www.digikey.com/en/products/detail/taoglas-limited/FXUB62-07-0150C/16610012) | \n| SIM | A nano-SIM with a voice plan | Your carrier | \n| Cable and port | USB-C on both ends, from a port that offers 3 A at 5 V | The 5.1 kΩ CC resistors make the board a sink; they negotiate nothing, so a USB-A port or a 1.5 A source will brown out in a 2G burst | \n\nOpen `board/koppar-lte-modem.kicad_pro` in KiCad 10. The module's footprint, symbol\nand 3D model are in the project (`board/footprints`, `board/custom_syms`,\n`board/models`), wired in by the project's library tables.\n\nKiCad's library has no 3D model for two of the footprints, so the 3D viewer shows them without a body:\n\n| Part | Footprint | 3D model | \n|---|---|---|\n| J1, USB-C receptacle | `Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12` | [LCSC C165948](https://www.lcsc.com/product-detail/C165948.html) (EasyEDA model) | \n| J2, nano-SIM socket | `Connector_JAE:JAE_SIM_Card_SF72S006` | [LCSC C2977286](https://www.lcsc.com/product-detail/C2977286.html) (EasyEDA model) | \n\n[easyeda2kicad](https://github.com/uPesy/easyeda2kicad.py) converts either one to a\n`.wrl` you can attach to the footprint. The renders above use them.\n\nThere is no BOOTSEL button. A blank RP2040 boots into its USB bootloader anyway, and the back has three labelled pad groups for the rest:\n\n- **BOOT + GND** : short them while plugging in and the RP2040 comes up as a USB drive for a new`.uf2` , even after a firmware that crashes before USB starts.\n- **SWD (CLK, DIO, GND)** : a Pico Debug Probe or any CMSIS-DAP probe.\n- **USB_BOOT + 1V8** : short them while plugging in and the EC25 starts in emergency download mode, for a modem update that went wrong.\n\nThe modem does not switch itself on: the RP2040 drives its PWRKEY (GPIO22) and RESET_N (GPIO23). Until the firmware runs, the computer sees only the hub and the RP2040.\n\nThe first version (rev A) had an antenna feed at 35 Ω that hopped\nlayers, a buck 60 mm from its inductor, and a SIM socket facing the wrong way. All\nthree are fixed here, along with the parts list and the assembly rotations.\n[`REVIEW.md`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/REVIEW.md) has every finding with its numbers.\n\n| Board | Rev B: 0 DRC errors, 0 unconnected, KiCad 10. Being ordered. | \n| Next | Once the boards are built: bring-up, AT commands, the sound-card firmware, the first call and text. | \n\nVoLTE is optional on the EC25-EUX. Where 2G and 3G are switched off, calls need a module firmware with VoLTE and a carrier that allows it; ask the seller.\n\nThis board started as a page of text. [Koppar](https://koppar.ai/?ref=gh-lte) takes a\nspec like [`spec.txt`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/spec.txt) to a schematic, a routed board, a BOM at live prices\nand Gerbers. It also takes a KiCad board you already have, or works from your own\nagent over MCP.\n\nCERN Open Hardware Licence Version 2, Permissive ([`LICENSE`](https://github.com/Koppar-AI/koppar-lte-modem/blob/main/LICENSE)).", "url": "https://wpnews.pro/news/show-hn-a-usb-c-lte-modem-that-gives-my-computer-a-phone-line", "canonical_source": "https://github.com/Koppar-AI/koppar-lte-modem", "published_at": "2026-10-31 15:56:41+00:00", "updated_at": "2026-10-31 16:22:03.401370+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools"], "entities": ["Koppar", "Quectel", "EC25-EUX", "RP2040", "JLCPCB", "KiCad", "Taoglas", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-a-usb-c-lte-modem-that-gives-my-computer-a-phone-line", "markdown": "https://wpnews.pro/news/show-hn-a-usb-c-lte-modem-that-gives-my-computer-a-phone-line.md", "text": "https://wpnews.pro/news/show-hn-a-usb-c-lte-modem-that-gives-my-computer-a-phone-line.txt", "jsonld": "https://wpnews.pro/news/show-hn-a-usb-c-lte-modem-that-gives-my-computer-a-phone-line.jsonld"}}