Merge ~jocave/certification-docs:add-iot-coverage-guide into certification-docs:master
- Git
- lp:~jocave/certification-docs
- add-iot-coverage-guide
- Merge into master
Status: | Merged |
---|---|
Approved by: | Rod Smith |
Approved revision: | 14afe6b7325d7b7752d392c0ef01c0e2ad4511b0 |
Merged at revision: | 0b3d51106ebecbd81e711de68623264261c265c8 |
Proposed branch: | ~jocave/certification-docs:add-iot-coverage-guide |
Merge into: | certification-docs:master |
Diff against target: |
424 lines (+392/-1) 2 files modified
Coverage_Guide_IoT-22.04.rst (+387/-0) Makefile (+5/-1) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Rod Smith | Approve | ||
Review via email: mp+422753@code.launchpad.net |
Commit message
Description of the change
Add the IoT coverage guide for UC 22 / 22.04 to the certification-docs repository. I think we would like to move to the devices docs being publishable in html format as well as PDF. The git versioning is also appealing.
I've done a quick conversion of the current google doc to RST based on the server coverage guide and checks it produces a reasonable looking PDF.
I didnt want to mess with the current Makefile targets (e.g. the coverage one) in case you have anything using those and expecting particular output.
Jeff Lane (bladernr) wrote : | # |
Rod Smith (rodsmith) wrote : | # |
I concur with Jeff on his point #1. Although the added file builds cleanly to both PDF and HTML when doing a "make all", new Makefile targets to build just this new file are highly desirable. (Without this change, building this one document requires building everything else, and that build could conceivably fail if there's a problem building something else -- say, if a change to rst2pdf causes problems on some documents but not others.) This change could be put into a separate MR, but IMHO it'd be cleaner to just add it to this MR. Given the current Makefile target naming, I'd suggest "iot_coverage" and "iot_coverageh" as target names for PDF and HTML, respectively, but feel free to use what you like.
Changes to packaging rules are a bit iffier. Currently, we build MANIACS and the STG for the Debian package; the other documents are not included in our Debian package. Presumably the IoT documents would not go in our current package, but might go in another one; but this is a matter we might want to discuss to decide on a plan going forward. We currently track changes to the project in debian/changelog, and adding a note about this addition there might be reasonable, although as that file technically tracks changes to the .deb file's contents, if this new document won't go there, omitting changes to this file seems OK. (Note that I've recently submitted another MR [#423024] that makes changes to debian/changelog, so another change to this file will create a conflict unless it's based off, and merged after, my recent MR.) Other packaging file changes would be to debian/control, debian/debinstall, and debian/
So to summarize, I'm marking this "Needs Fixing" with the intent that new Makefile entries be added, but packaging changes can wait and will likely either never be made or will create a separate .deb file.
Jonathan Cave (jocave) wrote : | # |
Added the Makefile entries
Preview Diff
1 | diff --git a/Coverage_Guide_IoT-22.04.rst b/Coverage_Guide_IoT-22.04.rst |
2 | new file mode 100644 |
3 | index 0000000..9d5f6f0 |
4 | --- /dev/null |
5 | +++ b/Coverage_Guide_IoT-22.04.rst |
6 | @@ -0,0 +1,387 @@ |
7 | +=========================================================================== |
8 | +Internet of Things Certified Hardware Coverage for Ubuntu Core 22 and 22.04 |
9 | +=========================================================================== |
10 | + |
11 | +.. include:: <isonum.txt> |
12 | + |
13 | +.. header:: |ubuntu_logo| |
14 | + |
15 | +.. |ubuntu_logo| image:: images/logo-ubuntu_su-white_orange-hex.png |
16 | + :scale: 20% |
17 | + |
18 | +.. footer:: |canonical_logo| |
19 | + |
20 | +.. |canonical_logo| image:: images/logo-canonical_no-tm-white-hex.png |
21 | + :scale: 10% |
22 | + |
23 | +.. raw:: pdf |
24 | + |
25 | + PageBreak oneColumn |
26 | + |
27 | +.. contents:: |
28 | + |
29 | +.. raw:: pdf |
30 | + |
31 | + PageBreak |
32 | + |
33 | +.. role:: green-text |
34 | + |
35 | +Introduction |
36 | +============ |
37 | + |
38 | +This document lists the coverage for certification of Internet of Things devices |
39 | +with Ubuntu Core 22 or Ubuntu 22.04. The guide applies to devices submitted to |
40 | +Canonical through one of the following programmes: |
41 | + |
42 | +- IoT Devices Enablement Programme with Certification |
43 | +- IoT ODM Partner Programme |
44 | + |
45 | +The following test categories are specified: |
46 | + |
47 | +Blocking |
48 | + Features that are required for certification. If any of the |
49 | + tests in the required category fails, the certification will fail. |
50 | + |
51 | +Non-blocking |
52 | + Features that are tested, but that don’t block certification. If any of the |
53 | + tests under the optional category fail, a note will be added to the |
54 | + certificate to warn the potential customer or user. |
55 | + |
56 | +Untested |
57 | + The items in the Untested category are just reference items. |
58 | + Anything not explicitly called out in the Blocking or Non-blocking categories |
59 | + can be considered part of the Untested category. We will consider adding |
60 | + more tests as needed. |
61 | + |
62 | +Note: only categories of hardware are tested and not specific types of |
63 | +hardware. For example, tests are run to verify USB controllers work, but the |
64 | +type of peripheral(s) used during those tests are not specified. Coverage is |
65 | +flexible based on customer requirements (for example, if a device’s use cases |
66 | +don’t require LEDs, then LEDs can be untested) |
67 | + |
68 | +Full test descriptions can be found in Canonical certification site for |
69 | +partners: |
70 | + |
71 | + http://certification.canonical.com |
72 | + |
73 | + |
74 | +Blocking |
75 | +======== |
76 | + |
77 | +Audio |
78 | +----- |
79 | + |
80 | +Output needs to be undistorted between 0%-100%. Output lines tested: |
81 | + |
82 | +- Internal speakers |
83 | +- 3.5mm headphones |
84 | +- HDMI audio output |
85 | +- DisplayPort audio output |
86 | + |
87 | +Input needs to be recorded undistorted between 0%-100%. Input lines tested: |
88 | + |
89 | +- Internal microphone |
90 | +- 3.5mm microphone |
91 | + |
92 | +Plug detection: when a new audio line input or output is plugged in the system, |
93 | +it needs to be recognized. |
94 | + |
95 | +Bluetooth |
96 | +--------- |
97 | + |
98 | +Bluetooth LE (Smart and Smart Ready) is tested for device scanning and pairing. |
99 | +Apart from pairing, several profiles are specifically tested and required: |
100 | + |
101 | +- Eddystone Beacon |
102 | +- HID Over GATT Profile (HOGP), Low-Energy keyboard or mouse with basic functionality |
103 | + |
104 | +CPU |
105 | +--- |
106 | + |
107 | +x86_64 and ARM processors are tested to ensure proper functionality. We will |
108 | +test specific features as: |
109 | + |
110 | +- CPU's performance states (frequency up and down in runtime) |
111 | +- CPU's sleep states (cpu on and off in runtime) |
112 | +- Running CPU at its maximum frequency |
113 | + |
114 | +We will also include a general stress test performed for 120 minutes to verify |
115 | +that the system can handle a sustained high load for a period of time. This |
116 | +test uses the tool “stress” available in the Universe repositories. |
117 | + |
118 | +For Intel CPU’s, the IPDT (Intel Processor Diagnostic Tool) test suite will be |
119 | +run. The diagnostic checks for brand identification, verifies the processor |
120 | +operating frequency, tests specific processor features, and performs a stress |
121 | +test on the processor. |
122 | + |
123 | +Ethernet |
124 | +-------- |
125 | + |
126 | +Connections are tested for functionality, but not for performance. |
127 | + |
128 | +Firmware |
129 | +-------- |
130 | + |
131 | +The Ubuntu image must be installed using the factory default bootloader |
132 | +firmware (for example BIOS, UEFI or uboot as applicable) and with the default |
133 | +options (including SecureBoot, if that’s the default setting). Firmware needs |
134 | +to be compliant with Canonical Firmware Test Suite (FWTS). |
135 | + |
136 | +It is recommended that after running Canonical fwts with the list of tests |
137 | +defined in the Appendix A, ideally, no CRITICAL or HIGH failures should be |
138 | +reported, but those are not automatically certification blockers. |
139 | + |
140 | +GPIO |
141 | +---- |
142 | + |
143 | +We test the functionality of individual GPIO lines when the associated |
144 | +controller driver in the kernel implements a GPIO Sysfs Interface via the |
145 | +gpiolib implementers framework. In such cases, the GPIO system may be tested |
146 | +in two ways: |
147 | + |
148 | +- Direct: |
149 | + |
150 | + - GPIO controllers are exposed through sysfs |
151 | + - GPIO lines are accessible by the user |
152 | + |
153 | +- Indirect: |
154 | + |
155 | + - Communication with device connected via GPIO |
156 | + |
157 | +I2C |
158 | +--- |
159 | + |
160 | +All devices attached to the I2C bus must be detectable, This includes: |
161 | + |
162 | +- Temperature sensors |
163 | +- Humidity sensors |
164 | +- Accelerometers |
165 | + |
166 | +LEDs |
167 | +---- |
168 | + |
169 | +When LEDs exist, they will be tested by following some basic expectations here. |
170 | +The actual behavior may vary depending on the hardware design. To ensure that |
171 | +the behavior is working as expected, please be sure to test against |
172 | +specifications obtained from OEM, as each OEM may have different defined |
173 | +behavior for LEDs. The following LEDs are tested: |
174 | + |
175 | +- Power |
176 | +- Serial Port LEDs (indicating activity) |
177 | + |
178 | +Media Card readers |
179 | +------------------ |
180 | + |
181 | +Media Card readers are tested for read and write for the following type of |
182 | +cards: |
183 | + |
184 | +- CF |
185 | +- MMC |
186 | +- MS |
187 | +- MSP |
188 | +- SD |
189 | +- SDHC |
190 | +- SDXC |
191 | +- XD |
192 | + |
193 | +Memory |
194 | +------ |
195 | + |
196 | +Proper detection of the amount of memory installed is required (the amount of |
197 | +memory installed is the memory seen by the OS). |
198 | + |
199 | +Monitors |
200 | +-------- |
201 | + |
202 | +Each of the available external video ports (supported ports are HDMI, |
203 | +DisplayPort, DVI) are tested one by one. Output to the display must work i.e. |
204 | +a console is presented. |
205 | + |
206 | +Power Management |
207 | +---------------- |
208 | + |
209 | +Warm reboot is tested such that the system must be able to perform the reboot |
210 | +command and services must be restarted such that systemctl does not identify a |
211 | +failed state. |
212 | + |
213 | +Cold reboot is performed where an RTC is available (see next section). The |
214 | +wakealarm is used to reboot the system after a period of rest and services must |
215 | +be restarted such that systemctl does not identify a failed state. |
216 | + |
217 | +Real-Time Clock (RTC) |
218 | +--------------------- |
219 | + |
220 | +If present on the device, the device must have a working real-time clock. This |
221 | +will be tested by scheduling a wake alarm to bring the system up after a halt. |
222 | + |
223 | +Serial Ports |
224 | +------------ |
225 | + |
226 | +Tests are carried out on ports that provide access via the Linux tty layer. The |
227 | +exact tests performed depend on the physical characteristics of the |
228 | +driver/receiver hardware. The possible tests include: |
229 | + |
230 | +- Ensure expected number of devices are available |
231 | +- Looped tests: |
232 | + |
233 | + - RS232 Ports: perform loopback test to ensure RX/TX |
234 | + - RS422/485 Ports: connect together to ensure RX/TX |
235 | + |
236 | +- Machine to Machine tests: confirm that a connection can be made to another |
237 | + PC device and RX/TX is operational |
238 | + |
239 | +Internal Storage |
240 | +---------------- |
241 | + |
242 | +All internal storage devices are tested to be properly detected. An in-house |
243 | +performance test is run on all disks with read performance of 15MB/s required |
244 | +to pass. |
245 | + |
246 | +USB controllers |
247 | +--------------- |
248 | + |
249 | +USB 2.0 |
250 | +^^^^^^^ |
251 | + |
252 | +USB storage devices must work on all available USB ports. USB Human Interface |
253 | +Devices (HID), specifically keyboard or mouse, should be working properly on |
254 | +any USB port. |
255 | + |
256 | +USB 3.0 |
257 | +^^^^^^^ |
258 | + |
259 | +USB storage devices must work on all available USB ports. USB Human Interface |
260 | +Devices (HID), specifically keyboard or mouse, should be working properly on |
261 | +any USB port. |
262 | + |
263 | +USB Type C (USB 3.1) |
264 | +^^^^^^^^^^^^^^^^^^^^ |
265 | + |
266 | +USB Type C (USB 3.1) supports various types of devices (e.g. Video, Power) |
267 | +through the use of adapters or peripherals. The following adapters/peripherals |
268 | +should work: |
269 | + |
270 | +- Storage devices |
271 | +- Keyboard or mouse (basic functionality) |
272 | +- When DisplayPort over USB Type-C is advertised: |
273 | + |
274 | + - Display hot plugging and the following display are required to work: |
275 | + mirrored, extended, internal only, external only. |
276 | + - Audio output needs to be undistorted over this port. |
277 | + |
278 | +Wireless Networking |
279 | +------------------- |
280 | + |
281 | +Wi-Fi interfaces are tested for connection to access points configured for |
282 | +802.11 b/g/n/ac/ax protocols. |
283 | + |
284 | +Wireless Wide Area Network |
285 | +-------------------------- |
286 | + |
287 | +WWAN interfaces are tested for connection to 3G/4G/LTE services. |
288 | + |
289 | +Thunderbolt |
290 | +----------- |
291 | + |
292 | +Thunderbolt featues tested: |
293 | + |
294 | +- Audio output must be undistorted over this port. |
295 | +- Storage devices with hot plugging capability should work when BIOS is set to |
296 | + “No security” option. |
297 | +- Monitor hot plugging including different modes (mirrored, extended, internal |
298 | + only, external only) are required to work. |
299 | +- Daisy-chaining devices should work with a storage device and a monitor |
300 | + chained together. |
301 | + |
302 | +TPM |
303 | +--- |
304 | + |
305 | +TPM 2.0 functionality will be tested using FWTS. It is required that all |
306 | +commands necessary to support Ubuntu’s Full Disk Encryption functionality are |
307 | +supported. |
308 | + |
309 | +Non-blocking |
310 | +============ |
311 | + |
312 | +CANBus |
313 | +------ |
314 | + |
315 | +Devices that support the SocketCAN standard are tested to ensure that the |
316 | +adapter is present and can be communicated with via CANBus configuration |
317 | +commands. |
318 | + |
319 | +Media Card readers |
320 | +------------------ |
321 | + |
322 | +Media Card readers are also tested for read and write for the following type or |
323 | +cards: |
324 | + |
325 | +- MMC (before and after suspend) |
326 | + |
327 | +Power Management |
328 | +---------------- |
329 | + |
330 | +Suspend/Resume |
331 | +^^^^^^^^^^^^^^ |
332 | + |
333 | +For x86 devices, a 30 cycle suspend/resume stress test is performed using the |
334 | +FWTS. The suspend mode (e.g. S3, S2Idle) used during the test will be the |
335 | +default for the system under test. The test is passed if all 30 cycles complete |
336 | +without failure. Any errors reported in the fwts log for the 30 cycle |
337 | +suspend/resume stress test are informational only and do not affect the outcome |
338 | +of the test, however, we do recommend examining and fixing any failures noted, |
339 | +as they indicate firmware non-compliance with standards. |
340 | + |
341 | +In addition a single suspend is performed across which the following features |
342 | +and devices are tested: |
343 | + |
344 | +- CPU |
345 | +- Memory |
346 | +- Networking (Wifi, Ethernet) |
347 | +- Audio |
348 | +- Bluetooth |
349 | +- USB controllers |
350 | +- Input devices |
351 | +- Mediacards |
352 | + |
353 | +Watchdog Timer |
354 | +^^^^^^^^^^^^^^ |
355 | + |
356 | +A test will be performed to verify that any kernel modules needed for watchdog |
357 | +timers are loaded and working as expected. |
358 | + |
359 | +LEDs |
360 | +---- |
361 | + |
362 | +The following LEDS will be tested for functionality: |
363 | + |
364 | +- Cloud LED |
365 | +- Wireless LED |
366 | +- Bluetooth LED |
367 | +- WWAN LED |
368 | + |
369 | +Appendix A. FWTS tests |
370 | +====================== |
371 | + |
372 | +As part of the certification process, we run a series of firmware tests that |
373 | +are part of the Canonical Firmware Test Suite. In general, any HIGH or CRITICAL |
374 | +error found in the fwts log can cause potential errors in the system and should |
375 | +be looked at by OEMs/ODMs. |
376 | + |
377 | +=========== ============ =========== |
378 | +Category Test Item Description |
379 | +=========== ============ =========== |
380 | +Information acpidump Check ACPI table acpidump |
381 | +Information version Gather kernel system information |
382 | +ACPI acpitables ACPI table settings sanity checks |
383 | +ACPI apicinstance Check for single instance of APIC/MADT table |
384 | +ACPI hpet_check High Precision Event Timer configuration test |
385 | +ACPI mcfg MCFG PCI Express* memory mapped config space |
386 | +ACPI method ACPI DSDT Method Semantic Tests |
387 | +CPU mpcheck Check Multi Processor tables |
388 | +CPU msr CPU MSR consistency check |
389 | +CPU mtrr MTRR validation |
390 | +System apicedge APIC Edge/Level Check |
391 | +System klog Scan kernel log for errors and warnings |
392 | +=========== ============ =========== |
393 | + |
394 | diff --git a/Makefile b/Makefile |
395 | index 7b98b35..43b4075 100644 |
396 | --- a/Makefile |
397 | +++ b/Makefile |
398 | @@ -1,7 +1,7 @@ |
399 | SHELL = /bin/sh |
400 | RST2PDF=rst2pdf |
401 | RST2HTML=rst2html |
402 | -DOC_NAMES=Test_Case_Guide-20.04 Test_Case_Guide-18.04 Programme_Guide Coverage_Guide Self-Test_Guide MAAS_Advanced_Network_Installation_And_Configuration_Scripted Policy_Guide |
403 | +DOC_NAMES=Test_Case_Guide-20.04 Test_Case_Guide-18.04 Programme_Guide Coverage_Guide Self-Test_Guide MAAS_Advanced_Network_Installation_And_Configuration_Scripted Policy_Guide Coverage_Guide_IoT-22.04 |
404 | HTML_NAMES=$(DOC_NAMES:=.html) |
405 | PDF_NAMES=$(DOC_NAMES:=.pdf) |
406 | |
407 | @@ -23,6 +23,8 @@ stg: Self-Test_Guide.pdf Self-Test_Guide.pdf |
408 | |
409 | coverage: Coverage_Guide.pdf |
410 | |
411 | +iot_coverage: Coverage_Guide_IoT-22.04.pdf |
412 | + |
413 | policy: Policy_Guide.pdf |
414 | |
415 | programme: Programme_Guide.pdf |
416 | @@ -35,6 +37,8 @@ stgh: Self-Test_Guide.html Self-Test_Guide.html |
417 | |
418 | coverageh: Coverage_Guide.html |
419 | |
420 | +iot_coverageh: Coverage_Guide_IoT-22.04.html |
421 | + |
422 | policyh: Policy_Guide.html |
423 | |
424 | programmeh: Programme_Guide.html |
I think this needs some things, but maybe that can be handled separately from this. Just to log them, what I think we need:
1: additions to the Makefile to build PDF and HTML versions of this doc
2: Packaging updates to build server and devices packages (unless you think it makes sense to just put them into a single monolithic package).