{"id":18852751,"url":"https://github.com/tatsh/mb8611","last_synced_at":"2025-04-14T10:22:38.461Z","repository":{"id":157153075,"uuid":"633332320","full_name":"Tatsh/mb8611","owner":"Tatsh","description":"CLI tool and library for managing the Motorola MB8611 series modem and maybe other Motorola devices.","archived":false,"fork":false,"pushed_at":"2025-04-07T23:09:46.000Z","size":995,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T12:07:15.037Z","etag":null,"topics":["command-line-tool","modem","motorola"],"latest_commit_sha":null,"homepage":"https://mb8611.readthedocs.io","language":"Python","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/Tatsh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Tatsh","patreon":"tatsh2","ko_fi":"tatsh2","liberapay":"tatsh2"}},"created_at":"2023-04-27T09:16:41.000Z","updated_at":"2025-04-07T23:09:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"d26f7f1b-1d6f-4f9b-b259-8cb2efac7ff1","html_url":"https://github.com/Tatsh/mb8611","commit_stats":null,"previous_names":["tatsh/mb8611","tatsh/mb8611-cli"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tatsh%2Fmb8611","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tatsh%2Fmb8611/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tatsh%2Fmb8611/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tatsh%2Fmb8611/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tatsh","download_url":"https://codeload.github.com/Tatsh/mb8611/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248565058,"owners_count":21125417,"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":["command-line-tool","modem","motorola"],"created_at":"2024-11-08T03:41:27.373Z","updated_at":"2025-04-14T10:22:38.442Z","avatar_url":"https://github.com/Tatsh.png","language":"Python","funding_links":["https://github.com/sponsors/Tatsh","https://patreon.com/tatsh2","https://ko-fi.com/tatsh2","https://liberapay.com/tatsh2"],"categories":[],"sub_categories":[],"readme":"# mb8611\n\n[![QA](https://github.com/Tatsh/mb8611/actions/workflows/qa.yml/badge.svg)](https://github.com/Tatsh/mb8611/actions/workflows/qa.yml)\n[![Tests](https://github.com/Tatsh/mb8611/actions/workflows/tests.yml/badge.svg)](https://github.com/Tatsh/mb8611/actions/workflows/tests.yml)\n[![Coverage Status](https://coveralls.io/repos/github/Tatsh/mb8611/badge.svg?branch=master)](https://coveralls.io/github/Tatsh/mb8611?branch=master)\n[![Documentation Status](https://readthedocs.org/projects/mb8611/badge/?version=latest)](https://mb8611.readthedocs.io/en/latest/?badge=latest)\n![PyPI - Version](https://img.shields.io/pypi/v/mb8611)\n![GitHub tag (with filter)](https://img.shields.io/github/v/tag/Tatsh/mb8611)\n![GitHub](https://img.shields.io/github/license/Tatsh/mb8611)\n![GitHub commits since latest release (by SemVer including pre-releases)](https://img.shields.io/github/commits-since/Tatsh/mb8611/v0.0.1/master)\n\nCLI tool and library for managing the Motorola MB8611 series modem and maybe other Motorola devices.\n\n## Installation\n\n### Poetry\n\n```shell\npoetry add mb8611\n```\n\n### Pip\n\n```shell\npip install mb8611\n```\n\n## Command line usage\n\n```plain\nUsage: mb8611 [OPTIONS] {addr|address|clear-log|conn|connection|connection-\n              info|conninfo|down|downstream|lag|lag-\n              status|log|reboot|software|software-status|startup|startup-\n              sequence|up|upstream}\n\n  Main CLI.\n\nOptions:\n  -H, --host TEXT      Host to connect to.\n  -d, --debug          Enable debug level logging.\n  -j, --json           Only output JSON. Encoded lists (tables) will still be\n                       parsed.\n  -p, --password TEXT  Administrator password.\n  -u, --username TEXT  Administrator username.\n  --help               Show this message and exit.\n```\n\n## Library usage\n\nRefer to `mb8611.api` files for fields. Almost every field type is a string.\n\n### Actions\n\n- `GetHomeAddress`\n- `GetHomeConnection`\n- `GetMotoLagStatus`\n- `GetMotoStatusConnectionInfo`\n- `GetMotoStatusDownstreamChannelInfo`\n- `GetMotoStatusLog`\n- `GetMotoStatusLogXXX`\n- `GetMotoStatusSecAccount`\n- `GetMotoStatusSecXXX`\n- `GetMotoStatusSoftware`\n- `GetMotoStatusStartupSequence`\n- `GetMotoStatusUpstreamChannelInfo`\n- `GetNetworkModeSettings`\n\nSome actions require a specific payload:\n\n- `Login` — [`LoginPayload`](mb8611/api/login.py)\n- `SetMotoLagStatus` — [`SetMotoLagStatusPayload`](mb8611/api/settings.py)\n- `SetMotoStatusDSTargetFreq` — see [`SetMotoStatusDSTargetFreqPayload`](mb8611/api/settings.py)\n- `SetStatusLogSettings` — see [`ClearLogPayload`](mb8611/api/settings.py)\n- `SetStatusSecuritySettings` — see [`RebootPayload`](mb8611/api/settings.py)\n\n### Example\n\n```python\nimport pprint\n\nfrom mb8611.client import Client\n\nwith Client(the_password) as client:\n    addr = client.call_hnap('GetHomeAddress')\n    # Fully typed dictionary\n    assert addr['GetHomeAddressResponse']['GetHomeAddressResult'] == 'OK'\n    pprint.pprint(addr)\n```\n\n`Client` implements a context manager. Calling `Client.login` unnecessary when using it with the\n`with` statement.\n\n```python\n{'GetHomeAddressResponse': {'GetHomeAddressResult': 'OK',\n                            'MotoHomeIpAddress': '...',\n                            'MotoHomeIpv6Address': '',\n                            'MotoHomeMacAddress': '...',\n                            'MotoHomeSfVer': '8611-19.2.18'}}\n```\n\n## Examples\n\n### Check if the modem is online\n\n```shell\nmb8611 --json conn | jq -r .MotoHomeOnline\n```\n\n```plain\nConnected\n```\n\n### Display the modem's Upstream Bonded Channels\n\nThe output is a list of lists. Columns are:\n\n- Channel\n- Lock Status\n- Channel Type\n- Channel ID\n- Symb. Rate (Ksym/sec)\n- Freq. (MHz)\n- Pwr (dBmV)\n\n```shell\nmb8611 up -j | jq -r '.MotoConnUpstreamChannel[]|@csv' | tr -d '\"' | tabulate -s ','\n```\n\n```plain\n-  ------  ------  -  ----  ----  --\n1  Locked  SC-QAM  1  5120  17.6  43\n2  Locked  SC-QAM  2  5120  24    47\n3  Locked  SC-QAM  3  5120  30.4  43\n4  Locked  SC-QAM  4  5120  36.8  44\n-  ------  ------  -  ----  ----  --\n```\n\n## Known issues\n\n**Note:** The modem does not require any authentication for the currently working actions such as\n`addr`.\n\nThe following actions do not work as they require proper authentication (these return `'UN-AUTH'`\nat this time):\n\n- `clear-log` / `SetStatusLogSettings`\n- `SetStatusSecuritySettings`\n- `SetMotoLagStatus`\n- `SetMotoStatusDSTargetFreq`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftatsh%2Fmb8611","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftatsh%2Fmb8611","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftatsh%2Fmb8611/lists"}