seeed-jetson-developer 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. seeed_jetson_developer-0.1.0/LICENSE +21 -0
  2. seeed_jetson_developer-0.1.0/MANIFEST.in +11 -0
  3. seeed_jetson_developer-0.1.0/PKG-INFO +170 -0
  4. seeed_jetson_developer-0.1.0/README.md +116 -0
  5. seeed_jetson_developer-0.1.0/pyproject.toml +57 -0
  6. seeed_jetson_developer-0.1.0/requirements.txt +9 -0
  7. seeed_jetson_developer-0.1.0/seeed_jetson_develop/__init__.py +7 -0
  8. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/1.png +0 -0
  9. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/4.jpg +0 -0
  10. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/97.png +0 -0
  11. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/button.jpg +0 -0
  12. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/classic_fc_rec_2.png +0 -0
  13. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/flash.jpg +0 -0
  14. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/flash1.jpg +0 -0
  15. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/flash_1.png +0 -0
  16. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/industrial_rec_2.png +0 -0
  17. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/mini_lsusb_3.png +0 -0
  18. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/reComputer_mini_rec.png +0 -0
  19. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/reset.png +0 -0
  20. seeed_jetson_developer-0.1.0/seeed_jetson_develop/assets/recovery/robotics_lsusb_f.png +0 -0
  21. seeed_jetson_developer-0.1.0/seeed_jetson_develop/cli.py +113 -0
  22. seeed_jetson_developer-0.1.0/seeed_jetson_develop/core/__init__.py +3 -0
  23. seeed_jetson_developer-0.1.0/seeed_jetson_develop/core/config.py +45 -0
  24. seeed_jetson_developer-0.1.0/seeed_jetson_develop/core/device.py +14 -0
  25. seeed_jetson_developer-0.1.0/seeed_jetson_develop/core/events.py +28 -0
  26. seeed_jetson_developer-0.1.0/seeed_jetson_develop/core/platform_detect.py +27 -0
  27. seeed_jetson_developer-0.1.0/seeed_jetson_develop/core/runner.py +284 -0
  28. seeed_jetson_developer-0.1.0/seeed_jetson_develop/data/l4t_data.json +844 -0
  29. seeed_jetson_developer-0.1.0/seeed_jetson_develop/data/product_images.json +226 -0
  30. seeed_jetson_developer-0.1.0/seeed_jetson_develop/data/recovery_guides.json +222 -0
  31. seeed_jetson_developer-0.1.0/seeed_jetson_develop/data/recovery_guides.py +320 -0
  32. seeed_jetson_developer-0.1.0/seeed_jetson_develop/flash.py +516 -0
  33. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/__init__.py +14 -0
  34. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/ai_chat.py +877 -0
  35. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/flash_animation.py +315 -0
  36. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/main_window.py +473 -0
  37. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/main_window_modern.py +718 -0
  38. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/main_window_sdk.py +1320 -0
  39. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/main_window_v2.py +2997 -0
  40. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/runtime_i18n.py +636 -0
  41. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/styles.py +482 -0
  42. seeed_jetson_developer-0.1.0/seeed_jetson_develop/gui/theme.py +958 -0
  43. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/__init__.py +0 -0
  44. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/apps/__init__.py +2 -0
  45. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/apps/data/apps.json +102 -0
  46. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/apps/data/jetson_examples.json +632 -0
  47. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/apps/page.py +792 -0
  48. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/apps/registry.py +84 -0
  49. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/community/__init__.py +2 -0
  50. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/community/page.py +14 -0
  51. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/devices/__init__.py +2 -0
  52. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/devices/diagnostics.py +244 -0
  53. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/devices/page.py +595 -0
  54. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/flash/__init__.py +2 -0
  55. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/flash/page.py +16 -0
  56. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/flash/thread.py +81 -0
  57. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/__init__.py +2 -0
  58. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/agent_install_dialog.py +317 -0
  59. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/connector.py +94 -0
  60. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/desktop_dialog.py +336 -0
  61. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/desktop_remote.py +223 -0
  62. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/jetson_init.py +1243 -0
  63. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/native_terminal.py +197 -0
  64. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/net_share.py +384 -0
  65. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/net_share_dialog.py +475 -0
  66. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/remote/page.py +1324 -0
  67. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/skills/__init__.py +3 -0
  68. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/skills/data/skills.json +442 -0
  69. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/skills/engine.py +636 -0
  70. seeed_jetson_developer-0.1.0/seeed_jetson_develop/modules/skills/page.py +967 -0
  71. seeed_jetson_developer-0.1.0/seeed_jetson_develop/recovery.py +89 -0
  72. seeed_jetson_developer-0.1.0/seeed_jetson_developer.egg-info/PKG-INFO +170 -0
  73. seeed_jetson_developer-0.1.0/seeed_jetson_developer.egg-info/SOURCES.txt +76 -0
  74. seeed_jetson_developer-0.1.0/seeed_jetson_developer.egg-info/dependency_links.txt +1 -0
  75. seeed_jetson_developer-0.1.0/seeed_jetson_developer.egg-info/entry_points.txt +2 -0
  76. seeed_jetson_developer-0.1.0/seeed_jetson_developer.egg-info/requires.txt +9 -0
  77. seeed_jetson_developer-0.1.0/seeed_jetson_developer.egg-info/top_level.txt +1 -0
  78. seeed_jetson_developer-0.1.0/setup.cfg +4 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Seeed Studio
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,11 @@
1
+ include README.md
2
+ include LICENSE
3
+ include requirements.txt
4
+ include pyproject.toml
5
+ recursive-include seeed_jetson_develop/data *.json
6
+ recursive-include seeed_jetson_develop/assets/recovery *
7
+ recursive-include seeed_jetson_develop/modules *.json
8
+ prune seeed_jetson_develop/tmp-refer
9
+ global-exclude __pycache__
10
+ global-exclude *.pyc
11
+ global-exclude *.pyo
@@ -0,0 +1,170 @@
1
+ Metadata-Version: 2.4
2
+ Name: seeed-jetson-developer
3
+ Version: 0.1.0
4
+ Summary: Seeed Jetson Developer Tool — Flash, device management, app market, skills, and remote development
5
+ Author-email: Brian9527 <brian@seeedstudio.com>, Lorraine <lorraine@seeedstudio.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Seeed Studio
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/Seeed-Studio/seeed-jetson-develop
29
+ Project-URL: Repository, https://github.com/Seeed-Studio/seeed-jetson-develop
30
+ Project-URL: Issues, https://github.com/Seeed-Studio/seeed-jetson-develop/issues
31
+ Keywords: jetson,nvidia,embedded,flash,seeed,recomputer
32
+ Classifier: Programming Language :: Python :: 3
33
+ Classifier: Programming Language :: Python :: 3.10
34
+ Classifier: Programming Language :: Python :: 3.11
35
+ Classifier: Programming Language :: Python :: 3.12
36
+ Classifier: License :: OSI Approved :: MIT License
37
+ Classifier: Operating System :: OS Independent
38
+ Classifier: Topic :: Software Development :: Embedded Systems
39
+ Classifier: Topic :: System :: Hardware
40
+ Classifier: Environment :: X11 Applications :: Qt
41
+ Requires-Python: >=3.10
42
+ Description-Content-Type: text/markdown
43
+ License-File: LICENSE
44
+ Requires-Dist: requests>=2.25.0
45
+ Requires-Dist: tqdm>=4.60.0
46
+ Requires-Dist: click>=8.0.0
47
+ Requires-Dist: rich>=10.0.0
48
+ Requires-Dist: PyQt5>=5.15.0
49
+ Requires-Dist: paramiko>=2.8.0
50
+ Requires-Dist: anthropic>=0.20.0
51
+ Requires-Dist: pyserial>=3.5
52
+ Requires-Dist: pyte>=0.8.2
53
+ Dynamic: license-file
54
+
55
+ # Seeed Jetson Develop Tool
56
+
57
+ 面向 Seeed Studio Jetson 全系列产品的 AI 开发工作台,覆盖从刷机到应用部署的完整流程。
58
+
59
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
60
+ [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/)
61
+
62
+ ![UI Preview](assets/reference-UI.png)
63
+
64
+ ---
65
+
66
+ ## 功能概览
67
+
68
+ | 模块 | 状态 | 说明 |
69
+ |------|------|------|
70
+ | 烧录 | ✅ | 全系列 Jetson 固件下载、SHA256 校验、一键刷写 |
71
+ | 设备管理 | ✅ | 快速诊断、外设检测、设备信息采集 |
72
+ | Skills | ✅ | 50+ 内置技能 + OpenClaw 社区技能,覆盖驱动、AI 部署、系统优化 |
73
+ | 环境配置 | 🚧 | 一键配置 PyTorch、Docker、jtop 等开发环境 |
74
+ | 应用市场 | 🚧 | AI 应用一键安装(YOLOv8、Ollama、DeepSeek 等) |
75
+ | 远程开发 | 🚧 | SSH 连接管理、VS Code Remote 集成 |
76
+
77
+ ---
78
+
79
+ ## 安装
80
+
81
+ **系统要求**:Ubuntu 20.04 / 22.04,Python 3.8+,PyQt5
82
+
83
+ ```bash
84
+ git clone https://github.com/Seeed-Studio/seeed-jetson-develop.git
85
+ cd seeed-jetson-develop
86
+ pip install -r requirements.txt
87
+ ```
88
+
89
+ 启动 GUI:
90
+
91
+ ```bash
92
+ python3 run_v2.py
93
+ ```
94
+
95
+ ---
96
+
97
+ ## 支持设备
98
+
99
+ ### reComputer Super
100
+ J4012s / J4011s / J3011s / J3010s — L4T 36.4.3
101
+
102
+ ### reComputer Mini
103
+ J4012mini / J4011mini — L4T 36.3.0, 35.5.0
104
+ J3011mini / J3010mini — L4T 36.4.3, 36.3.0, 35.5.0
105
+
106
+ ### reComputer Robotics
107
+ J4012robotics / J4011robotics / J3011robotics / J3010robotics — L4T 36.4.3
108
+
109
+ ### reComputer Classic
110
+ J4012classic / J4011classic / J3011classic / J3010classic — L4T 36.4.3, 36.4.0, 36.3.0, 35.5.0
111
+
112
+ ### reComputer Industrial
113
+ J4012industrial / J4011industrial / J3011industrial / J3010industrial — L4T 36.4.3, 36.4.0, 36.3.0, 35.5.0, 35.3.1
114
+ J2012industrial / J2011industrial (Xavier NX) — L4T 35.5.0, 35.3.1
115
+
116
+ ### reServer Industrial
117
+ J4012reserver / J4011reserver / J3011reserver / J3010reserver — L4T 36.4.3, 36.4.0, 36.3.0
118
+
119
+ ### J501 系列(AGX Orin)
120
+ 64GB / 32GB,含 GMSL 版本 — L4T 36.4.3, 36.3.0, 35.5.0
121
+
122
+ ---
123
+
124
+ ## CLI
125
+
126
+ ```bash
127
+ # 列出支持的产品
128
+ python3 -m seeed_jetson_develop.cli list-products
129
+
130
+ # 查看 Recovery 教程
131
+ python3 -m seeed_jetson_develop.cli recovery -p j4012mini
132
+
133
+ # 刷写固件
134
+ python3 -m seeed_jetson_develop.cli flash -p j4012mini -l 36.3.0
135
+ ```
136
+
137
+ ---
138
+
139
+ ## Skills
140
+
141
+ 内置 50+ 技能,覆盖以下方向:
142
+
143
+ - **驱动 & 系统修复**:USB-WiFi、5G 模块、蓝牙冲突、NVMe 启动、Docker 清理
144
+ - **AI & 大模型**:PyTorch、Ollama、DeepSeek、Qwen2、LeRobot、vLLM
145
+ - **视觉 / YOLO**:YOLOv8、DeepStream、NVBLOX、深度估计
146
+ - **网络 & 远程**:VS Code Server、VNC、SSH 密钥、代理配置
147
+ - **系统优化**:最大性能模式、Swap 配置、风扇控制、缓存清理
148
+
149
+ 同时支持 [OpenClaw](https://github.com/Seeed-Studio/openclaw) 格式的社区技能,放入 `skills/openclaw/` 目录后自动加载。
150
+
151
+ ---
152
+
153
+ ## 文档
154
+
155
+ - [QUICKSTART.md](docs/QUICKSTART.md) — 快速上手
156
+ - [USAGE.md](docs/USAGE.md) — CLI 详细用法
157
+ - [GUI_GUIDE.md](docs/GUI_GUIDE.md) — GUI 使用指南
158
+ - [CONTEXT.md](CONTEXT.md) — 工程架构说明
159
+
160
+ ---
161
+
162
+ ## 技术支持
163
+
164
+ - Wiki:https://wiki.seeedstudio.com/
165
+ - 论坛:https://forum.seeedstudio.com/
166
+ - Discord:https://discord.gg/eWkprNDMU7
167
+
168
+ ## License
169
+
170
+ MIT
@@ -0,0 +1,116 @@
1
+ # Seeed Jetson Develop Tool
2
+
3
+ 面向 Seeed Studio Jetson 全系列产品的 AI 开发工作台,覆盖从刷机到应用部署的完整流程。
4
+
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/)
7
+
8
+ ![UI Preview](assets/reference-UI.png)
9
+
10
+ ---
11
+
12
+ ## 功能概览
13
+
14
+ | 模块 | 状态 | 说明 |
15
+ |------|------|------|
16
+ | 烧录 | ✅ | 全系列 Jetson 固件下载、SHA256 校验、一键刷写 |
17
+ | 设备管理 | ✅ | 快速诊断、外设检测、设备信息采集 |
18
+ | Skills | ✅ | 50+ 内置技能 + OpenClaw 社区技能,覆盖驱动、AI 部署、系统优化 |
19
+ | 环境配置 | 🚧 | 一键配置 PyTorch、Docker、jtop 等开发环境 |
20
+ | 应用市场 | 🚧 | AI 应用一键安装(YOLOv8、Ollama、DeepSeek 等) |
21
+ | 远程开发 | 🚧 | SSH 连接管理、VS Code Remote 集成 |
22
+
23
+ ---
24
+
25
+ ## 安装
26
+
27
+ **系统要求**:Ubuntu 20.04 / 22.04,Python 3.8+,PyQt5
28
+
29
+ ```bash
30
+ git clone https://github.com/Seeed-Studio/seeed-jetson-develop.git
31
+ cd seeed-jetson-develop
32
+ pip install -r requirements.txt
33
+ ```
34
+
35
+ 启动 GUI:
36
+
37
+ ```bash
38
+ python3 run_v2.py
39
+ ```
40
+
41
+ ---
42
+
43
+ ## 支持设备
44
+
45
+ ### reComputer Super
46
+ J4012s / J4011s / J3011s / J3010s — L4T 36.4.3
47
+
48
+ ### reComputer Mini
49
+ J4012mini / J4011mini — L4T 36.3.0, 35.5.0
50
+ J3011mini / J3010mini — L4T 36.4.3, 36.3.0, 35.5.0
51
+
52
+ ### reComputer Robotics
53
+ J4012robotics / J4011robotics / J3011robotics / J3010robotics — L4T 36.4.3
54
+
55
+ ### reComputer Classic
56
+ J4012classic / J4011classic / J3011classic / J3010classic — L4T 36.4.3, 36.4.0, 36.3.0, 35.5.0
57
+
58
+ ### reComputer Industrial
59
+ J4012industrial / J4011industrial / J3011industrial / J3010industrial — L4T 36.4.3, 36.4.0, 36.3.0, 35.5.0, 35.3.1
60
+ J2012industrial / J2011industrial (Xavier NX) — L4T 35.5.0, 35.3.1
61
+
62
+ ### reServer Industrial
63
+ J4012reserver / J4011reserver / J3011reserver / J3010reserver — L4T 36.4.3, 36.4.0, 36.3.0
64
+
65
+ ### J501 系列(AGX Orin)
66
+ 64GB / 32GB,含 GMSL 版本 — L4T 36.4.3, 36.3.0, 35.5.0
67
+
68
+ ---
69
+
70
+ ## CLI
71
+
72
+ ```bash
73
+ # 列出支持的产品
74
+ python3 -m seeed_jetson_develop.cli list-products
75
+
76
+ # 查看 Recovery 教程
77
+ python3 -m seeed_jetson_develop.cli recovery -p j4012mini
78
+
79
+ # 刷写固件
80
+ python3 -m seeed_jetson_develop.cli flash -p j4012mini -l 36.3.0
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Skills
86
+
87
+ 内置 50+ 技能,覆盖以下方向:
88
+
89
+ - **驱动 & 系统修复**:USB-WiFi、5G 模块、蓝牙冲突、NVMe 启动、Docker 清理
90
+ - **AI & 大模型**:PyTorch、Ollama、DeepSeek、Qwen2、LeRobot、vLLM
91
+ - **视觉 / YOLO**:YOLOv8、DeepStream、NVBLOX、深度估计
92
+ - **网络 & 远程**:VS Code Server、VNC、SSH 密钥、代理配置
93
+ - **系统优化**:最大性能模式、Swap 配置、风扇控制、缓存清理
94
+
95
+ 同时支持 [OpenClaw](https://github.com/Seeed-Studio/openclaw) 格式的社区技能,放入 `skills/openclaw/` 目录后自动加载。
96
+
97
+ ---
98
+
99
+ ## 文档
100
+
101
+ - [QUICKSTART.md](docs/QUICKSTART.md) — 快速上手
102
+ - [USAGE.md](docs/USAGE.md) — CLI 详细用法
103
+ - [GUI_GUIDE.md](docs/GUI_GUIDE.md) — GUI 使用指南
104
+ - [CONTEXT.md](CONTEXT.md) — 工程架构说明
105
+
106
+ ---
107
+
108
+ ## 技术支持
109
+
110
+ - Wiki:https://wiki.seeedstudio.com/
111
+ - 论坛:https://forum.seeedstudio.com/
112
+ - Discord:https://discord.gg/eWkprNDMU7
113
+
114
+ ## License
115
+
116
+ MIT
@@ -0,0 +1,57 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "seeed-jetson-developer"
7
+ version = "0.1.0"
8
+ description = "Seeed Jetson Developer Tool — Flash, device management, app market, skills, and remote development"
9
+ readme = "README.md"
10
+ license = { file = "LICENSE" }
11
+ authors = [
12
+ { name = "Brian9527", email = "brian@seeedstudio.com" },
13
+ { name = "Lorraine", email = "lorraine@seeedstudio.com" },
14
+ ]
15
+ keywords = ["jetson", "nvidia", "embedded", "flash", "seeed", "recomputer"]
16
+ classifiers = [
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3.10",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "License :: OSI Approved :: MIT License",
22
+ "Operating System :: OS Independent",
23
+ "Topic :: Software Development :: Embedded Systems",
24
+ "Topic :: System :: Hardware",
25
+ "Environment :: X11 Applications :: Qt",
26
+ ]
27
+ requires-python = ">=3.10"
28
+ dependencies = [
29
+ "requests>=2.25.0",
30
+ "tqdm>=4.60.0",
31
+ "click>=8.0.0",
32
+ "rich>=10.0.0",
33
+ "PyQt5>=5.15.0",
34
+ "paramiko>=2.8.0",
35
+ "anthropic>=0.20.0",
36
+ "pyserial>=3.5",
37
+ "pyte>=0.8.2",
38
+ ]
39
+
40
+ [project.urls]
41
+ Homepage = "https://github.com/Seeed-Studio/seeed-jetson-develop"
42
+ Repository = "https://github.com/Seeed-Studio/seeed-jetson-develop"
43
+ Issues = "https://github.com/Seeed-Studio/seeed-jetson-develop/issues"
44
+
45
+ [project.scripts]
46
+ seeed-jetson-developer = "seeed_jetson_develop.cli:main"
47
+
48
+ [tool.setuptools.packages.find]
49
+ include = ["seeed_jetson_develop*"]
50
+
51
+ [tool.setuptools.package-data]
52
+ seeed_jetson_develop = [
53
+ "data/*.json",
54
+ "assets/recovery/*",
55
+ "modules/apps/data/*.json",
56
+ "modules/skills/data/*.json",
57
+ ]
@@ -0,0 +1,9 @@
1
+ requests>=2.25.0
2
+ tqdm>=4.60.0
3
+ click>=8.0.0
4
+ rich>=10.0.0
5
+ PyQt5>=5.15.0
6
+ paramiko>=2.8.0
7
+ anthropic>=0.20.0
8
+ pyserial>=3.5
9
+ pyte>=0.8.2
@@ -0,0 +1,7 @@
1
+ """
2
+ Seeed Jetson Flash - A tool for flashing Jetson devices
3
+ """
4
+
5
+ __version__ = "0.1.0"
6
+ __author__ = "Seeed Studio"
7
+ __email__ = "support@seeedstudio.com"
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ 命令行接口模块
4
+ """
5
+ import click
6
+ import json
7
+ import os
8
+ from pathlib import Path
9
+ from .flash import JetsonFlasher
10
+ from .recovery import RecoveryGuide
11
+
12
+
13
+ @click.group()
14
+ @click.version_option()
15
+ def cli():
16
+ """Seeed Jetson Flash - 为 Jetson 设备刷机的工具"""
17
+ pass
18
+
19
+
20
+ @cli.command()
21
+ @click.option('--product', '-p', required=True, help='产品型号 (例如: j4012mini)')
22
+ @click.option('--l4t', '-l', required=True, help='L4T 版本 (例如: 36.3.0)')
23
+ @click.option('--download-only', is_flag=True, help='仅下载固件,不刷写')
24
+ @click.option('--skip-verify', is_flag=True, help='跳过 SHA256 校验')
25
+ def flash(product, l4t, download_only, skip_verify):
26
+ """刷写 Jetson 设备"""
27
+ flasher = JetsonFlasher(product, l4t)
28
+
29
+ click.echo(f"正在为 {product} 准备 L4T {l4t} 固件...")
30
+
31
+ # 下载固件
32
+ if not flasher.download_firmware():
33
+ click.echo("固件下载失败", err=True)
34
+ return
35
+
36
+ # 校验固件
37
+ if not skip_verify:
38
+ if not flasher.verify_firmware():
39
+ click.echo("固件校验失败", err=True)
40
+ return
41
+
42
+ if download_only:
43
+ click.echo("固件下载完成")
44
+ return
45
+
46
+ # 解压固件
47
+ if not flasher.extract_firmware():
48
+ click.echo("固件解压失败", err=True)
49
+ return
50
+
51
+ # 刷写固件
52
+ if not flasher.flash_firmware():
53
+ click.echo("固件刷写失败", err=True)
54
+ return
55
+
56
+ click.echo("刷写完成!")
57
+
58
+
59
+ @cli.command()
60
+ @click.option('--product', '-p', required=True, help='产品型号')
61
+ def recovery(product):
62
+ """显示进入 Recovery 模式的教程"""
63
+ guide = RecoveryGuide(product)
64
+ guide.show_guide()
65
+
66
+
67
+ @cli.command()
68
+ def list_products():
69
+ """列出所有支持的产品"""
70
+ data_path = Path(__file__).parent / "data" / "l4t_data.json"
71
+ with open(data_path, 'r') as f:
72
+ data = json.load(f)
73
+
74
+ products = {}
75
+ for item in data:
76
+ product = item['product']
77
+ if product not in products:
78
+ products[product] = []
79
+ products[product].append(item['l4t'])
80
+
81
+ click.echo("支持的产品列表:\n")
82
+ for product, l4t_versions in sorted(products.items()):
83
+ click.echo(f" {product}")
84
+ click.echo(f" L4T 版本: {', '.join(l4t_versions)}")
85
+ click.echo()
86
+
87
+
88
+ @cli.command()
89
+ def gui():
90
+ """启动图形界面"""
91
+ try:
92
+ # 直接导入 main 函数,避免通过 __init__.py
93
+ import sys
94
+ from pathlib import Path
95
+
96
+ # 确保可以找到模块
97
+ module_path = Path(__file__).parent
98
+ if str(module_path) not in sys.path:
99
+ sys.path.insert(0, str(module_path))
100
+
101
+ from seeed_jetson_develop.gui.main_window import main as gui_main
102
+ gui_main()
103
+ except ImportError as e:
104
+ click.echo(f"错误: 无法启动 GUI,请安装 PyQt5: pip install PyQt5", err=True)
105
+ click.echo(f"详细错误: {e}", err=True)
106
+
107
+
108
+ def main():
109
+ cli()
110
+
111
+
112
+ if __name__ == '__main__':
113
+ main()
@@ -0,0 +1,3 @@
1
+ from .events import bus
2
+ from .runner import Runner
3
+ from .device import DeviceInfo
@@ -0,0 +1,45 @@
1
+ """全局配置持久化"""
2
+ import json
3
+ import os
4
+ from pathlib import Path
5
+
6
+ _CONFIG_PATH = Path.home() / ".config" / "seeed-jetson-tool" / "config.json"
7
+ DEFAULT_ANTHROPIC_BASE_URL = "https://api.anthropic.com"
8
+
9
+
10
+ def load() -> dict:
11
+ try:
12
+ return json.loads(_CONFIG_PATH.read_text(encoding="utf-8"))
13
+ except Exception:
14
+ return {}
15
+
16
+
17
+ def save(data: dict):
18
+ _CONFIG_PATH.parent.mkdir(parents=True, exist_ok=True)
19
+ _CONFIG_PATH.write_text(json.dumps(data, indent=2, ensure_ascii=False), encoding="utf-8")
20
+
21
+
22
+ def get_runtime_anthropic_settings() -> dict:
23
+ data = load()
24
+
25
+ config_key = (data.get("anthropic_api_key") or "").strip()
26
+ env_key = (os.environ.get("ANTHROPIC_API_KEY") or "").strip()
27
+ api_key = config_key or env_key
28
+ api_key_source = "config" if config_key else ("env" if env_key else "none")
29
+
30
+ config_url = (data.get("anthropic_base_url") or "").strip()
31
+ env_url = (os.environ.get("ANTHROPIC_BASE_URL") or "").strip()
32
+ base_url = config_url or env_url or DEFAULT_ANTHROPIC_BASE_URL
33
+ if config_url:
34
+ base_url_source = "config"
35
+ elif env_url:
36
+ base_url_source = "env"
37
+ else:
38
+ base_url_source = "default"
39
+
40
+ return {
41
+ "api_key": api_key,
42
+ "api_key_source": api_key_source,
43
+ "base_url": base_url,
44
+ "base_url_source": base_url_source,
45
+ }
@@ -0,0 +1,14 @@
1
+ """设备信息数据类"""
2
+ from dataclasses import dataclass, field
3
+ from typing import Optional
4
+
5
+
6
+ @dataclass
7
+ class DeviceInfo:
8
+ ip: str = ""
9
+ hostname: str = ""
10
+ model: str = "" # e.g. "reComputer J4012"
11
+ jetpack: str = "" # e.g. "6.0"
12
+ l4t: str = "" # e.g. "36.3.0"
13
+ connected: bool = False
14
+ diagnostics: dict = field(default_factory=dict)
@@ -0,0 +1,28 @@
1
+ """全局事件总线 — 模块间通信,避免直接 import 耦合"""
2
+ from PyQt5.QtCore import QObject, pyqtSignal
3
+
4
+
5
+ class EventBus(QObject):
6
+ # devices 模块
7
+ device_connected = pyqtSignal(dict) # payload: {ip, name, model}
8
+ device_disconnected = pyqtSignal(str) # payload: ip
9
+ diagnostics_done = pyqtSignal(dict) # payload: {item: status}
10
+
11
+ # flash 模块
12
+ flash_started = pyqtSignal(str, str) # product, l4t
13
+ flash_completed = pyqtSignal(bool, str) # success, message
14
+
15
+ # skills 模块
16
+ skill_run_requested = pyqtSignal(str) # skill_id
17
+ skill_completed = pyqtSignal(str, bool, str) # skill_id, success, log
18
+
19
+ # apps 模块
20
+ app_install_requested = pyqtSignal(str) # app_id
21
+ app_installed = pyqtSignal(str, bool) # app_id, success
22
+
23
+ # 导航
24
+ navigate_to = pyqtSignal(int) # page index
25
+
26
+
27
+ # 全局单例,所有模块 from seeed_jetson_develop.core import bus
28
+ bus = EventBus()
@@ -0,0 +1,27 @@
1
+ """运行环境检测 — 判断是否在 Jetson 设备本地运行"""
2
+ import os
3
+ import platform
4
+
5
+
6
+ def is_jetson() -> bool:
7
+ """
8
+ 检测当前是否运行在 NVIDIA Jetson 设备上。
9
+ 判断依据:Linux + aarch64 架构 + Tegra 特有文件。
10
+ """
11
+ if platform.system() != "Linux":
12
+ return False
13
+ if platform.machine() not in ("aarch64", "armv8l"):
14
+ return False
15
+ # Tegra release 标志文件
16
+ if os.path.exists("/etc/nv_tegra_release"):
17
+ return True
18
+ # 设备树 model 文件
19
+ model_file = "/proc/device-tree/model"
20
+ if os.path.exists(model_file):
21
+ try:
22
+ with open(model_file, "rb") as f:
23
+ model = f.read().decode("utf-8", errors="ignore").lower()
24
+ return "jetson" in model or "tegra" in model
25
+ except Exception:
26
+ pass
27
+ return False