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
1diff --git a/Coverage_Guide_IoT-22.04.rst b/Coverage_Guide_IoT-22.04.rst
2new file mode 100644
3index 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+
394diff --git a/Makefile b/Makefile
395index 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

Subscribers

People subscribed via source and target branches