Merge ~jocave/certification-docs:add-iot-coverage-guide into certification-docs:master

Proposed by Jonathan Cave
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)
Reviewer Review Type Date Requested Status
Rod Smith Approve
Review via email: mp+422753@code.launchpad.net

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.

To post a comment you must log in.
Revision history for this message
Jeff Lane  (bladernr) wrote :

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).

Revision history for this message
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/README.source, if it's decided to add this document to the .deb file.

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.

review: Needs Fixing
Revision history for this message
Jonathan Cave (jocave) wrote :

Added the Makefile entries

Revision history for this message
Rod Smith (rodsmith) wrote :

LGTM!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/Coverage_Guide_IoT-22.04.rst b/Coverage_Guide_IoT-22.04.rst
0new file mode 1006440new file mode 100644
index 0000000..9d5f6f0
--- /dev/null
+++ b/Coverage_Guide_IoT-22.04.rst
@@ -0,0 +1,387 @@
1===========================================================================
2Internet of Things Certified Hardware Coverage for Ubuntu Core 22 and 22.04
3===========================================================================
4
5.. include:: <isonum.txt>
6
7.. header:: |ubuntu_logo|
8
9.. |ubuntu_logo| image:: images/logo-ubuntu_su-white_orange-hex.png
10 :scale: 20%
11
12.. footer:: |canonical_logo|
13
14.. |canonical_logo| image:: images/logo-canonical_no-tm-white-hex.png
15 :scale: 10%
16
17.. raw:: pdf
18
19 PageBreak oneColumn
20
21.. contents::
22
23.. raw:: pdf
24
25 PageBreak
26
27.. role:: green-text
28
29Introduction
30============
31
32This document lists the coverage for certification of Internet of Things devices
33with Ubuntu Core 22 or Ubuntu 22.04. The guide applies to devices submitted to
34Canonical through one of the following programmes:
35
36- IoT Devices Enablement Programme with Certification
37- IoT ODM Partner Programme
38
39The following test categories are specified:
40
41Blocking
42 Features that are required for certification. If any of the
43 tests in the required category fails, the certification will fail.
44
45Non-blocking
46 Features that are tested, but that don’t block certification. If any of the
47 tests under the optional category fail, a note will be added to the
48 certificate to warn the potential customer or user.
49
50Untested
51 The items in the Untested category are just reference items.
52 Anything not explicitly called out in the Blocking or Non-blocking categories
53 can be considered part of the Untested category. We will consider adding
54 more tests as needed.
55
56Note: only categories of hardware are tested and not specific types of
57hardware. For example, tests are run to verify USB controllers work, but the
58type of peripheral(s) used during those tests are not specified. Coverage is
59flexible based on customer requirements (for example, if a device’s use cases
60don’t require LEDs, then LEDs can be untested)
61
62Full test descriptions can be found in Canonical certification site for
63partners:
64
65 http://certification.canonical.com
66
67
68Blocking
69========
70
71Audio
72-----
73
74Output needs to be undistorted between 0%-100%. Output lines tested:
75
76- Internal speakers
77- 3.5mm headphones
78- HDMI audio output
79- DisplayPort audio output
80
81Input needs to be recorded undistorted between 0%-100%. Input lines tested:
82
83- Internal microphone
84- 3.5mm microphone
85
86Plug detection: when a new audio line input or output is plugged in the system,
87it needs to be recognized.
88
89Bluetooth
90---------
91
92Bluetooth LE (Smart and Smart Ready) is tested for device scanning and pairing.
93Apart from pairing, several profiles are specifically tested and required:
94
95- Eddystone Beacon
96- HID Over GATT Profile (HOGP), Low-Energy keyboard or mouse with basic functionality
97
98CPU
99---
100
101x86_64 and ARM processors are tested to ensure proper functionality. We will
102test specific features as:
103
104- CPU's performance states (frequency up and down in runtime)
105- CPU's sleep states (cpu on and off in runtime)
106- Running CPU at its maximum frequency
107
108We will also include a general stress test performed for 120 minutes to verify
109that the system can handle a sustained high load for a period of time. This
110test uses the tool “stress” available in the Universe repositories.
111
112For Intel CPU’s, the IPDT (Intel Processor Diagnostic Tool) test suite will be
113run. The diagnostic checks for brand identification, verifies the processor
114operating frequency, tests specific processor features, and performs a stress
115test on the processor.
116
117Ethernet
118--------
119
120Connections are tested for functionality, but not for performance.
121
122Firmware
123--------
124
125The Ubuntu image must be installed using the factory default bootloader
126firmware (for example BIOS, UEFI or uboot as applicable) and with the default
127options (including SecureBoot, if that’s the default setting). Firmware needs
128to be compliant with Canonical Firmware Test Suite (FWTS).
129
130It is recommended that after running Canonical fwts with the list of tests
131defined in the Appendix A, ideally, no CRITICAL or HIGH failures should be
132reported, but those are not automatically certification blockers.
133
134GPIO
135----
136
137We test the functionality of individual GPIO lines when the associated
138controller driver in the kernel implements a GPIO Sysfs Interface via the
139gpiolib implementers framework. In such cases, the GPIO system may be tested
140in two ways:
141
142- Direct:
143
144 - GPIO controllers are exposed through sysfs
145 - GPIO lines are accessible by the user
146
147- Indirect:
148
149 - Communication with device connected via GPIO
150
151I2C
152---
153
154All devices attached to the I2C bus must be detectable, This includes:
155
156- Temperature sensors
157- Humidity sensors
158- Accelerometers
159
160LEDs
161----
162
163When LEDs exist, they will be tested by following some basic expectations here.
164The actual behavior may vary depending on the hardware design. To ensure that
165the behavior is working as expected, please be sure to test against
166specifications obtained from OEM, as each OEM may have different defined
167behavior for LEDs. The following LEDs are tested:
168
169- Power
170- Serial Port LEDs (indicating activity)
171
172Media Card readers
173------------------
174
175Media Card readers are tested for read and write for the following type of
176cards:
177
178- CF
179- MMC
180- MS
181- MSP
182- SD
183- SDHC
184- SDXC
185- XD
186
187Memory
188------
189
190Proper detection of the amount of memory installed is required (the amount of
191memory installed is the memory seen by the OS).
192
193Monitors
194--------
195
196Each of the available external video ports (supported ports are HDMI,
197DisplayPort, DVI) are tested one by one. Output to the display must work i.e.
198a console is presented.
199
200Power Management
201----------------
202
203Warm reboot is tested such that the system must be able to perform the reboot
204command and services must be restarted such that systemctl does not identify a
205failed state.
206
207Cold reboot is performed where an RTC is available (see next section). The
208wakealarm is used to reboot the system after a period of rest and services must
209be restarted such that systemctl does not identify a failed state.
210
211Real-Time Clock (RTC)
212---------------------
213
214If present on the device, the device must have a working real-time clock. This
215will be tested by scheduling a wake alarm to bring the system up after a halt.
216
217Serial Ports
218------------
219
220Tests are carried out on ports that provide access via the Linux tty layer. The
221exact tests performed depend on the physical characteristics of the
222driver/receiver hardware. The possible tests include:
223
224- Ensure expected number of devices are available
225- Looped tests:
226
227 - RS232 Ports: perform loopback test to ensure RX/TX
228 - RS422/485 Ports: connect together to ensure RX/TX
229
230- Machine to Machine tests: confirm that a connection can be made to another
231 PC device and RX/TX is operational
232
233Internal Storage
234----------------
235
236All internal storage devices are tested to be properly detected. An in-house
237performance test is run on all disks with read performance of 15MB/s required
238to pass.
239
240USB controllers
241---------------
242
243USB 2.0
244^^^^^^^
245
246USB storage devices must work on all available USB ports. USB Human Interface
247Devices (HID), specifically keyboard or mouse, should be working properly on
248any USB port.
249
250USB 3.0
251^^^^^^^
252
253USB storage devices must work on all available USB ports. USB Human Interface
254Devices (HID), specifically keyboard or mouse, should be working properly on
255any USB port.
256
257USB Type C (USB 3.1)
258^^^^^^^^^^^^^^^^^^^^
259
260USB Type C (USB 3.1) supports various types of devices (e.g. Video, Power)
261through the use of adapters or peripherals. The following adapters/peripherals
262should work:
263
264- Storage devices
265- Keyboard or mouse (basic functionality)
266- When DisplayPort over USB Type-C is advertised:
267
268 - Display hot plugging and the following display are required to work:
269 mirrored, extended, internal only, external only.
270 - Audio output needs to be undistorted over this port.
271
272Wireless Networking
273-------------------
274
275Wi-Fi interfaces are tested for connection to access points configured for
276802.11 b/g/n/ac/ax protocols.
277
278Wireless Wide Area Network
279--------------------------
280
281WWAN interfaces are tested for connection to 3G/4G/LTE services.
282
283Thunderbolt
284-----------
285
286Thunderbolt featues tested:
287
288- Audio output must be undistorted over this port.
289- Storage devices with hot plugging capability should work when BIOS is set to
290 “No security” option.
291- Monitor hot plugging including different modes (mirrored, extended, internal
292 only, external only) are required to work.
293- Daisy-chaining devices should work with a storage device and a monitor
294 chained together.
295
296TPM
297---
298
299TPM 2.0 functionality will be tested using FWTS. It is required that all
300commands necessary to support Ubuntu’s Full Disk Encryption functionality are
301supported.
302
303Non-blocking
304============
305
306CANBus
307------
308
309Devices that support the SocketCAN standard are tested to ensure that the
310adapter is present and can be communicated with via CANBus configuration
311commands.
312
313Media Card readers
314------------------
315
316Media Card readers are also tested for read and write for the following type or
317cards:
318
319- MMC (before and after suspend)
320
321Power Management
322----------------
323
324Suspend/Resume
325^^^^^^^^^^^^^^
326
327For x86 devices, a 30 cycle suspend/resume stress test is performed using the
328FWTS. The suspend mode (e.g. S3, S2Idle) used during the test will be the
329default for the system under test. The test is passed if all 30 cycles complete
330without failure. Any errors reported in the fwts log for the 30 cycle
331suspend/resume stress test are informational only and do not affect the outcome
332of the test, however, we do recommend examining and fixing any failures noted,
333as they indicate firmware non-compliance with standards.
334
335In addition a single suspend is performed across which the following features
336and devices are tested:
337
338- CPU
339- Memory
340- Networking (Wifi, Ethernet)
341- Audio
342- Bluetooth
343- USB controllers
344- Input devices
345- Mediacards
346
347Watchdog Timer
348^^^^^^^^^^^^^^
349
350A test will be performed to verify that any kernel modules needed for watchdog
351timers are loaded and working as expected.
352
353LEDs
354----
355
356The following LEDS will be tested for functionality:
357
358- Cloud LED
359- Wireless LED
360- Bluetooth LED
361- WWAN LED
362
363Appendix A. FWTS tests
364======================
365
366As part of the certification process, we run a series of firmware tests that
367are part of the Canonical Firmware Test Suite. In general, any HIGH or CRITICAL
368error found in the fwts log can cause potential errors in the system and should
369be looked at by OEMs/ODMs.
370
371=========== ============ ===========
372Category Test Item Description
373=========== ============ ===========
374Information acpidump Check ACPI table acpidump
375Information version Gather kernel system information
376ACPI acpitables ACPI table settings sanity checks
377ACPI apicinstance Check for single instance of APIC/MADT table
378ACPI hpet_check High Precision Event Timer configuration test
379ACPI mcfg MCFG PCI Express* memory mapped config space
380ACPI method ACPI DSDT Method Semantic Tests
381CPU mpcheck Check Multi Processor tables
382CPU msr CPU MSR consistency check
383CPU mtrr MTRR validation
384System apicedge APIC Edge/Level Check
385System klog Scan kernel log for errors and warnings
386=========== ============ ===========
387
diff --git a/Makefile b/Makefile
index 7b98b35..43b4075 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1SHELL = /bin/sh1SHELL = /bin/sh
2RST2PDF=rst2pdf2RST2PDF=rst2pdf
3RST2HTML=rst2html3RST2HTML=rst2html
4DOC_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_Guide4DOC_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
5HTML_NAMES=$(DOC_NAMES:=.html)5HTML_NAMES=$(DOC_NAMES:=.html)
6PDF_NAMES=$(DOC_NAMES:=.pdf)6PDF_NAMES=$(DOC_NAMES:=.pdf)
77
@@ -23,6 +23,8 @@ stg: Self-Test_Guide.pdf Self-Test_Guide.pdf
2323
24coverage: Coverage_Guide.pdf24coverage: Coverage_Guide.pdf
2525
26iot_coverage: Coverage_Guide_IoT-22.04.pdf
27
26policy: Policy_Guide.pdf28policy: Policy_Guide.pdf
2729
28programme: Programme_Guide.pdf30programme: Programme_Guide.pdf
@@ -35,6 +37,8 @@ stgh: Self-Test_Guide.html Self-Test_Guide.html
3537
36coverageh: Coverage_Guide.html38coverageh: Coverage_Guide.html
3739
40iot_coverageh: Coverage_Guide_IoT-22.04.html
41
38policyh: Policy_Guide.html42policyh: Policy_Guide.html
3943
40programmeh: Programme_Guide.html44programmeh: Programme_Guide.html

Subscribers

People subscribed via source and target branches