summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2016/33c3/33c3-modems.adoc72
-rw-r--r--2016/33c3/images/diag.dot8
-rw-r--r--2016/33c3/images/qualcomm_le.svg394
3 files changed, 202 insertions, 272 deletions
diff --git a/2016/33c3/33c3-modems.adoc b/2016/33c3/33c3-modems.adoc
index dc4070d..815ec96 100644
--- a/2016/33c3/33c3-modems.adoc
+++ b/2016/33c3/33c3-modems.adoc
@@ -207,35 +207,79 @@ image:images/legato_flash.png[width="80%"]
// Show it is a highly complex SoC... with even more things
// that are unknown.. device tree file, periperhal, etc
-== MDM SW Overview
+== MDM 9615 AP SW Overview
image:images/gandroid_logo.png[height=200,role="gimmick_right"]
-* GNU libc, busybox userland
-* Android Debug Bridge (adb)
-* Android Linux kernel
+The software stack seems to be called *Qualcomm LE*
+
* Android Bootloader
+* Android Linux kernel
+* Android Debug Bridge (adb)
+* but: GNU libc, busybox userland
* Using OpenEmbedded to build images
* Developed and maintained by Qualcomm
+== Qualcomm Linux kernel overview
+
+* Qualcomm Android Linux kernel
+* Huge changes compared to mainline `git diff -w | wc -l`
+** `v3.0.21` in EC20: 1.5 million lines
+** `v3.18.20` in EC25: 1.9 million lines
+* Expected: CPU + peripheral drivers
+* Less expected:
+** smem_log, ipc_log, remote spinlocks, etc.
+== Qualcomm Linux kernel subsystems
-== Linux kernel overview
+[cols="20%,80%"]
+|===
+|SMD|Shared Memory Device
+|IPC|Inter Processor Communications
+|RMNET|Remote Network
+|BAM|Bus Access Manager
+|IPA|Internet Packet Accelerator
+|DIAGFWD|DIAG Forwarding
+|===
-* Qualcomm Android Linux kernel
-* Huge changes compared to mainline
-* CPU and peripheral support
-* <List frameworks here>
+== Qualcomm LE System Architecture
+
+image:images/qualcomm_le.svg[width="50%",role="gimmick_right"]
+
+* simplified block diagram
+* USB interface fully controlled by Linux AP
+** very complex Qualcomm Android USB Gadget
+** some endpoints mapped to SMD queues
+** other endpoints handled by _regular_ Linux
+** GPS NMEA takes completely different path than AT commands, despite
+both being serial ports?
+** DIAG and QMI handled in more complex ways
+
+== DIAG in Qualcomm LE
+
+* DIAG interface of Modem exposed on SMD
+* diagfwd distributes messages between USB, SMD and `/dev/diagchar`
+* Linux userspace processes don't use syslog, but diag msg for logging via `libdiag.so`
+
+image:images/diag.svg[width="100%"]
+
+== QMI in Qualcomm LE
+
+every `rmnet` data device has associated QMI control
+
+* on your Linux PC: `qmi_wwan` and `/dev/cdc-wdm`
+* on Qualcomm LE modem: `/dev/smdcntlN`, multiplexed by `qmuxd`
-== ...
+image:images/qmi_smd_qmuxd.svg[width="100%"]
== Funny commands
-* AT+QLINUXCMD, e.g. switch usb config to get adb
-* AT+QFASTBOOT, switch to the bootloader
-* AT+QPRINT, print dmesg
-* AT for system("echo mem > /sys/power/state")
+* `AT+QLINUXCMD`, e.g. switch usb config to get adb
+** arbitrary shell commands executed as root on r/w rootfs!
+* `AT+QFASTBOOT`, switch to the bootloader
+* `AT+QPRINT`, print dmesg
+* AT for `system("echo mem > /sys/power/state")`
diff --git a/2016/33c3/images/diag.dot b/2016/33c3/images/diag.dot
index 66dcec8..4114e52 100644
--- a/2016/33c3/images/diag.dot
+++ b/2016/33c3/images/diag.dot
@@ -3,9 +3,9 @@ digraph G {
graph [ dpi = 50 ];
rankdir = RL;
- MDSP[ label = "Modem DSP" ];
+ MDSP [ label = "Modem DSP" ];
- SMD [ label = "Shared Memory Devices" ];
+ SMD
diagfwd
f_diag
USB
@@ -21,8 +21,8 @@ digraph G {
subgraph cluster_userspace {
label = "Linux Userspace"
qmuxd -> diagchar [ label = "/dev/diag" ];
- atfwd_daemon -> qmuxd [ label = "/dev/diagt" ]
- QCMAP -> qmuxd [ label = "/dev/diagt" ]
+ atfwd_daemon -> qmuxd [ label = "/dev/diag" ]
+ QCMAP -> qmuxd [ label = "/dev/diag" ]
quectel_daemon -> qmuxd [ label = "/dev/diag" ]
}
Host -> USB
diff --git a/2016/33c3/images/qualcomm_le.svg b/2016/33c3/images/qualcomm_le.svg
index 051cd7a..a1c76ba 100644
--- a/2016/33c3/images/qualcomm_le.svg
+++ b/2016/33c3/images/qualcomm_le.svg
@@ -9,9 +9,9 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="210mm"
- height="297mm"
- viewBox="0 0 744.09448819 1052.3622047"
+ width="156.46683mm"
+ height="180.56444mm"
+ viewBox="0 0 554.41002 639.79525"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
@@ -20,329 +20,191 @@
id="defs4">
<marker
inkscape:isstock="true"
- style="overflow:visible;"
+ style="overflow:visible"
id="marker8075"
- refX="0.0"
- refY="0.0"
+ refX="0"
+ refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
- transform="scale(0.8) rotate(180) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path8077" />
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path8077"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker7921"
- refX="0.0"
- refY="0.0"
+ refX="0"
+ refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
- transform="scale(0.8) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path7923" />
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path7923"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
- refY="0.0"
- refX="0.0"
+ refY="0"
+ refX="0"
id="marker7771"
- style="overflow:visible;"
- inkscape:isstock="true"
- inkscape:collect="always">
- <path
- id="path7773"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker7629"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
- id="path7631"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) translate(12.5,0)" />
+ id="path7773"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
- refY="0.0"
- refX="0.0"
+ refY="0"
+ refX="0"
id="marker7491"
- style="overflow:visible;"
+ style="overflow:visible"
inkscape:isstock="true">
<path
id="path7493"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
- id="marker7361"
- refX="0.0"
- refY="0.0"
- orient="auto"
- inkscape:stockid="Arrow1Lstart"
- inkscape:collect="always">
- <path
- transform="scale(0.8) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path7363" />
- </marker>
- <marker
- inkscape:isstock="true"
- style="overflow:visible;"
id="marker7235"
- refX="0.0"
- refY="0.0"
+ refX="0"
+ refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
- transform="scale(0.8) rotate(180) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path7237" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker7117"
- style="overflow:visible"
- inkscape:isstock="true"
- inkscape:collect="always">
- <path
- id="path7119"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) translate(12.5,0)" />
- </marker>
- <marker
- inkscape:isstock="true"
- style="overflow:visible"
- id="marker6991"
- refX="0.0"
- refY="0.0"
- orient="auto"
- inkscape:stockid="Arrow1Lstart"
- inkscape:collect="always">
- <path
- transform="scale(0.8) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path6993" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker6877"
- style="overflow:visible"
- inkscape:isstock="true"
- inkscape:collect="always">
- <path
- id="path6879"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) translate(12.5,0)" />
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path7237"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
- refY="0.0"
- refX="0.0"
+ refY="0"
+ refX="0"
id="marker6771"
- style="overflow:visible;"
+ style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path6773"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
- refY="0.0"
- refX="0.0"
+ refY="0"
+ refX="0"
id="marker6683"
- style="overflow:visible;"
+ style="overflow:visible"
inkscape:isstock="true">
<path
id="path6685"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
- style="overflow:visible;"
+ style="overflow:visible"
id="marker5697"
- refX="0.0"
- refY="0.0"
+ refX="0"
+ refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
- transform="scale(0.8) rotate(180) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path5699" />
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path5699"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
- id="marker5603"
- refX="0.0"
- refY="0.0"
- orient="auto"
- inkscape:stockid="Arrow1Lstart"
- inkscape:collect="always">
- <path
- transform="scale(0.8) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path5605" />
- </marker>
- <marker
- inkscape:isstock="true"
- style="overflow:visible;"
id="marker5351"
- refX="0.0"
- refY="0.0"
+ refX="0"
+ refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
- transform="scale(0.8) rotate(180) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path5353" />
- </marker>
- <marker
- inkscape:isstock="true"
- style="overflow:visible"
- id="marker5281"
- refX="0.0"
- refY="0.0"
- orient="auto"
- inkscape:stockid="Arrow1Lstart"
- inkscape:collect="always">
- <path
- transform="scale(0.8) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path5283" />
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path5353"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
- refY="0.0"
- refX="0.0"
+ refY="0"
+ refX="0"
id="marker5215"
- style="overflow:visible;"
- inkscape:isstock="true"
- inkscape:collect="always">
- <path
- id="path5217"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker5157"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
- id="path5159"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) translate(12.5,0)" />
+ id="path5217"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
- style="overflow:visible;"
+ style="overflow:visible"
id="marker5103"
- refX="0.0"
- refY="0.0"
+ refX="0"
+ refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
- transform="scale(0.8) rotate(180) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path5105" />
- </marker>
- <marker
- inkscape:isstock="true"
- style="overflow:visible"
- id="marker5057"
- refX="0.0"
- refY="0.0"
- orient="auto"
- inkscape:stockid="Arrow1Lstart"
- inkscape:collect="always">
- <path
- transform="scale(0.8) translate(12.5,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- id="path5059" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
- style="overflow:visible"
- inkscape:isstock="true"
- inkscape:collect="always">
- <path
- id="path4741"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) translate(12.5,0)" />
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path5105"
+ inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
- refY="0.0"
- refX="0.0"
+ refY="0"
+ refX="0"
id="Arrow1Lend"
- style="overflow:visible;"
+ style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path4744"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
@@ -353,8 +215,8 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.311357"
- inkscape:cx="292.32284"
- inkscape:cy="537.96199"
+ inkscape:cx="163.33123"
+ inkscape:cy="361.79664"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
@@ -362,14 +224,20 @@
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
- inkscape:window-width="1386"
- inkscape:window-height="1057"
+ inkscape:window-width="1920"
+ inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
- inkscape:window-maximized="0">
+ inkscape:window-maximized="0"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
- id="grid3336" />
+ id="grid3336"
+ originx="-34.43307"
+ originy="-176.16536" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -380,13 +248,31 @@
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
</cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
- id="layer1">
+ id="layer1"
+ transform="translate(-34.433071,-236.40158)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Andale Mono';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@@ -466,7 +352,7 @@
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:17.5px;font-family:Arial;-inkscape-font-specification:'Arial Bold'">USB Gadget</tspan></text>
<text
xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="177.16534"
y="680.31494"
id="text4205"
@@ -941,57 +827,57 @@
id="tspan4678-8-5"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Arial;-inkscape-font-specification:Arial">Linux Kernel</tspan></text>
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);marker-start:url(#Arrow1Lstart)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#Arrow1Lend)"
d="M 389.76378,644.88189 496.06299,591.73228"
id="path4735"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5057);marker-end:url(#marker5103)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker5103)"
d="m 442.91339,591.73228 -88.58268,53.14961"
id="path5049"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5157);marker-end:url(#marker5215)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker5215)"
d="m 318.89764,644.88189 35.43307,-53.14961"
id="path5149"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5281);marker-end:url(#marker5351)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker5351)"
d="m 248.0315,644.88189 0,-53.14961"
id="path5273"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5697);marker-start:url(#marker5603)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker5697)"
d="M 88.582677,361.41732 212.59843,644.88189"
id="path6643"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6683);marker-start:url(#marker6877)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker6683)"
d="M 177.16535,644.88189 88.582677,361.41732"
id="path6675"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker6991);marker-end:url(#marker6771)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker6771)"
d="M 53.149606,361.41732 141.73228,644.88189"
id="path6983"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker7117);marker-end:url(#marker7235)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker7235)"
d="M 53.149606,361.41732 106.29921,644.88189"
id="path7109"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker7361);marker-end:url(#marker7491)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker7491)"
d="M 248.0315,520.86614 124.01575,361.41732"
id="path7353"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker7629);marker-end:url(#marker7771)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker7771)"
d="m 159.44882,361.41732 124.01575,53.14961"
id="path7621"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker7921);marker-end:url(#marker8075)"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:;marker-end:url(#marker8075)"
d="m 212.59843,325.98425 70.86614,0"
id="path7913"
inkscape:connector-curvature="0" />
@@ -1030,37 +916,37 @@
sodipodi:role="line">fwd</tspan></text>
</g>
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:"
d="m 283.46457,414.56693 17.71653,0"
id="path8245"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:"
d="m 496.06299,343.70079 0,159.44882"
id="path8247"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:"
d="m 318.89764,325.98425 88.58267,0"
id="path8249"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:"
d="m 442.91339,396.85039 -17.71654,35.43307"
id="path8251"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:"
d="m 407.48031,467.71654 17.71654,70.86614"
id="path8253"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:"
d="m 425.19685,432.28346 0,-35.43307"
id="path8255"
inkscape:connector-curvature="0" />
<path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:"
d="M 425.19685,432.28346 407.48031,396.85039"
id="path8257"
inkscape:connector-curvature="0" />
personal git repositories of Harald Welte. Your mileage may vary