https://wiki.yobi.be/api.php?action=feedcontributions&user=PhilippeTeuwen&feedformat=atomYobiWiki - User contributions [en]2024-03-28T13:36:38ZUser contributionsMediaWiki 1.35.13https://wiki.yobi.be/index.php?title=NSC_Writeups&diff=10550NSC Writeups2024-02-07T18:26:00Z<p>PhilippeTeuwen: /* Structure */</p>
<hr />
<div>=Oppida/NoSuchCon challenge=<br />
==Intro==<br />
In April 2013, Oppida [http://seclists.org/fulldisclosure/2013/Apr/133 proposed a challenge] associated with NoSuchCon 2013.<br />
<br>The challenge was designed by Eloi Vanderbéken [https://twitter.com/elvanderb @elvanderb] and consisted into a PE binary embedding a white-box AES implementation. <br />
<br>It was of "keygen-me" type.<br />
<br>The challenge was broken by a few people and some write-ups are available:<br />
* by Axel [https://twitter.com/0vercl0k @0vercl0k]: [http://0vercl0k.tuxfamily.org/bl0g/?p=253 AES Whitebox Unboxing: No Such Problem]<br />
* by Arnaud [https://twitter.com/kutioo @kutioo]: [http://kutioo.blogspot.be/2013/05/nosuchcon-2013-challenge-write-up-and.html NoSuchCon 2013 challenge - Write up and Methodology]<br />
* by Guy [https://twitter.com/Shiftreduce @Shiftreduce]: [http://archive.hack.lu/2013/Interactive%20deobfuscation.ppt Interactive deobfuscation (ppt)]<br />
To break the challenge one has to guess what input to the white-boxed AES will produce the desired output such that MD5(nickname) == AES(serial) i.e. to revert the AES block such that serial=AES^-1(MD5(nickname)).<br />
<br>This white-box being made of look-up tables, it could be reverted step by step, round by round from output to input, but the AES key itself was left unbroken.<br />
<br>There are pointers in Shiftreduce's presentation to the BGE attack, a now classical attack against a no less classical Chow white-box AES implementation but this implementation is quite different from Chow implementation and AFAIK Shiftreduce didn't recover the key.<br />
<br />
Because I got curious about white-box only recently, I looked around what was publicly available and decided to investigate this one, a bit late for the competition I admit ;-)<br />
<br />
The advantage of starting late is that I can rely on the wonderful work published by those three people and concentrate directly on the white-box itself, sparing me the need to peel the onion at first (it would have made me crying for sure).<br />
<br>After the challenge period, Eloi even [http://pastebin.com/MvXpGZts published the code of his generator], very useful to study it and generate our own challenges (under Linux)!<br />
<br />
==Structure==<br />
[[Image:NSC2013.png|800px]]<br />
<br />
<br>The drawing depicts the detail of the computation of one AES round, more precisely just the first byte of the state (and the three next, depending on the same 4 input bytes).<br />
<br>The first and last rounds are different:<br />
* First round is similar to intern rounds but the tables applying the SBox here are also applying the initial round key in a so-called TBox and the input is not encoded by <math>X_2</math> but by a so-called external encoding <math>F</math> to be reverted.<br />
* Last round as usual doesn't contain the MixColumn operation therefore is much simpler but another external encoding <math>G</math> is applied on the output.<br />
<br><br>Notations of the drawing (please forgive my lack of math strictness):<br />
<br>All datapaths are 8-bit wide<br />
* <math>F^{-1}(x)</math> applies the inverse input encoding, a random 8-bit bijection<br />
* <math>G(x)</math> applies the output encoding, a random 8-bit bijection<br />
* <math>T_i^1(x)=S(x \oplus \hat{k^0}[i])</math> is similar to Chow's <math>T_i^r(x)</math> but used only in first round<br />
* <math>S(x)</math> is the AES SBox<br />
* <math>Ty_{j,k}(x)=x\cdot MC_{j,k}</math> is multiplication by a single element of [https://en.wikipedia.org/wiki/Rijndael_mix_columns AES'MDS matrix]<br />
* <math>K_{i,j}^r(x)=x \oplus \hat{k_j^r}[i]</math> is xoring by a share j of round r key byte i.<br>There are 4 shares therefore <math>\hat{k^r}[i]=\hat{k_0^r}[i]\oplus \hat{k_1^r}[i]\oplus \hat{k_2^r}[i]\oplus \hat{k_3^r}[i]</math><br />
* <math>B_j(x)</math> for <math>j=0..3</math> and <math>B_j^{-1}(x)</math> apply an intermediate encoding, a random 8-bit bijection, and its inverse<br />
* <math>X_0(x), X_1(x), X_2(x)</math> and <math>X_0^{-1}(x), X_1^{-1}(x), X_2^{-1}(x)</math> apply an intermediate encoding, a random 8-bit bijection, and its inverse. <br>So <math>X_2(x)</math> encodes intermediate results between rounds.<br />
* <math>xor</math> is a byte xor 2x8-bit -> 8-bit<br />
<br />
So this design makes use of 9 random substitution tables (that you don't find as such in the binary but which are used during generation) and their inverse:<br />
* <math>F, G, B_0, B_1, B_2, B_3, X_0, X_1, X_2</math><br />
and the same substitutions are re-used in all rounds (otherwise the 3 large xor tables would have to be duplicated many times)<br />
<br>At the end, the binary contains those tables:<br />
* 3 xor tables of 256*256 values<br />
* 9*16*4 round tables of 256 values<br />
* 16 final round tables of 256 values<br />
A curiosity of the design when compared with classical Chow is that each round key is applied before MixCol and therefore split into 4 random shares (recombined later by the xors). So the first round tables contain already the first two round keys.<br />
<br>If you want to compare with Chow, see [http://eprint.iacr.org/2013/104.pdf A Tutorial on White-box AES] by James A. Muir and zoom on this picture:<br />
<br>[[Image:ChowAES.png|400px|link=http://wiki.yobi.be/images/1/16/ChowAES.png]]<br />
<br />
==Attack==<br />
Because the internal encoding <math>X_2</math> is the same between all rounds one may choose to attack a reduced version of AES with only 3 round keys but the problem is that the external encodings are completely unknown.<br />
<br>I propose another attack that works against any of the intermediate rounds and doesn't require a ton of equations because... I hate math.<br />
<br>Here attacking Round 3 but any round between 2 and 9 will do.<br />
<br>Let's guess the encoding of one single value <math>P=0</math> in <math>X_2</math>, the encoding table used between rounds.<br />
<br>Encoding of <math>P</math> is <math>X</math>: <math>X_2(P)=X</math>.<br />
<br>Try to find the corresponding key of 3nd round (so the 4rd round key):<br />
* There are 16 groups of round tables for each round, taking 4 bytes as input and producing one byte (one round table group here is actually the 4 sub-round tables combined with the 3 xor tables)<br />
* To attack one group, we fix the 4 input bytes as <math>X\!:\!X\!:\!X\!:\!X</math> so the decoded input is supposed to be <math>0\!:\!0\!:\!0\!:\!0</math><br />
* We compute the encoded output byte out and compare it with <math>X</math><br />
** if output <math>Y \neq X</math>, we create a new input <math>Y\!:\!X\!:\!X\!:\!X</math> and chain executions of that group till output <math> = X</math> so we know decoded output is <math>P=0</math><br />
* The required number of iterations to reach an output <math> = X</math> is then compared with a clean implementation without encodings to check which k candidates require the same number of iterations, so here going from <math>0\!:\!0\!:\!0\!:\!0</math> to <math>0</math><br />
Example requiring 3 iterations:<br />
<br>[[Image:NSC2013_attack.png]]<br />
<br><br>Clean group implementation:<br />
<br>[[Image:NSC2013_clean.png]]<br />
<br />
So from each initial encoding guess we get typically something like this: (i=ith byte, n=nr of iterations)<br />
<br><br><tt>Hypothesis 00 is encoded as 00<br />
<br>i=00 n=10 k= 12 22 63 87 C5 D7 F0 F4<br />
<br>i=04 n=21 k= 05 63 F0 FA<br />
<br>i=08 n=E8 k= 1E 63 6D 78 A6 FE<br />
<br>i=12 n=0B k= 63<br />
<br>i=01 n=64 k= 00 05 22 23 63 A2 A9 BF C5 C9 D0 DF F1<br />
<br>i=05 n=7D k= 2E 63 70 97 AF<br />
<br>i=09 n=1E k= 04 05 36 54 63 A6 AF B7 C0 E7 EE FA<br />
<br>i=13 n=5A k= 2C 33 3B 3F 63 68 81 88 8F 94 A1 A3 AA CF DB ED F7<br />
<br>i=02 n=42 k= 42 63 74 D1<br />
<br>i=06 n=3D k= 63 73 A3<br />
<br>i=10 n=AC k= 0D 38 44 63 A6 E9<br />
<br>i=14 n=78 k= 07 1B 1E 33 45 57 61 63 68 88 8F 95 A3 AA B7 D1 DB ED F6 F7<br />
<br>i=03 n=D0 k= 0E 12 22 63 87 C5 D7 D8 F0 F4 FB<br />
<br>i=07 n=4A k= 02 63 8F A6<br />
<br>i=11 n=100 k= 0E 57 63 76 78 A6 E5 EA<br />
<br>i=15 n=E6 k= 11 33 4B 56 5A 63 6B 7A 8F 93 B1 ED<br />
</tt><br />
<br>Then we can take a second guess for the encoding value of <math>P=1</math> and filter the k candidates to keep those which are compatible with those we kept.<br />
<br>If no k candidates is left for one of the round key bytes, we backtrack our encoding guesses.<br />
<br>Here there is already no key candidate left.<br />
<br>So we backtrack and try another guess for the encoding of <math>P=0</math> till...<br />
<br><br><tt>Hypothesis 00 is encoded as CE<br />
<br>i=00 n=AE k= 18 63 70 72 74 77 7D 8D '''9B'''<br />
<br>i=04 n=78 k= 04 05 2D 36 3F 40 46 54 63 78 89 8E 9B A6 AF B7 C0 '''CD''' E7 EE FA<br />
<br>i=08 n=E8 k= 1E 63 '''6D''' 78 A6 FE<br />
<br>i=12 n=F0 k= 07 1A 1B 1E 33 36 '''44''' 45 4C 57 5D 61 63 68 6F 88 8F 95 A3 AA B7 C5 D1 DB ED F6 F7 FC<br />
<br>i=01 n=EE k= 0B 41 4E 63 76 '''A8''' BB CA DE EB<br />
<br>i=05 n=7D k= '''2E''' 63 70 97 AF<br />
<br>i=09 n=1E k= 04 05 36 '''54''' 63 A6 AF B7 C0 E7 EE FA<br />
<br>i=13 n=100 k= '''13''' 33 45 49 57 63 8F BF C5 C7 ED<br />
<br>i=02 n=47 k= 63 '''96'''<br />
<br>i=06 n=3D k= 63 73 '''A3'''<br />
<br>i=10 n=AC k= '''0D''' 38 44 63 A6 E9<br />
<br>i=14 n=DF k= '''30''' 63 F9<br />
<br>i=03 n=D8 k= 0A 12 17 22 34 4F 52 58 63 74 '''79''' 95 B7 C5 CF D7 E2 ED<br />
<br>i=07 n=B3 k= 63 9D '''A4'''<br />
<br>i=11 n=100 k= 0E 57 63 '''76''' 78 A6 E5 EA<br />
<br>i=15 n=78 k= 07 1B 1E 33 45 57 61 63 68 88 8F 95 A3 AA '''B7''' D1 DB ED F6 F7<br />
</tt><br />
<br>(in bold I already highlight the correct key bytes that we'll recover in a moment)<br />
<br><br><tt>Hypothesis 01 is encoded as 10<br />
<br>i=00 n=28 k= 7D '''9B'''<br />
<br>i=04 n=24 k= 2D '''CD'''<br />
<br>i=08 n=E8 k= '''6D''' FE<br />
<br>i=12 n=67 k= '''44'''<br />
<br>i=01 n=B0 k= 63 '''A8'''<br />
<br>i=05 n=7D k= '''2E''' 70<br />
<br>i=09 n=82 k= '''54'''<br />
<br>i=13 n=38 k= '''13''' C7<br />
<br>i=02 n=48 k= '''96'''<br />
<br>i=06 n=3D k= '''A3'''<br />
<br>i=10 n=AC k= '''0D''' 38 44<br />
<br>i=14 n=1C k= '''30'''<br />
<br>i=03 n=6C k= '''79'''<br />
<br>i=07 n=4A k= '''A4'''<br />
<br>i=11 n=100 k= '''76''' EA<br />
<br>i=15 n=44 k= 1B '''B7'''<br />
<br><br />
<br>Hypothesis 02 is encoded as A0<br />
<br>i=00 n=1E k= '''9B'''<br />
<br>i=04 n=21 k= '''CD'''<br />
<br>i=08 n=E8 k= '''6D''' FE<br />
<br>i=12 n=E8 k= '''44'''<br />
<br>i=01 n=87 k= '''A8'''<br />
<br>i=05 n=36 k= '''2E'''<br />
<br>i=09 n=82 k= '''54'''<br />
<br>i=13 n=B3 k= '''13'''<br />
<br>i=02 n=3B k= '''96'''<br />
<br>i=06 n=11 k= '''A3'''<br />
<br>i=10 n=35 k= '''0D'''<br />
<br>i=14 n=C8 k= '''30'''<br />
<br>i=03 n=2F k= '''79'''<br />
<br>i=07 n=4A k= '''A4'''<br />
<br>i=11 n=100 k= '''76''' EA<br />
<br>i=15 n=48 k= '''B7'''<br />
</tt><br />
<br />
And so on.<br />
<br>At the end only one possible key round is left so we found the round key and the complete <math>X_2</math> mapping.<br />
<pre><br />
R3K candidate: 9BCD6D44A82E541396A30D3079A476B7<br />
</pre><br />
Then it's just a matter of reversing the key scheduling of AES (yes it's invertible) to go back to the first round key == AES key.<br />
<pre><br />
K00: 4E5343234F707069646123B8DCE442D0<br />
K01: 267F33A5690F43CC0D6E6074D18A22A4<br />
K02: 5AEC7A9B33E339573E8D5923EF077B87<br />
K03: 9BCD6D44A82E541396A30D3079A476B7 <=<br />
K04: DAF5C4F272DB90E1E4789DD19DDCEB66<br />
K05: 4C1CF7AC3EC7674DDABFFA9C476311FA<br />
K06: 979EDA0CA959BD4173E647DD34855627<br />
K07: 402F1614E976AB559A90EC88AE15BAAF<br />
K08: 99DB6FF070ADC4A5EA3D282D44289282<br />
K09: B6947CEBC639B84E2C049063682C02E1<br />
K10: F1E384AE37DA3CE01BDEAC8373F2AE62<br />
</pre><br />
<br>So the AES key is '''4E5343234F707069646123B8DCE442D0''' !<br />
echo 4E5343234F707069646123B8DCE442D0|xxd -r -p<br />
NSC#Oppida#<some_garbage><br />
<br><math>X_2</math> mapping:<br />
<pre><br />
00:CE 01'10 02:A0 03:48 04:C1 05:61 06:33 07:E4 08:6B 09:19 0A:C0 0B:E6 0C:C9 0D:6D 0E:93 0F:E1<br />
10:EA 11:5F 12:13 13:EF 14:3C 15:07 16:54 17:02 18:CA 19:9F 1A:DF 1B:1E 1C:AA 1D:9B 1E:99 1F:03<br />
20:DD 21:FF 22:B7 23:8F 24:37 25:EE 26:4F 27:F7 28:C5 29:81 2A:E5 2B:CF 2C:FB 2D:D5 2E:FD 2F:E3<br />
30:7A 31:D3 32:41 33:C7 34:40 35:8C 36:CC 37:4C 38:26 39:30 3A:45 3B:C8 3C:F2 3D:56 3E:9D 3F:CD<br />
40:D6 41:82 42:B5 43:6F 44:BB 45:1D 46:AF 47:67 48:F9 49:52 4A:6E 4B:DC 4C:BD 4D:59 4E:BA 4F:8B<br />
50:18 51:22 52:7F 53:87 54:A8 55:35 56:A4 57:90 58:4D 59:57 5A:7C 5B:6C 5C:55 5D:24 5E:D8 5F:5B<br />
60:C2 61:84 62:2D 63:11 64:9C 65:4E 66:28 67:68 68:F3 69:65 6A:E7 6B:89 6C:15 6D:2A 6E:01 6F:96<br />
70:DE 71:C3 72:BC 73:E0 74:A3 75:63 76:E8 77:DB 78:B2 79:0D 7A:5D 7B:5A 7C:A6 7D:50 7E:F6 7F:D4<br />
80:B1 81:5E 82:95 83:C4 84:78 85:4B 86:38 87:34 88:06 89:F8 8A:AE 8B:F1 8C:27 8D:71 8E:14 8F:B4<br />
90:E2 91:49 92:2C 93:09 94:BE 95:7D 96:D7 97:4A 98:EC 99:70 9A:04 9B:2B 9C:92 9D:66 9E:9A 9F:32<br />
A0:6A A1:97 A2:31 A3:9E A4:08 A5:3A A6:43 A7:85 A8:0C A9:91 AA:A2 AB:D1 AC:8E AD:20 AE:AC AF:A5<br />
B0:39 B1:74 B2:B6 B3:16 B4:76 B5:F4 B6:3D B7:5C B8:1A B9:ED BA:51 BB:0B BC:80 BD:2F BE:1C BF:DA<br />
C0:94 C1:A9 C2:12 C3:05 C4:73 C5:0A C6:53 C7:62 C8:AD C9:F5 CA:3F CB:75 CC:25 CD:77 CE:B9 CF:42<br />
D0:36 D1:7E D2:EB D3:BF D4:B0 D5:E9 D6:C6 D7:98 D8:69 D9:72 DA:60 DB:B8 DC:86 DD:23 DE:47 DF:00<br />
E0:88 E1:B3 E2:83 E3:FC E4:64 E5:46 E6:A7 E7:CB E8:D2 E9:58 EA:7B EB:21 EC:F0 ED:44 EE:3B EF:3E<br />
F0:0E F1:1B F2:17 F3:FA F4:2E F5:D9 F6:8D F7:AB F8:0F F9:D0 FA:1F FB:FE FC:A1 FD:29 FE:8A FF:79<br />
</pre><br />
<br>The full attack takes 3.1s on my laptop.<br />
<br><br />
<br>Recovery of the external encodings is left as exercise for the reader ;-)<br />
<br>Fun facts: if on the clear implementation we don't look for <math>0\!:\!0\!:\!0\!:\!0</math> to <math>0</math> but for <math>x\!:\!x\!:\!x\!:\!x</math> to <math>x</math> where <math>x</math> is arbitrarily chosen, we still find the right round key but with a wrong <math>X_2</math> mapping.<br />
<br><br />
<br>Thanks for your patience if you have read so far, feel free to share your thoughts with me ([https://twitter.com/doegox @doegox]).<br />
<br>And thanks to Eloi for this great challenge and to Axel, Arnaud and Guy those who have shared their write-up!<br />
<br />
==Epilogue==<br />
<br />
Before being able to mount the attack, we had to recover the actual tables and that's not that simple.<br />
<br>Axel's version contains the tables but still unsorted as this was not needed for him to break the challenge:<br />
* Table names and positions are random<br />
* Code is flattened<br />
* Intermediate variables are taken in arbitrary order from a reusable pool, including output buffer<br />
* Steps are calculated out of order, only order due to dependencies is preserved<br />
* Half of tables are actually tables to function snippets in the original code but Axel's version removed already that obfuscation layer, sigh!<br />
So to rename properly the tables one needs to:<br />
* Rewrite code with static single assignment (SSA) form, to be able to reorder it without conflicts<br />
* Start from output buffers and rename logically intermediate values and tables<br />
Detailed steps:<br />
* As SSA version I took wbaes128_solve.cpp from his writeup, extracted and reordered the rounds (by hand)<br />
//ROUND1<br />
memory[2] = T_00430909[key[0x0]];<br />
memory[9] = T_004E19C5[key[0xa]];<br />
memory[10] = T_0055BF00[key[0xf]];<br />
memory[18] = TH_005D3C2C[key[0xf]];<br />
memory[20] = T16_00415EFE[memory[9]][memory[10]];<br />
etc<br />
* To have something to compare with, I took the whitebox generator and replaced actual lookups by printf(), making sure all intermediate values are on SSA form too<br />
b1_0[0] = rT0[0][0][t[0][0]]<br />
b1_0[1] = rT0[0][1][t[0][5]]<br />
b1_0[2] = rT0[0][2][t[0][10]]<br />
b1_0[3] = rT0[0][3][t[0][15]]<br />
b1_0_01 = xT0[b1_0[0]][b1_0[1]]<br />
b1_0_23 = xT1[b1_0[2]][b1_0[3]]<br />
t[1][0] = xT2[b1_0_01][b1_0_23]<br />
etc<br />
* Then I build a dictionary associating tables and indexes with each variable assignment from this output.<br />
* Reading backward the SSA version, now I can make matches between table names:<br />
fT[0] = TH_0049CA9E<br />
fT[1] = T_00493D6C<br />
fT[2] = TH_004866A5<br />
fT[3] = T_005D1023<br />
fT[4] = T_00534D4A<br />
...<br />
rT0[0][0] = T_00438C5E<br />
rT0[0][1] = T_005FCF50<br />
rT0[0][2] = TH_004D3B58<br />
rT0[0][3] = TH_005D3C2C<br />
...<br />
* Then based on those matches, I generate C code to copy NSC tables to aes_wbs_s struct of the wb generator code<br />
memcpy(aes.finalTable[0], TH_0049CA9E, sizeof(TH_0049CA9E));<br />
memcpy(aes.finalTable[1], T_00493D6C, sizeof(T_00493D6C));<br />
memcpy(aes.finalTable[2], TH_004866A5, sizeof(TH_004866A5));<br />
memcpy(aes.finalTable[3], T_005D1023, sizeof(T_005D1023));<br />
memcpy(aes.finalTable[4], T_00534D4A, sizeof(T_00534D4A));<br />
...<br />
memcpy(aes.roundTables[0][0][0], T_00438C5E, sizeof(T_00438C5E));<br />
memcpy(aes.roundTables[0][0][1], T_005FCF50, sizeof(T_005FCF50));<br />
memcpy(aes.roundTables[0][0][2], TH_004D3B58, sizeof(TH_004D3B58));<br />
memcpy(aes.roundTables[0][0][3], TH_005D3C2C, sizeof(TH_005D3C2C));<br />
...<br />
* Compile and execute :) We obtain a file with the right tables in the same format as the one produced by the whitebox generator code.<br />
<br />
==Source code==<br />
All scripts have finally been published here: https://github.com/SideChannelMarvels/Deadpool/tree/master/wbs_aes_nsc2013</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10549Laptop Dell XPS 152023-06-14T22:16:19Z<p>PhilippeTeuwen: </p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* '''Secure Boot: disable'''<br />
* '''SATA: switch from Raid to AHCI'''<br />
* '''Advances Boot Options:/ NOT Enable Legacy Option ROMs'''<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
** See below (first boot) how to create a new entry<br />
* POST/Fastboot/Auto<br />
* auto os recovery threshold off<br />
* Fn Lock Options<br />
** NOT Fn Lock<br />
** Lock Mode Enable/Secondary<br />
* UEFI Capsule Firmware Updates / Enable<br />
** This allows using ``fwupdmgr update`` e.g. to update the TPM firmware<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
* 1.14.0 [https://dl.dell.com/FOLDER06130362M/1/XPS_9550_1.14.0.exe XPS_9550_1.14.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=90khw fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
===Wayland===<br />
Got quite some troubles with Wayland, so I reverted it back to X11:<br />
<br />
Edit /etc/gdm3/daemon.conf and uncomment line:<br />
WaylandEnable=false<br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
** Boot Option Name : Debian<br />
** File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
** File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus & CUDA====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-cuda-toolkit mesa-utils<br />
reboot<br />
Examples:<br />
optirun -b none nvidia-settings -c :8<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
optirun -b none ./hashcat.bin -m 500 example500.hash example.dict<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Yubikey&diff=10548Yubikey2023-04-25T08:19:37Z<p>PhilippeTeuwen: /* Thunderbird Exclusive Mode */</p>
<hr />
<div>=Yubikey Neo Nano=<br />
==First time plugged==<br />
new full-speed USB device number 31 using xhci_hcd<br />
New USB device found, idVendor=1050, idProduct=0114<br />
New USB device strings: Mfr=1, Product=2, SerialNumber=0<br />
Product: Yubikey NEO OTP+U2F<br />
Manufacturer: Yubico<br />
==OTP test==<br />
Can be performed without any install as OTP is using the keyboard emulation mode.<br />
<br>Visit https://demo.yubico.com/<br />
<br>''As an HID device (keyboard), the YubiKey actually emits "scan codes" rather than actual characters. Different keyboard layouts have a different mapping between scan codes and the characters they represent.''<br />
<br>''Therefore, Yubico has designed a character set which is invariant between keyboard layouts which has 16 characters and we call the Modhex set – Modified Hexadecimal. Therefore, each character has 4 bits of entropy.''<br />
Parameters<br />
device=neonano<br />
key=ccccccdugjdbtnglkbibhjkeifunghgngibgfjcunlfl<br />
identity=ccccccdugjdb<br />
serial=3037217<br />
<br />
Authentication Output<br />
h=sznj5f+KKweKLObaoMo44IJMGOM=<br />
t=2015-03-12T19:37:09Z0788<br />
otp=ccccccdugjdbtnglkbibhjkeifunghgngibgfjcunlfl<br />
nonce=a830bdee7aa3735626ea90bcd5b2428c<br />
sl=25<br />
status=OK<br />
<br />
==Install==<br />
For CCID & U2F, one needs some extra steps.<br />
<br>Note that contrary to what is said in Yubico docs, mine had already the mode U2F activated.<br />
<br />
To use U2F with Chrome, install [https://chrome.google.com/webstore/detail/fido-u2f-universal-2nd-fa/pfboblefjcgdjicmnffhdgionmgcdmne FIDO U2F plugin]<br />
<br />
We need the yubikey neo manager, cf [https://www.yubico.com/wp-content/uploads/2014/11/NEO-Manager-Quick-Start-Guide.pdf NEO-Manager-Quick-Start-Guide.pdf]<br />
Install [https://developers.yubico.com/yubikey-neo-manager/Releases/ Yubikey neo manager], here [https://developers.yubico.com/yubikey-neo-manager/Releases/yubikey-neo-manager-1.1.0.tar.gz yubikey-neo-manager-1.1.0.tar.gz]<br />
<br>We could use "python setup.py install --user" but it would also install locally pySide which we install properly via apt-get<br />
sudo apt-get install ykneomgr python-pyside yubikey-personalization yubikey-personalization-gui u2f-host<br />
tar yubikey-neo-manager-1.1.0.tar.gz<br />
cd yubikey-neo-manager-1.1.0<br />
cp scripts/neoman neoman.py<br />
./neoman.py<br />
<br />
Serial: 3037217<br />
FW version: 3.3.0<br />
U2F/FIDO: supported<br />
Change connection mode [OTP+U2F]<br />
We can change its name for sth more convivial<br />
<br>There are three supports that can be activated:<br />
* ''The OTP mode refers to the YubiKey functions the NEO shares with the standard YubiKey, including two Configuration Slots that can be programmed with any two of the following: Yubico OTP (programmed by Yubico in Slot 1, by default), OATH-HOTP, Challenge-Response and Static Password.''<br />
* ''The CCID Mode refers to the smart card elements on the YubiKey NEO and NEO-n, and includes the NEO applets such as OpenPGP, PIV and YubiOATH.''<br />
* ''The U2F Mode refers to the Universal 2nd Factor (U2F) functionality of the YubiKey NEO and NEO-n.''<br />
Activate all supports:<br />
* Change connection mode => +OTP +CCID +U2F<br />
* unplug/wait/replug<br />
Now we see available applets<br />
* YubiKey OTP<br />
* YubiOATH<br />
* Yubico U2F<br />
* OpenPGP<br />
* Yubico PIV<br />
<br />
pcsc_scan results:<br />
<pre><br />
Reader 0: Yubico Yubikey NEO OTP+U2F+CCID 00 00<br />
Card state: Card inserted, <br />
ATR: 3B FC 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 4E 45 4F 72 33 E1<br />
<br />
ATR: 3B FC 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 4E 45 4F 72 33 E1<br />
+ TS = 3B --> Direct Convention<br />
+ T0 = FC, Y(1): 1111, K: 12 (historical bytes)<br />
TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU<br />
43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s<br />
TB(1) = 00 --> VPP is not electrically connected<br />
TC(1) = 00 --> Extra guard time: 0<br />
TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 <br />
-----<br />
TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 <br />
-----<br />
TA(3) = FE --> IFSC: 254<br />
TB(3) = 15 --> Block Waiting Integer: 1 - Character Waiting Integer: 5<br />
+ Historical bytes: 59 75 62 69 6B 65 79 4E 45 4F 72 33<br />
Category indicator byte: 59 (proprietary format)<br />
+ TCK = E1 (correct checksum)<br />
<br />
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):<br />
3B FC 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 4E 45 4F 72 33 E1<br />
YubiKey NEO (PKI)<br />
http://www.yubico.com/<br />
</pre><br />
<br />
==FIDO U2F test (registration)==<br />
<br>Go to https://demo.yubico.com/start/u2f/neonano<br />
<br><br />
<br>Register:<br />
<br>Create doegox / demodemo<br />
<pre><br />
Login Data<br />
username: doegox<br />
password: demodemo<br />
<br />
Enroll Data<br />
origin: https://demo.yubico.com<br />
version: U2F_V2<br />
challenge: SMkZgqF8LYgnhZTQaYcVTZc3DzO8RXY8TfLhveiIQz4<br />
appId: https://demo.yubico.com<br />
<br />
Response Data<br />
clientData: {"typ":"navigator.id.finishEnrollment","challenge":"SMkZgqF8LYgnhZTQaYcVTZc3DzO8RXY8TfLhveiIQz4","origin":"https://demo.yubico.com","cid_pubkey":""}<br />
registrationData: 0504ceb7c2675e1370b64ec95fabd98c1f68f1dddf706ffc20d56367ae3274717a6ea95259ece26ca7d4c38db3b81c2a7a9b628cdaa6bcc2487d1a04f83e7178a5144067fdcb62dfceb6ebba4e3caf480dcc5f179f8f6f6499e97ba39e079faaea892d6351b7fc2da6c1e5c2511e2c8a1c490e87d20c1bd17613013db45197be3189f93082021c30820106a00302010202047258c2ea300b06092a864886f70d01010b302e312c302a0603550403132359756269636f2055324620526f6f742043412053657269616c203435373230303633313020170d3134303830313030303030305a180f32303530303930343030303030305a302b3129302706035504030c2059756269636f205532462045452053657269616c2031343830333332313537383059301306072a8648ce3d020106082a8648ce3d03010703420004a2b039932254319d41fa4854d57ca18deb69cc9b3e4d81ae399f323e81164399ef2a9514673d157cecbfb5f0bcc7890853ee55cf3f1a2066f4d5139b938b310ba3123010300e060a2b0601040182c40a01020400300b06092a864886f70d01010b0382010101bccc1af90b7b957818d555a433716a6016acedcb3132c3410f366164106c23d92ab06c5d1c2cb6929ad42148aa2a3af3ae53893a6aa140cae9326593153d92aa00fd15874b0232944cce90ef1198cedefea087967c6c80e6b50009e41da79c82f256973b0c0eed6a3ddd52b67334c0fcbfe6d88ca753b1927f43342cb6c7b020f92814e21146daad6b48b09041625ff730475d4817e51219c407294068317eb924ff6763a0f34375c7a65383ddb1d4387b028b632a05953ed5f28ead026934fd30f1c050a5293f86c5539bb522196fc51abc6b20a5dfa467c218808a0f108c7ee58a22c86ed078cfd29121a30017d4bb35a627b64a82b7f9512162d90e1512ea3045022100d2648a850920595a0285709ce12f9975d01cc8005d2bddc568855f8aed8926fe02206c15949affb6bc15fb32f3b7f1064202e07ee10008607a6f2e16ad45f611f93b<br />
<br />
Attestation Certificate<br />
Certificate:<br />
Data:<br />
Version: 3 (0x2)<br />
Serial Number: 1918419690 (0x7258c2ea)<br />
Signature Algorithm: sha256WithRSAEncryption<br />
Issuer: CN=Yubico U2F Root CA Serial 457200631<br />
Validity<br />
Not Before: Aug 1 00:00:00 2014 GMT<br />
Not After : Sep 4 00:00:00 2050 GMT<br />
Subject: CN=Yubico U2F EE Serial 14803321578<br />
Subject Public Key Info:<br />
Public Key Algorithm: id-ecPublicKey<br />
Public-Key: (256 bit)<br />
pub: <br />
04:a2:b0:39:93:22:54:31:9d:41:fa:48:54:d5:7c:<br />
a1:8d:eb:69:cc:9b:3e:4d:81:ae:39:9f:32:3e:81:<br />
16:43:99:ef:2a:95:14:67:3d:15:7c:ec:bf:b5:f0:<br />
bc:c7:89:08:53:ee:55:cf:3f:1a:20:66:f4:d5:13:<br />
9b:93:8b:31:0b<br />
ASN1 OID: prime256v1<br />
X509v3 extensions:<br />
1.3.6.1.4.1.41482.1.2: <br />
<br />
Signature Algorithm: sha256WithRSAEncryption<br />
bc:cc:1a:f9:0b:7b:95:78:18:d5:55:a4:33:71:6a:60:16:ac:<br />
ed:cb:31:32:c3:41:0f:36:61:64:10:6c:23:d9:2a:b0:6c:5d:<br />
1c:2c:b6:92:9a:d4:21:48:aa:2a:3a:f3:ae:53:89:3a:6a:a1:<br />
40:ca:e9:32:65:93:15:3d:92:aa:00:fd:15:87:4b:02:32:94:<br />
4c:ce:90:ef:11:98:ce:de:fe:a0:87:96:7c:6c:80:e6:b5:00:<br />
09:e4:1d:a7:9c:82:f2:56:97:3b:0c:0e:ed:6a:3d:dd:52:b6:<br />
73:34:c0:fc:bf:e6:d8:8c:a7:53:b1:92:7f:43:34:2c:b6:c7:<br />
b0:20:f9:28:14:e2:11:46:da:ad:6b:48:b0:90:41:62:5f:f7:<br />
30:47:5d:48:17:e5:12:19:c4:07:29:40:68:31:7e:b9:24:ff:<br />
67:63:a0:f3:43:75:c7:a6:53:83:dd:b1:d4:38:7b:02:8b:63:<br />
2a:05:95:3e:d5:f2:8e:ad:02:69:34:fd:30:f1:c0:50:a5:29:<br />
3f:86:c5:53:9b:b5:22:19:6f:c5:1a:bc:6b:20:a5:df:a4:67:<br />
c2:18:80:8a:0f:10:8c:7e:e5:8a:22:c8:6e:d0:78:cf:d2:91:<br />
21:a3:00:17:d4:bb:35:a6:27:b6:4a:82:b7:f9:51:21:62:d9:<br />
0e:15:12:ea<br />
-----BEGIN CERTIFICATE-----<br />
MIICHDCCAQagAwIBAgIEcljC6jALBgkqhkiG9w0BAQswLjEsMCoGA1UEAxMjWXVi<br />
aWNvIFUyRiBSb290IENBIFNlcmlhbCA0NTcyMDA2MzEwIBcNMTQwODAxMDAwMDAw<br />
WhgPMjA1MDA5MDQwMDAwMDBaMCsxKTAnBgNVBAMMIFl1YmljbyBVMkYgRUUgU2Vy<br />
aWFsIDE0ODAzMzIxNTc4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorA5kyJU<br />
MZ1B+khU1XyhjetpzJs+TYGuOZ8yPoEWQ5nvKpUUZz0VfOy/tfC8x4kIU+5Vzz8a<br />
IGb01RObk4sxC6MSMBAwDgYKKwYBBAGCxAoBAgQAMAsGCSqGSIb3DQEBCwOCAQEA<br />
vMwa+Qt7lXgY1VWkM3FqYBas7csxMsNBDzZhZBBsI9kqsGxdHCy2kprUIUiqKjrz<br />
rlOJOmqhQMrpMmWTFT2SqgD9FYdLAjKUTM6Q7xGYzt7+oIeWfGyA5rUACeQdp5yC<br />
8laXOwwO7Wo93VK2czTA/L/m2IynU7GSf0M0LLbHsCD5KBTiEUbarWtIsJBBYl/3<br />
MEddSBflEhnEBylAaDF+uST/Z2Og80N1x6ZTg92x1Dh7AotjKgWVPtXyjq0CaTT9<br />
MPHAUKUpP4bFU5u1IhlvxRq8ayCl36RnwhiAig8QjH7liiLIbtB4z9KRIaMAF9S7<br />
NaYntkqCt/lRIWLZDhUS6g==<br />
-----END CERTIFICATE-----<br />
</pre><br />
==FIDO U2F test (login)==<br />
<pre><br />
Login Data<br />
username: doegox<br />
password: demodemo<br />
<br />
Challenge Data<br />
version: U2F_V2<br />
challenge: JRrh04hHKIxAuLk7SXSRQPwqK4994NQR0EfWIzY4wgc<br />
keyHandle: Z_3LYt_Otuu6TjyvSA3MXxefj29kmel7o54Hn6rqiS1jUbf8LabB5cJRHiyKHEkOh9IMG9F2EwE9tFGXvjGJ-Q<br />
<br />
Response Data<br />
clientData: {"typ":"navigator.id.getAssertion","challenge":"JRrh04hHKIxAuLk7SXSRQPwqK4994NQR0EfWIzY4wgc","origin":"https://demo.yubico.com","cid_pubkey":""}<br />
signatureData: AQAAAAEwRAIgLrqKb81ePH9jcIGFDjyEWwc5p4jJV80IpxGY8lw4lfMCIFR36WIIpcXWYBpq6W9VVUud9pE19k09do8KKEpm1kij<br />
<br />
Authentication Parameters<br />
touch: true<br />
counter: 1<br />
</pre><br />
<br />
==Configuration==<br />
yubikey-personalization-gui<br />
or<br />
man ykpersonalize<br />
==Google==<br />
* Go to https://security.google.com/settings/security/securitykey/add<br />
* Press Register then touch the key<br />
==OpenPGP==<br />
For info, applet source [https://github.com/Yubico/ykneo-openpgp here]<br />
<br>Make user CCID mode is activated<br />
<br />
See [[GnuPG#Yubikey]]<br />
<br />
TODO<br />
* https://www.yubico.com/2012/12/yubikey-neo-openpgp/<br />
* https://www.2realities.com/blog/2014/11/04/yubikey-slash-openpgp-smartcards-for-newbies/<br />
* https://wiki.gnome.org/Projects/GnomeKeyring<br />
<br />
==Misc==<br />
* [https://www.yubico.com/start/ First time use]<br />
** [https://demo.yubico.com/start/otp/neonano First time use Neo Nano]<br />
* [https://www.yubico.com/applications/ Yubico applications]<br />
* [https://demo.yubico.com/php-yubico/Modhex_Calculator.php Modhex calculator]<br />
* [https://developers.yubico.com/ OpenSource]<br />
* http://uname.pingveno.net/blog/index.php/post/2013/08/06/Configure-2-factor-Yubikey-authentication-for-Debian-%3A-the-easiest-way<br />
<br />
==Other Debian packages==<br />
libauth-yubikey-decrypter-perl - yubikey token output decryptor<br />
libauth-yubikey-webclient-perl - Perl module to authenticate Yubikey against the Yubico Web API<br />
<br />
python-pyhsm - Python code for talking to a Yubico YubiHSM hardware<br />
yhsm-daemon - YubiHSM server daemon<br />
yhsm-tools - Common files for YubiHSM applications<br />
yhsm-validation-server - Validation server using YubiHSM<br />
yhsm-yubikey-ksm - Yubikey Key Storage Module using YubiHSM<br />
<br />
python-yubico - Python code for talking to Yubico YubiKeys<br />
python-yubico-tools - Tools for Yubico YubiKeys<br />
libykclient3 - Yubikey client library runtime<br />
libpam-yubico - two-factor password and YubiKey OTP PAM module<br />
<br />
yubikey-ksm - Key Storage Module for YubiKey One-Time Password (OTP) tokens<br />
yubikey-server-c - Yubikey validation server<br />
yubikey-val - One-Time Password (OTP) validation server for YubiKey tokens<br />
yubiserver - Yubikey OTP and HOTP/OATH Validation Server<br />
libapache2-mod-authn-yubikey - Yubikey authentication provider for Apache<br />
<br />
libu2f-server0 - Universal 2nd Factor (U2F) server communication C Library<br />
u2f-server - Command line tool to do Universal 2nd Factor (U2F) operations<br />
=YubiKey 4C Nano=<br />
Beware from this version on, Yubico replaced all open source components by closed-source ones: https://github.com/Yubico/ykneo-openpgp/issues/2#issuecomment-218446368<br />
<br />
See also https://wiki.debian.org/Smartcards/YubiKey4<br />
==First time plugged==<br />
new full-speed USB device number 2 using xhci_hcd<br />
New USB device found, idVendor=1050, idProduct=0407<br />
New USB device strings: Mfr=1, Product=2, SerialNumber=0<br />
Product: Yubikey 4 OTP+U2F+CCID<br />
Manufacturer: Yubico<br />
input: Yubico Yubikey 4 OTP+U2F+CCID as /devices/pci0000:00/0000:00:1d.6/0000:06:00.0/0000:07:02.0/0000:3e:00.0/usb3/3-1/3-1:1.0/0003:1050:0407.0004/input/input26<br />
hid-generic 0003:1050:0407.0004: input,hidraw2: USB HID v1.10 Keyboard [Yubico Yubikey 4 OTP+U2F+CCID] on usb-0000:3e:00.0-1/input0<br />
hid-generic 0003:1050:0407.0005: hiddev2,hidraw3: USB HID v1.10 Device [Yubico Yubikey 4 OTP+U2F+CCID] on usb-0000:3e:00.0-1/input1<br />
<br />
==OTP test==<br />
Parameters<br />
tab=one-factor<br />
mode=one-factor<br />
key=cccccchkrlrljuhribikcfginlbvhunchknuelfunnlu<br />
identity=cccccchkrlrl<br />
serial=6933194<br />
<br />
Authentication Output<br />
h=Z1jquAXFhhPvZJL2AvbAnhFqVOw=<br />
t=2017-12-07T13:52:56Z0602<br />
otp=cccccchkrlrljuhribikcfginlbvhunchknuelfunnlu<br />
nonce=9cdcd3a9cb255714b6bfb7250542010f<br />
sl=25<br />
status=OK<br />
<br />
==Install==<br />
pcsc_scan results:<br />
<pre><br />
Reader 2: Yubico Yubikey 4 OTP+U2F+CCID 02 00<br />
Card state: Card inserted, <br />
ATR: 3B F8 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 34 D4<br />
<br />
ATR: 3B F8 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 34 D4<br />
+ TS = 3B --> Direct Convention<br />
+ T0 = F8, Y(1): 1111, K: 8 (historical bytes)<br />
TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU<br />
43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s<br />
TB(1) = 00 --> VPP is not electrically connected<br />
TC(1) = 00 --> Extra guard time: 0<br />
TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 <br />
-----<br />
TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 <br />
-----<br />
TA(3) = FE --> IFSC: 254<br />
TB(3) = 15 --> Block Waiting Integer: 1 - Character Waiting Integer: 5<br />
+ Historical bytes: 59 75 62 69 6B 65 79 34<br />
Category indicator byte: 59 (proprietary format)<br />
+ TCK = D4 (correct checksum)<br />
<br />
Possibly identified card (using /home/phil/.cache/smartcard_list.txt):<br />
3B F8 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 34 D4<br />
Yubico Yubikey 4 OTP+CCID<br />
</pre><br />
<br />
<pre><br />
# apt-get install yubikey-personalization yubikey-personalization-gui yubikey-neo-manager yubico-piv-tool<br />
<br />
$ ykinfo -a<br />
serial: 6933194<br />
serial_hex: 69caca<br />
serial_modhex: hkrlrl<br />
version: 4.3.7<br />
touch_level: 1029<br />
programming_sequence: 1<br />
slot1_status: 1<br />
slot2_status: 0<br />
vendor_id: 1050<br />
product_id: 407<br />
<br />
$ ykinfo -c<br />
capabilities: 0c0101ff02040069caca03013f<br />
<br />
$ yubikey-personalization-gui &<br />
<br />
$ neoman &<br />
</pre><br />
<br />
Connection mode:<br />
* OTP+U2F+CCID<br />
<br />
Now we see available applets<br />
* YubiKey OTP<br />
* YubiOATH<br />
* Yubico U2F<br />
* OpenPGP<br />
* Yubico PIV<br />
<br />
==Disabling HID==<br />
<br />
<source lang=bash><br />
$ ykpersonalize -m5<br />
Firmware version 4.3.7 Touch level 1029 Program sequence 1<br />
The USB mode will be set to: 0x5<br />
Commit? (y/n) [n]: y<br />
WARNING: Changing mode will require you to use another tool (ykneomgr or u2f-host) to switch back if OTP mode is disabled, really commit? (y/n) [n]: y<br />
<br />
# Re-plug<br />
<br />
$ ykpersonalize <br />
Yubikey core error: no yubikey present<br />
<br />
$ ykneomgr -m<br />
05<br />
</source><br />
<br />
==A new key==<br />
<br />
This is a weird usage :)<br />
<br />
The "`/~" key of my keyboard got broken (along with F1 and F2 but I can live without them).<br />
<br />
So I'm using the static password feature to get back that dead deadkey...<br />
<br />
<source lang=bash><br />
# Re-enable HID (and disable U2F):<br />
$ ykneomgr -M 2<br />
<br />
# Configure with the GUI<br />
$ yubikey-personalization-gui<br />
## Settings / "Enter" (to disable automatic carriage-return, it must be unselected)<br />
## Settings / "Use fast triggering" (as I don't use slot2, it becomes more responsive and skip the 0.3s delay)<br />
## Static Password / Scan code / Configuration Slot 1 / Keyboard: US layout / Password: "`" (scancode=35) / Write configuration<br />
</source><br />
<br />
Now the key works as expected (it's a deadkey in the US intl mode) and works with modifiers such as "Shift" \o/<br />
<br />
==Thunderbird/Gpg Exclusive Mode==<br />
<br />
Thunderbird (actually the command-line gpg) requires connecting to the YubiKey in Exclusive Mode but if e.g. the Brave browser was started before, it has already opened the connection in Shared Mode.<br />
One can add to the script to launch the browser:<br />
<pre><br />
( sleep 3; pcsc_scan -n -c |grep -i -A3 "YubiKey"|grep -i -q "Shared Mode" && sudo service pcscd restart ) &<br />
</pre></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Yubikey&diff=10547Yubikey2023-04-25T08:10:56Z<p>PhilippeTeuwen: </p>
<hr />
<div>=Yubikey Neo Nano=<br />
==First time plugged==<br />
new full-speed USB device number 31 using xhci_hcd<br />
New USB device found, idVendor=1050, idProduct=0114<br />
New USB device strings: Mfr=1, Product=2, SerialNumber=0<br />
Product: Yubikey NEO OTP+U2F<br />
Manufacturer: Yubico<br />
==OTP test==<br />
Can be performed without any install as OTP is using the keyboard emulation mode.<br />
<br>Visit https://demo.yubico.com/<br />
<br>''As an HID device (keyboard), the YubiKey actually emits "scan codes" rather than actual characters. Different keyboard layouts have a different mapping between scan codes and the characters they represent.''<br />
<br>''Therefore, Yubico has designed a character set which is invariant between keyboard layouts which has 16 characters and we call the Modhex set – Modified Hexadecimal. Therefore, each character has 4 bits of entropy.''<br />
Parameters<br />
device=neonano<br />
key=ccccccdugjdbtnglkbibhjkeifunghgngibgfjcunlfl<br />
identity=ccccccdugjdb<br />
serial=3037217<br />
<br />
Authentication Output<br />
h=sznj5f+KKweKLObaoMo44IJMGOM=<br />
t=2015-03-12T19:37:09Z0788<br />
otp=ccccccdugjdbtnglkbibhjkeifunghgngibgfjcunlfl<br />
nonce=a830bdee7aa3735626ea90bcd5b2428c<br />
sl=25<br />
status=OK<br />
<br />
==Install==<br />
For CCID & U2F, one needs some extra steps.<br />
<br>Note that contrary to what is said in Yubico docs, mine had already the mode U2F activated.<br />
<br />
To use U2F with Chrome, install [https://chrome.google.com/webstore/detail/fido-u2f-universal-2nd-fa/pfboblefjcgdjicmnffhdgionmgcdmne FIDO U2F plugin]<br />
<br />
We need the yubikey neo manager, cf [https://www.yubico.com/wp-content/uploads/2014/11/NEO-Manager-Quick-Start-Guide.pdf NEO-Manager-Quick-Start-Guide.pdf]<br />
Install [https://developers.yubico.com/yubikey-neo-manager/Releases/ Yubikey neo manager], here [https://developers.yubico.com/yubikey-neo-manager/Releases/yubikey-neo-manager-1.1.0.tar.gz yubikey-neo-manager-1.1.0.tar.gz]<br />
<br>We could use "python setup.py install --user" but it would also install locally pySide which we install properly via apt-get<br />
sudo apt-get install ykneomgr python-pyside yubikey-personalization yubikey-personalization-gui u2f-host<br />
tar yubikey-neo-manager-1.1.0.tar.gz<br />
cd yubikey-neo-manager-1.1.0<br />
cp scripts/neoman neoman.py<br />
./neoman.py<br />
<br />
Serial: 3037217<br />
FW version: 3.3.0<br />
U2F/FIDO: supported<br />
Change connection mode [OTP+U2F]<br />
We can change its name for sth more convivial<br />
<br>There are three supports that can be activated:<br />
* ''The OTP mode refers to the YubiKey functions the NEO shares with the standard YubiKey, including two Configuration Slots that can be programmed with any two of the following: Yubico OTP (programmed by Yubico in Slot 1, by default), OATH-HOTP, Challenge-Response and Static Password.''<br />
* ''The CCID Mode refers to the smart card elements on the YubiKey NEO and NEO-n, and includes the NEO applets such as OpenPGP, PIV and YubiOATH.''<br />
* ''The U2F Mode refers to the Universal 2nd Factor (U2F) functionality of the YubiKey NEO and NEO-n.''<br />
Activate all supports:<br />
* Change connection mode => +OTP +CCID +U2F<br />
* unplug/wait/replug<br />
Now we see available applets<br />
* YubiKey OTP<br />
* YubiOATH<br />
* Yubico U2F<br />
* OpenPGP<br />
* Yubico PIV<br />
<br />
pcsc_scan results:<br />
<pre><br />
Reader 0: Yubico Yubikey NEO OTP+U2F+CCID 00 00<br />
Card state: Card inserted, <br />
ATR: 3B FC 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 4E 45 4F 72 33 E1<br />
<br />
ATR: 3B FC 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 4E 45 4F 72 33 E1<br />
+ TS = 3B --> Direct Convention<br />
+ T0 = FC, Y(1): 1111, K: 12 (historical bytes)<br />
TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU<br />
43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s<br />
TB(1) = 00 --> VPP is not electrically connected<br />
TC(1) = 00 --> Extra guard time: 0<br />
TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 <br />
-----<br />
TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 <br />
-----<br />
TA(3) = FE --> IFSC: 254<br />
TB(3) = 15 --> Block Waiting Integer: 1 - Character Waiting Integer: 5<br />
+ Historical bytes: 59 75 62 69 6B 65 79 4E 45 4F 72 33<br />
Category indicator byte: 59 (proprietary format)<br />
+ TCK = E1 (correct checksum)<br />
<br />
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):<br />
3B FC 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 4E 45 4F 72 33 E1<br />
YubiKey NEO (PKI)<br />
http://www.yubico.com/<br />
</pre><br />
<br />
==FIDO U2F test (registration)==<br />
<br>Go to https://demo.yubico.com/start/u2f/neonano<br />
<br><br />
<br>Register:<br />
<br>Create doegox / demodemo<br />
<pre><br />
Login Data<br />
username: doegox<br />
password: demodemo<br />
<br />
Enroll Data<br />
origin: https://demo.yubico.com<br />
version: U2F_V2<br />
challenge: SMkZgqF8LYgnhZTQaYcVTZc3DzO8RXY8TfLhveiIQz4<br />
appId: https://demo.yubico.com<br />
<br />
Response Data<br />
clientData: {"typ":"navigator.id.finishEnrollment","challenge":"SMkZgqF8LYgnhZTQaYcVTZc3DzO8RXY8TfLhveiIQz4","origin":"https://demo.yubico.com","cid_pubkey":""}<br />
registrationData: 0504ceb7c2675e1370b64ec95fabd98c1f68f1dddf706ffc20d56367ae3274717a6ea95259ece26ca7d4c38db3b81c2a7a9b628cdaa6bcc2487d1a04f83e7178a5144067fdcb62dfceb6ebba4e3caf480dcc5f179f8f6f6499e97ba39e079faaea892d6351b7fc2da6c1e5c2511e2c8a1c490e87d20c1bd17613013db45197be3189f93082021c30820106a00302010202047258c2ea300b06092a864886f70d01010b302e312c302a0603550403132359756269636f2055324620526f6f742043412053657269616c203435373230303633313020170d3134303830313030303030305a180f32303530303930343030303030305a302b3129302706035504030c2059756269636f205532462045452053657269616c2031343830333332313537383059301306072a8648ce3d020106082a8648ce3d03010703420004a2b039932254319d41fa4854d57ca18deb69cc9b3e4d81ae399f323e81164399ef2a9514673d157cecbfb5f0bcc7890853ee55cf3f1a2066f4d5139b938b310ba3123010300e060a2b0601040182c40a01020400300b06092a864886f70d01010b0382010101bccc1af90b7b957818d555a433716a6016acedcb3132c3410f366164106c23d92ab06c5d1c2cb6929ad42148aa2a3af3ae53893a6aa140cae9326593153d92aa00fd15874b0232944cce90ef1198cedefea087967c6c80e6b50009e41da79c82f256973b0c0eed6a3ddd52b67334c0fcbfe6d88ca753b1927f43342cb6c7b020f92814e21146daad6b48b09041625ff730475d4817e51219c407294068317eb924ff6763a0f34375c7a65383ddb1d4387b028b632a05953ed5f28ead026934fd30f1c050a5293f86c5539bb522196fc51abc6b20a5dfa467c218808a0f108c7ee58a22c86ed078cfd29121a30017d4bb35a627b64a82b7f9512162d90e1512ea3045022100d2648a850920595a0285709ce12f9975d01cc8005d2bddc568855f8aed8926fe02206c15949affb6bc15fb32f3b7f1064202e07ee10008607a6f2e16ad45f611f93b<br />
<br />
Attestation Certificate<br />
Certificate:<br />
Data:<br />
Version: 3 (0x2)<br />
Serial Number: 1918419690 (0x7258c2ea)<br />
Signature Algorithm: sha256WithRSAEncryption<br />
Issuer: CN=Yubico U2F Root CA Serial 457200631<br />
Validity<br />
Not Before: Aug 1 00:00:00 2014 GMT<br />
Not After : Sep 4 00:00:00 2050 GMT<br />
Subject: CN=Yubico U2F EE Serial 14803321578<br />
Subject Public Key Info:<br />
Public Key Algorithm: id-ecPublicKey<br />
Public-Key: (256 bit)<br />
pub: <br />
04:a2:b0:39:93:22:54:31:9d:41:fa:48:54:d5:7c:<br />
a1:8d:eb:69:cc:9b:3e:4d:81:ae:39:9f:32:3e:81:<br />
16:43:99:ef:2a:95:14:67:3d:15:7c:ec:bf:b5:f0:<br />
bc:c7:89:08:53:ee:55:cf:3f:1a:20:66:f4:d5:13:<br />
9b:93:8b:31:0b<br />
ASN1 OID: prime256v1<br />
X509v3 extensions:<br />
1.3.6.1.4.1.41482.1.2: <br />
<br />
Signature Algorithm: sha256WithRSAEncryption<br />
bc:cc:1a:f9:0b:7b:95:78:18:d5:55:a4:33:71:6a:60:16:ac:<br />
ed:cb:31:32:c3:41:0f:36:61:64:10:6c:23:d9:2a:b0:6c:5d:<br />
1c:2c:b6:92:9a:d4:21:48:aa:2a:3a:f3:ae:53:89:3a:6a:a1:<br />
40:ca:e9:32:65:93:15:3d:92:aa:00:fd:15:87:4b:02:32:94:<br />
4c:ce:90:ef:11:98:ce:de:fe:a0:87:96:7c:6c:80:e6:b5:00:<br />
09:e4:1d:a7:9c:82:f2:56:97:3b:0c:0e:ed:6a:3d:dd:52:b6:<br />
73:34:c0:fc:bf:e6:d8:8c:a7:53:b1:92:7f:43:34:2c:b6:c7:<br />
b0:20:f9:28:14:e2:11:46:da:ad:6b:48:b0:90:41:62:5f:f7:<br />
30:47:5d:48:17:e5:12:19:c4:07:29:40:68:31:7e:b9:24:ff:<br />
67:63:a0:f3:43:75:c7:a6:53:83:dd:b1:d4:38:7b:02:8b:63:<br />
2a:05:95:3e:d5:f2:8e:ad:02:69:34:fd:30:f1:c0:50:a5:29:<br />
3f:86:c5:53:9b:b5:22:19:6f:c5:1a:bc:6b:20:a5:df:a4:67:<br />
c2:18:80:8a:0f:10:8c:7e:e5:8a:22:c8:6e:d0:78:cf:d2:91:<br />
21:a3:00:17:d4:bb:35:a6:27:b6:4a:82:b7:f9:51:21:62:d9:<br />
0e:15:12:ea<br />
-----BEGIN CERTIFICATE-----<br />
MIICHDCCAQagAwIBAgIEcljC6jALBgkqhkiG9w0BAQswLjEsMCoGA1UEAxMjWXVi<br />
aWNvIFUyRiBSb290IENBIFNlcmlhbCA0NTcyMDA2MzEwIBcNMTQwODAxMDAwMDAw<br />
WhgPMjA1MDA5MDQwMDAwMDBaMCsxKTAnBgNVBAMMIFl1YmljbyBVMkYgRUUgU2Vy<br />
aWFsIDE0ODAzMzIxNTc4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorA5kyJU<br />
MZ1B+khU1XyhjetpzJs+TYGuOZ8yPoEWQ5nvKpUUZz0VfOy/tfC8x4kIU+5Vzz8a<br />
IGb01RObk4sxC6MSMBAwDgYKKwYBBAGCxAoBAgQAMAsGCSqGSIb3DQEBCwOCAQEA<br />
vMwa+Qt7lXgY1VWkM3FqYBas7csxMsNBDzZhZBBsI9kqsGxdHCy2kprUIUiqKjrz<br />
rlOJOmqhQMrpMmWTFT2SqgD9FYdLAjKUTM6Q7xGYzt7+oIeWfGyA5rUACeQdp5yC<br />
8laXOwwO7Wo93VK2czTA/L/m2IynU7GSf0M0LLbHsCD5KBTiEUbarWtIsJBBYl/3<br />
MEddSBflEhnEBylAaDF+uST/Z2Og80N1x6ZTg92x1Dh7AotjKgWVPtXyjq0CaTT9<br />
MPHAUKUpP4bFU5u1IhlvxRq8ayCl36RnwhiAig8QjH7liiLIbtB4z9KRIaMAF9S7<br />
NaYntkqCt/lRIWLZDhUS6g==<br />
-----END CERTIFICATE-----<br />
</pre><br />
==FIDO U2F test (login)==<br />
<pre><br />
Login Data<br />
username: doegox<br />
password: demodemo<br />
<br />
Challenge Data<br />
version: U2F_V2<br />
challenge: JRrh04hHKIxAuLk7SXSRQPwqK4994NQR0EfWIzY4wgc<br />
keyHandle: Z_3LYt_Otuu6TjyvSA3MXxefj29kmel7o54Hn6rqiS1jUbf8LabB5cJRHiyKHEkOh9IMG9F2EwE9tFGXvjGJ-Q<br />
<br />
Response Data<br />
clientData: {"typ":"navigator.id.getAssertion","challenge":"JRrh04hHKIxAuLk7SXSRQPwqK4994NQR0EfWIzY4wgc","origin":"https://demo.yubico.com","cid_pubkey":""}<br />
signatureData: AQAAAAEwRAIgLrqKb81ePH9jcIGFDjyEWwc5p4jJV80IpxGY8lw4lfMCIFR36WIIpcXWYBpq6W9VVUud9pE19k09do8KKEpm1kij<br />
<br />
Authentication Parameters<br />
touch: true<br />
counter: 1<br />
</pre><br />
<br />
==Configuration==<br />
yubikey-personalization-gui<br />
or<br />
man ykpersonalize<br />
==Google==<br />
* Go to https://security.google.com/settings/security/securitykey/add<br />
* Press Register then touch the key<br />
==OpenPGP==<br />
For info, applet source [https://github.com/Yubico/ykneo-openpgp here]<br />
<br>Make user CCID mode is activated<br />
<br />
See [[GnuPG#Yubikey]]<br />
<br />
TODO<br />
* https://www.yubico.com/2012/12/yubikey-neo-openpgp/<br />
* https://www.2realities.com/blog/2014/11/04/yubikey-slash-openpgp-smartcards-for-newbies/<br />
* https://wiki.gnome.org/Projects/GnomeKeyring<br />
<br />
==Misc==<br />
* [https://www.yubico.com/start/ First time use]<br />
** [https://demo.yubico.com/start/otp/neonano First time use Neo Nano]<br />
* [https://www.yubico.com/applications/ Yubico applications]<br />
* [https://demo.yubico.com/php-yubico/Modhex_Calculator.php Modhex calculator]<br />
* [https://developers.yubico.com/ OpenSource]<br />
* http://uname.pingveno.net/blog/index.php/post/2013/08/06/Configure-2-factor-Yubikey-authentication-for-Debian-%3A-the-easiest-way<br />
<br />
==Other Debian packages==<br />
libauth-yubikey-decrypter-perl - yubikey token output decryptor<br />
libauth-yubikey-webclient-perl - Perl module to authenticate Yubikey against the Yubico Web API<br />
<br />
python-pyhsm - Python code for talking to a Yubico YubiHSM hardware<br />
yhsm-daemon - YubiHSM server daemon<br />
yhsm-tools - Common files for YubiHSM applications<br />
yhsm-validation-server - Validation server using YubiHSM<br />
yhsm-yubikey-ksm - Yubikey Key Storage Module using YubiHSM<br />
<br />
python-yubico - Python code for talking to Yubico YubiKeys<br />
python-yubico-tools - Tools for Yubico YubiKeys<br />
libykclient3 - Yubikey client library runtime<br />
libpam-yubico - two-factor password and YubiKey OTP PAM module<br />
<br />
yubikey-ksm - Key Storage Module for YubiKey One-Time Password (OTP) tokens<br />
yubikey-server-c - Yubikey validation server<br />
yubikey-val - One-Time Password (OTP) validation server for YubiKey tokens<br />
yubiserver - Yubikey OTP and HOTP/OATH Validation Server<br />
libapache2-mod-authn-yubikey - Yubikey authentication provider for Apache<br />
<br />
libu2f-server0 - Universal 2nd Factor (U2F) server communication C Library<br />
u2f-server - Command line tool to do Universal 2nd Factor (U2F) operations<br />
=YubiKey 4C Nano=<br />
Beware from this version on, Yubico replaced all open source components by closed-source ones: https://github.com/Yubico/ykneo-openpgp/issues/2#issuecomment-218446368<br />
<br />
See also https://wiki.debian.org/Smartcards/YubiKey4<br />
==First time plugged==<br />
new full-speed USB device number 2 using xhci_hcd<br />
New USB device found, idVendor=1050, idProduct=0407<br />
New USB device strings: Mfr=1, Product=2, SerialNumber=0<br />
Product: Yubikey 4 OTP+U2F+CCID<br />
Manufacturer: Yubico<br />
input: Yubico Yubikey 4 OTP+U2F+CCID as /devices/pci0000:00/0000:00:1d.6/0000:06:00.0/0000:07:02.0/0000:3e:00.0/usb3/3-1/3-1:1.0/0003:1050:0407.0004/input/input26<br />
hid-generic 0003:1050:0407.0004: input,hidraw2: USB HID v1.10 Keyboard [Yubico Yubikey 4 OTP+U2F+CCID] on usb-0000:3e:00.0-1/input0<br />
hid-generic 0003:1050:0407.0005: hiddev2,hidraw3: USB HID v1.10 Device [Yubico Yubikey 4 OTP+U2F+CCID] on usb-0000:3e:00.0-1/input1<br />
<br />
==OTP test==<br />
Parameters<br />
tab=one-factor<br />
mode=one-factor<br />
key=cccccchkrlrljuhribikcfginlbvhunchknuelfunnlu<br />
identity=cccccchkrlrl<br />
serial=6933194<br />
<br />
Authentication Output<br />
h=Z1jquAXFhhPvZJL2AvbAnhFqVOw=<br />
t=2017-12-07T13:52:56Z0602<br />
otp=cccccchkrlrljuhribikcfginlbvhunchknuelfunnlu<br />
nonce=9cdcd3a9cb255714b6bfb7250542010f<br />
sl=25<br />
status=OK<br />
<br />
==Install==<br />
pcsc_scan results:<br />
<pre><br />
Reader 2: Yubico Yubikey 4 OTP+U2F+CCID 02 00<br />
Card state: Card inserted, <br />
ATR: 3B F8 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 34 D4<br />
<br />
ATR: 3B F8 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 34 D4<br />
+ TS = 3B --> Direct Convention<br />
+ T0 = F8, Y(1): 1111, K: 8 (historical bytes)<br />
TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU<br />
43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s<br />
TB(1) = 00 --> VPP is not electrically connected<br />
TC(1) = 00 --> Extra guard time: 0<br />
TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 <br />
-----<br />
TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 <br />
-----<br />
TA(3) = FE --> IFSC: 254<br />
TB(3) = 15 --> Block Waiting Integer: 1 - Character Waiting Integer: 5<br />
+ Historical bytes: 59 75 62 69 6B 65 79 34<br />
Category indicator byte: 59 (proprietary format)<br />
+ TCK = D4 (correct checksum)<br />
<br />
Possibly identified card (using /home/phil/.cache/smartcard_list.txt):<br />
3B F8 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 34 D4<br />
Yubico Yubikey 4 OTP+CCID<br />
</pre><br />
<br />
<pre><br />
# apt-get install yubikey-personalization yubikey-personalization-gui yubikey-neo-manager yubico-piv-tool<br />
<br />
$ ykinfo -a<br />
serial: 6933194<br />
serial_hex: 69caca<br />
serial_modhex: hkrlrl<br />
version: 4.3.7<br />
touch_level: 1029<br />
programming_sequence: 1<br />
slot1_status: 1<br />
slot2_status: 0<br />
vendor_id: 1050<br />
product_id: 407<br />
<br />
$ ykinfo -c<br />
capabilities: 0c0101ff02040069caca03013f<br />
<br />
$ yubikey-personalization-gui &<br />
<br />
$ neoman &<br />
</pre><br />
<br />
Connection mode:<br />
* OTP+U2F+CCID<br />
<br />
Now we see available applets<br />
* YubiKey OTP<br />
* YubiOATH<br />
* Yubico U2F<br />
* OpenPGP<br />
* Yubico PIV<br />
<br />
==Disabling HID==<br />
<br />
<source lang=bash><br />
$ ykpersonalize -m5<br />
Firmware version 4.3.7 Touch level 1029 Program sequence 1<br />
The USB mode will be set to: 0x5<br />
Commit? (y/n) [n]: y<br />
WARNING: Changing mode will require you to use another tool (ykneomgr or u2f-host) to switch back if OTP mode is disabled, really commit? (y/n) [n]: y<br />
<br />
# Re-plug<br />
<br />
$ ykpersonalize <br />
Yubikey core error: no yubikey present<br />
<br />
$ ykneomgr -m<br />
05<br />
</source><br />
<br />
==A new key==<br />
<br />
This is a weird usage :)<br />
<br />
The "`/~" key of my keyboard got broken (along with F1 and F2 but I can live without them).<br />
<br />
So I'm using the static password feature to get back that dead deadkey...<br />
<br />
<source lang=bash><br />
# Re-enable HID (and disable U2F):<br />
$ ykneomgr -M 2<br />
<br />
# Configure with the GUI<br />
$ yubikey-personalization-gui<br />
## Settings / "Enter" (to disable automatic carriage-return, it must be unselected)<br />
## Settings / "Use fast triggering" (as I don't use slot2, it becomes more responsive and skip the 0.3s delay)<br />
## Static Password / Scan code / Configuration Slot 1 / Keyboard: US layout / Password: "`" (scancode=35) / Write configuration<br />
</source><br />
<br />
Now the key works as expected (it's a deadkey in the US intl mode) and works with modifiers such as "Shift" \o/<br />
<br />
==Thunderbird Exclusive Mode==<br />
<br />
Thunderbird requires connecting to the YubiKey in Exclusive Mode but if e.g. the Brave browser was started before, it has already opened the connection in Shared Mode.<br />
One can add to the script to launch the browser:<br />
<pre><br />
( sleep 3; pcsc_scan -n -c |grep -i -A3 "YubiKey"|grep -i -q "Shared Mode" && sudo service pcscd restart ) &<br />
</pre></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=GnuPG&diff=10546GnuPG2022-12-13T20:00:31Z<p>PhilippeTeuwen: /* Extending expiration time */</p>
<hr />
<div>Those are personal notes when I decided in 2016 to generate a new key as transition from my previous one (from 2002!).<br />
<br>Daily subkeys are stored on a Yubikey NEO-n and master key is stored offline.<br />
<br />
==Resources==<br />
The steps I followed and which I describe only very briefly here, more to remind how I combined them, came from those excellent resources:<br />
* https://help.riseup.net/en/security/message-security/openpgp/best-practices<br />
* http://ekaia.org/blog/2009/05/10/creating-new-gpgkey/<br />
* https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/<br />
<br />
==gpg.conf==<br />
First step was to refresh a little bit my gpg.conf.<br />
<br>See https://github.com/ioerror/duraconf/raw/master/configs/gnupg/gpg.conf for commented gpg.conf and https://help.riseup.net/en/security/message-security/openpgp/best-practices for the reasons behind.<br />
<pre><br />
no-emit-version<br />
no-comments<br />
keyid-format 0xlong<br />
with-fingerprint<br />
list-options show-uid-validity<br />
verify-options show-uid-validity<br />
use-agent<br />
keyserver hkps://hkps.pool.sks-keyservers.net<br />
keyserver-options ca-cert-file=/home/phil/.gnupg/keyservers/sks-keyservers.netCA.pem<br />
keyserver-options no-try-dns-srv<br />
keyserver-options no-honor-keyserver-url<br />
keyserver-options include-revoked<br />
personal-cipher-preferences AES256 AES192 AES CAST5<br />
personal-digest-preferences SHA512 SHA384 SHA256 SHA224<br />
cert-digest-algo SHA512<br />
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed<br />
</pre><br />
Some more of my own:<br />
<pre><br />
no-greeting<br />
keyserver-options auto-key-retrieve honor-http-proxy<br />
list-options show-policy-urls show-notations show-keyserver-urls show-uid-validity show-unusable-uids show-unusable-subkeys show-sig-expire<br />
verify-options show-photos show-policy-urls show-notations show-keyserver-urls show-uid-validity show-unusable-uids<br />
utf8-strings<br />
ask-cert-level<br />
</pre><br />
==Offline storage==<br />
Digressing a little bit...<br />
<br />
I chose an old SDCard to store the master key offline, but it required a little bit of maintenance because it wasn't mounting automatically:<br />
<br />
Making sude partition table was ok:<br />
$ sudo fdisk /dev/mmcblk0<br />
Checking FS signatures:<br />
$ sudo wipefs /dev/mmcblk0p1<br />
There was still a mix of FAT and ext2 signatures, so deleting the ext2 signature based on the returned offset:<br />
$ sudo wipefs -o 0x438 /dev/mmcblk0p1<br />
Formatting<br />
$ sudo mkfs.vfat /dev/mmcblk0p1<br />
$ sudo fatlabel /dev/mmcblk0p1 GNUPG<br />
Reinserting it to get it mounted automatically, then<br />
$ cp ~/.gnupg/gpg.conf /media/phil/GNUPG<br />
$ sudo mount --bind /media/phil/GNUPG ~/.gnupg <br />
==Entropy==<br />
Creating large keys require large entropy.<br />
<br>I like haveged for that:<br />
$ sudo apt-get install haveged<br />
==Creating main key==<br />
Idea following https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/ is to keep the main key completely offline so if yubikey is lost, there is still some hope.<br />
$ gpg --expert --gen-key<br />
Please select what kind of key you want:<br />
(8) RSA (set your own capabilities)<br />
Your selection? 8<br />
Current allowed actions: Sign Certify Encrypt <br />
Your selection? s<br />
Your selection? e<br />
Current allowed actions: Certify <br />
Your selection? q<br />
What keysize do you want? (2048) 4096<br />
Requested keysize is 4096 bits<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Real name: Philippe Teuwen<br />
Email address: phil@teuwen.org<br />
Comment: <br />
You selected this USER-ID:<br />
"Philippe Teuwen <phil@teuwen.org>"<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o<br />
gpg: key 0x9B554C36544C89BC marked as ultimately trusted<br />
public and secret key created and signed.<br />
==Creating revokation certificate==<br />
$ gpg --gen-revoke 9B554C36544C89BC > /media/phil/GNUPG/rev-phil_teuwen.org_2016<br />
sec 4096R/0x9B554C36544C89BC 2016-02-04 Philippe Teuwen <phil@teuwen.org><br />
Create a revocation certificate for this key? (y/N) y<br />
Please select the reason for the revocation:<br />
3 = Key is no longer used<br />
Your decision? 3<br />
Enter an optional description; end it with an empty line:<br />
>Using revocation certificate that was generated when key was created.<br />
>It is very likely that I have lost access to the private key.<br />
> <br />
Reason for revocation: Key is no longer used<br />
Using revocation certificate that was generated when key was created. It is very likely that I have lost access to the private key.<br />
Is this okay? (y/N) y<br />
Then printing it on paper<br />
==Creating Encryption subkey==<br />
Idea following https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/ is to create the encryption key out of yubikey and importing it so it can be imported on several yubikey's.<br />
<br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addkey<br />
Please select what kind of key you want:<br />
(6) RSA (encrypt only)<br />
Your selection? 6<br />
What keysize do you want? (2048) 2048<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
gpg> save<br />
==Backup the secret key==<br />
<br />
The "keytocard / save" operations that we will do later will also remove the secret key from your keyring, so better to backup it first!<br />
<br />
$ gpg --export-secret-key 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
$ gpg --delete-secret-key 9B554C36544C89BC<br />
$ gpg --import < /media/phil/GNUPG/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
<br />
==Yubikey== <br />
$ sudo apt-get install yubikey-personalization ykneomgr<br />
$ wget https://raw.githubusercontent.com/Yubico/yubikey-personalization/master/69-yubikey.rules <br />
$ wget https://raw.githubusercontent.com/Yubico/yubikey-personalization/master/70-yubikey.rules <br />
$ sudo mv *rules /etc/udev/rules.d/<br />
$ sudo chown root.root /etc/udev/rules.d/*yubikey.rules<br />
Insert yubikey NEO-n<br />
$ ykinfo -a<br />
On a Yubikey where HID has been deactivated, ykinfo will fail, use ykneomgr instead.<br />
<br>If ykneomgr fails, it may be because you used it for gpg via scdaemon.<br />
<br>Even with "card-timeout 1" in .gnupg/scdaemon.conf I experienced problems once I read some encrypted emails, I have to restart pcscd to free the Yubikey and be able to use ykneomgr.<br />
<br />
To keep possibility to use all modes simultaneously:<br />
$ ykpersonalize -m86<br />
Firmware version 3.3.0 Touch level 1285 Program sequence 1<br />
The USB mode will be set to: 0x86<br />
Commit? (y/n) [n]: y<br />
If ykpersonalize doesn't work (no HID), see ykneomgr<br />
<br />
I wanted to disable HID (as I don't use it but still touch accidentally the key now and then).<br />
<br>But switching to mode 5 (U2F+CCID) didn't disable HID so to get it working I had to switch to mode 1 (CCID) then 5 (U2F+CCID):<br />
ykneomgr -M1<br />
ykneomgr -M5<br />
<br />
==Creating Signature and Authentication subkeys==<br />
Yes default admin PIN is 12345678 and default user PIN is 123456.<br />
<br>We'll change them later.<br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(1) Signature key<br />
Your selection? 1<br />
Enter Admin PIN: 12345678<br />
Enter PIN: 123456<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(3) Authentication key<br />
Your selection? 3<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03 usage: A <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
==Ready to import Encryption subkey?==<br />
At this point we should import the encryption key to the yubikey but I got some error:<br />
gpg: error writing key to card: not supported<br />
Some say to use [https://github.com/Yubico/ykneo-openpgp/tree/master/util keyParser.py] but I found out gpg2 works. Gpg could work directly with the card (except for the keytocard obviously) but Gpg2 needs sdaemon for that: <br />
$ sudo apt-get install gnupg2 scdaemon<br />
Yet another quirk: gnupg gave some warnings about locking from FAT but gnupg2 just refuses using FAT, so I add to the gpg.conf of the SD-Card:<br />
# allow linux to write to FAT disks<br />
lock-never<br />
<br />
While this was working fine earlier, at some point I experiended:<br />
$ gpg2 --card-status<br />
gpg: OpenPGP card not available: Not supported<br />
<br />
The fix was to forbid scdaemon to use the CCID driver but to use PCSC instead. Edit .gnupg/scdaemon.conf:<br />
card-timeout 1<br />
disable-ccid<br />
<br />
The "card-timeout" is supposed to free the card when not in use, still I've typically to restart pcscd if scdaemon keeps locking it.<br />
<br />
==Encryption key to Yubikey==<br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
gpg> toggle<br />
gpg> key 1<br />
sec 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03<br />
ssb* 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: never <br />
ssb 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: never <br />
card-no: 0006 03037217<br />
ssb 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: never <br />
card-no: 0006 03037217<br />
(1) Philippe Teuwen <phil@teuwen.org><br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg> save<br />
==Adding UID and photo==<br />
Choose a 240x288 picture strongly compressed (I chose jpeg quality 20) to obtain a size < 5kb. <br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
gpg> adduid<br />
Real name: Philippe Teuwen<br />
Email address: pteuwen@quarkslab.com<br />
Comment: <br />
You selected this USER-ID:<br />
"Philippe Teuwen <pteuwen@quarkslab.com>"<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o<br />
<br />
gpg> addphoto<br />
Enter JPEG filename for photo ID: ~/phil20.jpg<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03 usage: A <br />
[ultimate] (1) Philippe Teuwen <phil@teuwen.org><br />
[ unknown] (2). Philippe Teuwen <pteuwen@quarkslab.com><br />
[ unknown] (3) [jpeg image of size 4266]<br />
<br />
gpg> uid 1<br />
gpg> primary<br />
gpg> save<br />
==Almost there==<br />
Exporting key<br />
$ gpg --armor --export 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC.asc<br />
And pushing it to http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
Back to the daily .gnupg<br />
$ sudo umount ~/.gnupg<br />
Changing default PINs<br />
$ gpg --card-edit<br />
gpg/card> admin<br />
Admin commands are allowed<br />
gpg/card> passwd<br />
gpg: OpenPGP card no. D2760001240102000006030372170000 detected<br />
1 - change PIN<br />
Your selection? 1<br />
Please enter the PIN<br />
123456<br />
New PIN<br />
... <br />
New PIN<br />
...<br />
PIN changed. <br />
<br />
3 - change Admin PIN<br />
Your selection? 3<br />
gpg: 3 Admin PIN attempts remaining before card is permanently locked<br />
Please enter the Admin PIN<br />
12345678 <br />
New Admin PIN<br />
... <br />
New Admin PIN<br />
...<br />
PIN changed. <br />
<br />
Q - quit<br />
Your selection? q<br />
<br />
gpg/card> forcesig<br />
gpg/card> url<br />
URL to retrieve public key: http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
gpg/card> fetch<br />
gpg: requesting key 0xAEBAADBEE208E2DD from http server www.yobi.be<br />
<br />
gpg/card> quit<br />
<br />
$ gpg --card-status<br />
Application ID ...: D2760001240102000006030372170000<br />
Version ..........: 2.0<br />
Manufacturer .....: unknown<br />
Serial number ....: xxxxxxxxx<br />
Name of cardholder: [not set]<br />
Language prefs ...: [not set]<br />
Sex ..............: unspecified<br />
URL of public key : http://www.yobi.be/files/9B554C36544C89BC.asc<br />
Login data .......: [not set]<br />
Signature PIN ....: not forced<br />
Key attributes ...: 2048R 2048R 2048R<br />
Max. PIN lengths .: 127 127 127<br />
PIN retry counter : 3 3 3<br />
Signature counter : 2<br />
Signature key ....: 67E1 AAA2 46D7 9037 7671 BAD5 AEBA ADBE E208 E2DD<br />
created ....: 2016-02-04 10:56:03<br />
Encryption key....: 55A5 1FF1 F45A A846 EC12 A5D4 47B6 8B62 B62C 8F88<br />
created ....: 2016-02-04 10:26:52<br />
Authentication key: 93FE E3BA 0F4D 4461 19E8 1CBE E515 1B7F DCA9 5A14<br />
created ....: 2016-02-04 10:57:35<br />
General key info..: <br />
pub 2048R/0xAEBAADBEE208E2DD 2016-02-04 Philippe Teuwen <phil@teuwen.org><br />
sec# 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03<br />
ssb> 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
ssb> 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
ssb> 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
Changing default key in gpg.conf<br />
default-key 0xF14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
==Last check==<br />
$ sudo apt-get install hopenpgp-tools<br />
$ hkt export-pubkeys 'AEBAADBEE208E2DD' | hokey lint<br />
All green \o/<br />
==Using Yubikey on another machine==<br />
$ gpg --card-edit<br />
gpg/card> fetch<br />
<br />
==Signing new key with the old one==<br />
$ gpg --default-key 9ad7e3db --sign-key 9B554C36544C89BC<br />
Really sign all user IDs? (y/N) y<br />
(3) I have done very careful checking.<br />
Your selection? (enter `?' for more information): 3<br />
Really sign? (y/N) y<br />
<br />
$ gpg --send-key 9B554C36544C89BC<br />
<br />
As it's a pool I sent it 10x, rather than waiting them to all sync...<br />
<br />
And also for those still using pgp.mit.edu:<br />
$ gpg --keyserver pgp.mit.edu --send-key 9B554C36544C89BC<br />
==Transition==<br />
Now let's ask some helpful souls who signed my old key.<br />
<br />
Stealing and adapting key transition text from https://we.riseup.net/assets/176898/key%20transition<br />
<br />
Mass mailing to those who've signed the old one:<br />
$ gpg --list-sigs 9ad7e3db|grep ^sig|sed 's/.*<//;s/>.*//;/^sig/d'|sort|uniq|tr '\n' ','<br />
<br />
<pre><br />
Date: 2016-02-04<br />
<br />
For a number of reasons[0], I've recently set up a new OpenPGP key,<br />
and will be transitioning away from my old one.<br />
<br />
The old key will continue to be valid for some time, but I prefer all<br />
future correspondence to come to the new one. I would also like this<br />
new key to be re-integrated into the web of trust. This message is<br />
signed by both keys to certify the transition.<br />
<br />
The old key was:<br />
<br />
pub 1024D/0x7A135F579AD7E3DB 2002-05-05 [expires: 2017-08-13]<br />
sub 2048g/0x78FC60279A4A59B9 2002-05-05 [expires: 2017-08-13]<br />
sub 4096R/0xF2FD1762608F63B7 2007-08-16 [expires: 2017-08-13]<br />
fingerprint = 440A 3A9E 56E9 D90E 99D7 63A8 7A13 5F57 9AD7 E3DB<br />
<br />
And the new key is:<br />
pub 4096R/0x9B554C36544C89BC 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0x47B68B62B62C8F88 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0xAEBAADBEE208E2DD 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0xE5151B7FDCA95A14 2016-02-04 [expires: 2018-02-03]<br />
fingerprint = F148 8337 9E8D D09F 0328 0E1B 9B55 4C36 544C 89BC<br />
<br />
To fetch the full key from a public key server, you can simply do:<br />
<br />
gpg --keyserver pool.sks-keyservers.net --recv-key F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you already know my old key, you can now verify that the new key is<br />
signed by the old one:<br />
<br />
gpg --check-sigs F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you don't already know my old key, or you just want to be double<br />
extra paranoid, you can check the fingerprint against the one above:<br />
<br />
gpg --fingerprint F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you are satisfied that you've got the right key, and the UIDs match<br />
what you expect, I'd appreciate it if you would sign my key. You can<br />
do that by issuing the following command:<br />
<br />
**<br />
NOTE: if you have previously signed my key but did a local-only<br />
signature (lsign), you will not want to issue the following, instead<br />
you will want to use --lsign-key, and not send the signatures to the<br />
keyserver<br />
**<br />
<br />
gpg --sign-key F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
I'd like to receive your signatures on my key. You can either send me<br />
an e-mail with the new signatures (if you have a functional MTA on<br />
your system):<br />
<br />
gpg --export F14883379E8DD09F03280E1B9B554C36544C89BC | \<br />
gpg --encrypt -r F14883379E8DD09F03280E1B9B554C36544C89BC --armor | \<br />
mail -s 'OpenPGP Signatures' phil@teuwen.org<br />
<br />
Additionally, I highly recommend that you implement a mechanism to<br />
keep your key material up-to-date so that you obtain the latest<br />
revocations, and other updates in a timely manner. You can do regular<br />
key updates by using parcimonie[1] to refresh your keyring. Parcimonie<br />
is a daemon that slowly refreshes your keyring from a keyserver over<br />
Tor. It uses a randomized sleep, and fresh tor circuits for each key.<br />
The purpose is to make it hard for an attacker to correlate the key<br />
updates with your keyring.<br />
<br />
I also highly recommend checking out the excellent Riseup GPG best<br />
practices doc, from which I stole most of the text for this transition<br />
message ;-)<br />
<br />
https://we.riseup.net/debian/openpgp-best-practices<br />
<br />
Please let me know if you have any questions, or problems, and sorry<br />
for the inconvenience.<br />
<br />
If you're curious, I've briefly documented all the steps using a Yubikey on my wiki [2].<br />
<br />
Philippe Teuwen<br />
<br />
0. https://www.debian-administration.org/users/dkg/weblog/48<br />
1. https://gaffer.ptitcanardnoir.org/intrigeri/code/parcimonie/<br />
2. http://wiki.yobi.be/wiki/GnuPG<br />
</pre><br />
<br />
In an email signed with my old key...<br />
==Signing keys==<br />
To sign keys it requires the SD-Card.<br />
<br />
To enable it:<br />
cp -a ~/.gnupg/pubring.gpg /media/phil/GNUPG/<br />
cp -a ~/.gnupg/trustdb.gpg /media/phil/GNUPG/<br />
sudo mount --bind /media/phil/GNUPG ~/.gnupg<br />
To disable it:<br />
sudo umount ~/.gnupg<br />
cp -a /media/phil/GNUPG/pubring.gpg ~/.gnupg/<br />
cp -a /media/phil/GNUPG/trustdb.gpg ~/.gnupg/<br />
<br />
==Extending expiration time==<br />
<pre><br />
sudo service pcscd stop<br />
cp -a ~/.gnupg/pubring.gpg /media/phil/GNUPG/<br />
cp -a ~/.gnupg/trustdb.gpg /media/phil/GNUPG/<br />
sudo mount --bind /media/phil/GNUPG ~/.gnupg<br />
gpg --edit-key 9B554C36544C89BC<br />
expire<br />
3y<br />
key 47B68B62B62C8F88<br />
key C68777A356ACFA91<br />
key C83BE1071CDE1015<br />
expire<br />
3y<br />
save<br />
sudo umount ~/.gnupg<br />
cp -a /media/phil/GNUPG/pubring.gpg ~/.gnupg/<br />
cp -a /media/phil/GNUPG/trustdb.gpg ~/.gnupg/<br />
gpg --armor --export 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC.asc<br />
umount /media/phil/GNUPG<br />
sudo service pcscd start<br />
gpg --keyserver keys.gnupg.net --send-key 9B554C36544C89BC<br />
gpg --armor --export 9B554C36544C89BC > /tmp/9B554C36544C89BC.asc<br />
</pre><br />
<br />
And pushing it to http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
==OpenSSH==<br />
Using the OpenPGP key and the Yubikey for OpenSSH<br />
$ sudo apt-get install monkeysphere<br />
<br />
We need to specifying the authentication subkey here!<br />
$ gpgkey2ssh E5151B7FDCA95A14<br />
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeNXjx+2M1F7CuYRMkoHv6iUnXe93JatAjhmh1ciXIrTk/Agc4JEgb9uTxYA3pNe/qXVSrSdAqJu0cUENj30rLvKOliL0MH1TxGDnZ0JSxv0UA/skwapRwiTKgsHHng7gbq1/07eBl0luywLT1E/4sbeZ6cAK9e8JAO9GahiyYnrzt2nXzoVxGYl2AHkHFuCqHEMH/KQuQ8Tba+ZjqpRbjnreuI9tJQ8eWpMjLr2AYuWgAU5GtbWFHJi0WJI/2kYybT7co7Kldoxg8PRvBE/QQPdP811jc06pf4CVgfCGvCWZaslqG5pLy8LneqYciuQuXDCQMlAWniThTPjf5VLhx COMMENT<br />
<br />
<br />
== Paper backup of the secret keys ==<br />
If you don't trust SD-Card longevity...<br />
apt-get install paperkey<br />
gpg --export-secret-key key_id | paperkey<br />
==OpenPGP cards==<br />
See https://en.wikipedia.org/wiki/OpenPGP_card for existing cards.<br />
<br />
==OpenPGP card 3.x JavaCard Applets==<br />
* [https://github.com/ANSSI-FR/SmartPGP SmartPGP], an implementation of the OpenPGP card 3.x specification in JavaCard (>=3.0.4) by ANSSI, including elliptic curves and RSA-4096<br />
<br />
<source lang=bash><br />
sudo apt-get install ant<br />
git clone git@github.com:martinpaljak/oracle_javacard_sdks.git<br />
git clone git@github.com:ANSSI-FR/SmartPGP.git<br />
cd SmartPGP<br />
echo JAVACARD_HOME=$(pwd)/../oracle_javacard_sdks/jc304_kit > javacard.properties<br />
ant<br />
# => ./build/fr/anssi/smartpgp/javacard/smartpgp.cap<br />
</source><br />
<br />
This requires a JavaCard 3.0.4 compliant card but it might be used with JavaCard 3.0.1 cards without the ECC parts, see [https://github.com/ANSSI-FR/SmartPGP/issues/1 this issue] and the [https://github.com/ANSSI-FR/SmartPGP/tree/javacard-3.0.1 javacard-3.0.1] branch.<br />
<br />
==OpenPGP card 2.x JavaCard Applets==<br />
See also https://subgraph.com/sgos/documentation/smartcards/index.fr.html<br />
<br />
* [https://github.com/jderuiter/javacard-openpgpcard Joeri de Ruiter's implementation]<br />
* [https://github.com/Yubico/ykneo-openpgp Yubikey NEO implementation]<br />
** [https://www.yubico.com/support/knowledge-base/categories/articles/reset-applet-yubikey/ Resetting the OpenPGP Applet]<br />
* [https://github.com/FluffyKaon/OpenPGP-Card FluffyKaon implementation]<br />
<br />
Yubikey and FluffyKaon implementations can be easily compiled from https://github.com/martinpaljak/AppletPlayground:<br />
<br />
<source lang=bash><br />
git clone https://github.com/martinpaljak/AppletPlayground.git<br />
cd AppletPlayground<br />
ant<br />
</source><br />
<br />
The author has also a [https://github.com/martinpaljak/GlobalPlatformPro GlobalPlatform tool] to inject the CAP into the card.<br />
<br>To compile it you need openjdk-7-jdk which at the moment seems hard to get on my Debian (old dependencies problem), so I'll stick to openjdk-8 and fetch a pre-built version [https://github.com/martinpaljak/GlobalPlatformPro/releases here].<br />
<br>Usage:<br />
<source lang=bash><br />
java -jar gp.jar --help<br />
</source><br />
<br />
Or using JCOP's jcshell:<br />
<pre><br />
/card<br />
auth<br />
upload OpenPGPApplet.cap<br />
install D27600012401 D2760001240102000000000000010000<br />
ctrl^d<br />
</pre><br />
<br />
Testing the newly created OpenPGP card:<br />
<source lang=bash><br />
gpg --card-status<br />
</source><br />
<br />
==Adding an OpenPGP card==<br />
<br />
How to add a card (YubiKey or JavaCard) to an existing key, using our backup SDCard.<br />
<br />
First check that the card is accessible:<br />
<br />
<pre><br />
$ gpg --card-status<br />
Reader ...........: Yubico Yubikey 4 OTP U2F CCID 00 00<br />
Application ID ...: D2760001240102010006069331940000<br />
Version ..........: 2.1<br />
Manufacturer .....: Yubico<br />
Serial number ....: 06933194<br />
Name of cardholder: [not set]<br />
Language prefs ...: [not set]<br />
Sex ..............: unspecified<br />
URL of public key : [not set]<br />
Login data .......: [not set]<br />
Signature PIN ....: not forced<br />
Key attributes ...: rsa2048 rsa2048 rsa2048<br />
Max. PIN lengths .: 127 127 127<br />
PIN retry counter : 3 0 3<br />
Signature counter : 0<br />
Signature key ....: [none]<br />
Encryption key....: [none]<br />
Authentication key: [none]<br />
General key info..: [none]<br />
</pre><br />
<br />
You may have problems getting it detected, especially if another card was used before. Reboot.<br />
<br />
Map the SDCard:<br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
# mount --bind /media/phil/GNUPG ~/.gnupg <br />
</source><br />
Import again the keys (mainly the encryption key) moved to previous cards:<br />
<source lang=bash><br />
$ gpg --import < ~/.gnupg/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
</source><br />
<br />
Create new sub-keys:<br />
<source lang=bash><br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(1) Signature key<br />
# remember default PIN is 123456, default admin PIN is 12345678<br />
What keysize do you want for the Signature key? (2048) 4096<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
# wait for key to be generated and provide PINs if requested<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(3) Authentication key<br />
What keysize do you want for the Authentication key? (2048) 4096<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
gpg> save<br />
</source><br />
<br />
Btw the notation "sec#" or "ssb#" means the key or subkey is not accessible (it's on another keyring or card).<br />
<br>The notation "sec>" or "ssb>" means the card or subcard is stored on a card known to the system.<br />
<br>The same convention is used with gpg --list-secret-keys<br />
<br />
Now we can try to transfer the encryption key but it will probably fail because it's still associated with the previous card:<br />
<source lang=bash><br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
card-no: 0000 00000001 <= still previous card<br />
gpg> toggle<br />
gpg> key 1<br />
ssb* rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
card-no: 0000 00000001 <= still previous card<br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg: KEYTOCARD failed: Unusable secret key<br />
</source><br />
<br />
The only solution I found was to clean the secret keyring, import again and sync card again:<br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
$ mv .gnupg/private-keys-v1.d/ .gnupg/private-keys-v1.d.old<br />
$ gpg --import < ~/.gnupg/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
$ gpg --card-status<br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
Secret key is available.<br />
sec rsa4096/0x9B554C36544C89BC<br />
created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub rsa2048/0xAEBAADBEE208E2DD<br />
created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub rsa2048/0xE5151B7FDCA95A14<br />
created: 2016-02-04 expires: 2018-02-03 usage: A <br />
sub rsa2048/0xF7B61B5663205C74<br />
created: 2017-12-02 expires: 2019-12-02 usage: S <br />
sub rsa2048/0xBDBF13DADE186465<br />
created: 2017-12-02 expires: 2019-12-02 usage: A <br />
ssb rsa4096/0xC68777A356ACFA91<br />
created: 2017-12-07 expires: 2019-12-07 usage: S <br />
card-no: 0006 06933194<br />
ssb rsa4096/0xC83BE1071CDE1015<br />
created: 2017-12-07 expires: 2019-12-07 usage: A <br />
card-no: 0006 06933194<br />
</source><br />
We see the encryption is not bound to a card anymore and the two new subkeys are bound to our card. So we can try again:<br />
<br />
<source lang=bash><br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
gpg> toggle<br />
gpg> key 1<br />
ssb* rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg> save<br />
</source><br />
<br />
Export the public key and unmount the SDCard:<br />
<source lang=bash><br />
$ gpg --armor --export 9B554C36544C89BC > ~/.gnupg/9B554C36544C89BC_v3.asc<br />
</source><br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
$ sudo umount ~/.gnupg<br />
$ gpg --import < /media/phil/GNUPG/9B554C36544C89BC_v3.asc<br />
$ gpg --card-status<br />
$ gpg --edit-key 9B554C36544C89BC<br />
</source><br />
The encryption key is probably still linked to the previous card.<br />
<br>Again, I didn't see a clean way to do it.<br />
<br>Backup your secret keyring before messing up with it, then, try to find the file corresponding to the encryption key.<br />
It's a file smaller than the others, containing a string "shadowed-private-key". Compare it with the other gnupg secret keyring: /media/phil/GNUPG/private-keys-v1.d/ and replace it with the new copy (or just delete it, it should be synced again from the card).<br />
<br />
<source lang=bash><br />
cp /media/phil/GNUPG/private-keys-v1.d/AFE2DF0A021D08C752DE0ED0A8D020E8E57F4296.key ~/.gnupg/private-keys-v1.d <br />
</source><br />
<br />
Now edit the key again, the encryption subkey should be associated with the new card.<br />
<br />
Edit the card for the final adjustments:<br />
<br />
<pre><br />
$ gpg --card-edit<br />
gpg/card> admin<br />
gpg/card> passwd<br />
1 - change PIN<br />
Your selection? 1<br />
PIN changed.<br />
3 - change Admin PIN<br />
Your selection? 3<br />
PIN changed.<br />
Your selection? q<br />
gpg/card> forcesig<br />
gpg/card> name<br />
Cardholder's surname: Teuwen<br />
Cardholder's given name: Philippe<br />
gpg/card> url<br />
URL to retrieve public key: http://www.yobi.be/files/9B554C36544C89BC.asc<br />
gpg/card> fetch<br />
gpg: requesting key from 'http://www.yobi.be/files/9B554C36544C89BC.asc'<br />
gpg/card> quit<br />
</pre><br />
<br />
<br />
Push the updated key to various keyservers.<br />
<source lang=bash><br />
gpg --keyserver hkps.pool.sks-keyservers.net --send-key 9B554C36544C89BC<br />
</source><br />
<br />
==[[GnuPG signing parties]]==<br />
<br />
==[[Short GnuPG reference card]]==<br />
<br />
==[[GnuPG old notes]]==</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=User:PhilippeTeuwen&diff=10545User:PhilippeTeuwen2022-11-07T01:35:50Z<p>PhilippeTeuwen: /* Social */</p>
<hr />
<div><br />
== ID ==<br />
[[Image:Phil-contact.png|my contacts are in an image to avoid spam, sorry for the inconvenience]]<br />
* [https://keybase.io/doegox doegox on keybase.io]<br />
** [https://doegox.keybase.pub/ other assertions]<br />
<br />
== Social ==<br />
<br />
* [https://twitter.com/doegox @doegox on Twitter]<br />
* [https://infosec.exchange/@doegox @doegox@infosec.exchange on Mastodon((me))]<br />
* [http://www.linkedin.com/in/philippeteuwen LinkedIn]<br />
<br />
== Publications ==<br />
<br />
* [https://github.com/doegox/bibliography Bibliography]<br />
* [https://scholar.google.be/citations?user=Ra_sBhgAAAAJ&hl=en Google Scholar]<br />
* [https://www.researchgate.net/profile/Philippe_Teuwen ResearchGate]<br />
* [https://speakerdeck.com/doegox SpeakerDeck]<br />
<br />
<!-- [http://wwwp.oakland.edu/enp/ Erdős Number]: 3 thanks to a paper without a single math formula ;)<br />
<br>(e.g. Philippe Teuwen [http://dx.doi.org/10.1007/978-3-662-53140-2_11 ↔] Joppe W. Bos [http://dx.doi.org/10.1504/IJACT.2012.045590 ↔] Peter L. Montgomery [http://dx.doi.org/10.1016/0097-3165(73)90011-3 ↔] Paul Erdős) --><br />
<br />
== Code ==<br />
* [https://github.com/doegox GitHub]<br />
* [https://www.openhub.net/accounts/doegox OpenHub]<br />
<br />
== Photography ==<br />
<br />
* [http://flickr.com/photos/doegox/ Flickr]<br />
<br />
== Misc ==<br />
* [https://pinboard.in/u:doegox/ Pinboard]<br />
* [http://www.librarything.com/catalog/doegox LibraryThing]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=User:PhilippeTeuwen&diff=10544User:PhilippeTeuwen2022-11-07T01:22:37Z<p>PhilippeTeuwen: </p>
<hr />
<div><br />
== ID ==<br />
[[Image:Phil-contact.png|my contacts are in an image to avoid spam, sorry for the inconvenience]]<br />
* [https://keybase.io/doegox doegox on keybase.io]<br />
** [https://doegox.keybase.pub/ other assertions]<br />
<br />
== Social ==<br />
<br />
* [https://twitter.com/doegox @doegox on Twitter]<br />
* [http://www.linkedin.com/in/philippeteuwen LinkedIn]<br />
* [https://infosec.exchange/@doegox @doegox@infosec.exchange on Mastodon((me))]<br />
<br />
== Publications ==<br />
<br />
* [https://github.com/doegox/bibliography Bibliography]<br />
* [https://scholar.google.be/citations?user=Ra_sBhgAAAAJ&hl=en Google Scholar]<br />
* [https://www.researchgate.net/profile/Philippe_Teuwen ResearchGate]<br />
* [https://speakerdeck.com/doegox SpeakerDeck]<br />
<br />
<!-- [http://wwwp.oakland.edu/enp/ Erdős Number]: 3 thanks to a paper without a single math formula ;)<br />
<br>(e.g. Philippe Teuwen [http://dx.doi.org/10.1007/978-3-662-53140-2_11 ↔] Joppe W. Bos [http://dx.doi.org/10.1504/IJACT.2012.045590 ↔] Peter L. Montgomery [http://dx.doi.org/10.1016/0097-3165(73)90011-3 ↔] Paul Erdős) --><br />
<br />
== Code ==<br />
* [https://github.com/doegox GitHub]<br />
* [https://www.openhub.net/accounts/doegox OpenHub]<br />
<br />
== Photography ==<br />
<br />
* [http://flickr.com/photos/doegox/ Flickr]<br />
<br />
== Misc ==<br />
* [https://pinboard.in/u:doegox/ Pinboard]<br />
* [http://www.librarything.com/catalog/doegox LibraryThing]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=User:PhilippeTeuwen&diff=10543User:PhilippeTeuwen2022-11-07T01:16:43Z<p>PhilippeTeuwen: </p>
<hr />
<div><br />
== ID ==<br />
[[Image:Phil-contact.png|my contacts are in an image to avoid spam, sorry for the inconvenience]]<br />
* [https://keybase.io/doegox doegox on keybase.io]<br />
** [https://doegox.keybase.pub/ other assertions]<br />
<br />
== Social ==<br />
<br />
* [https://twitter.com/doegox @doegox on Twitter]<br />
* [http://www.linkedin.com/in/philippeteuwen LinkedIn]<br />
* [https://infosec.exchange/@doegox Mastodon]<br />
<br />
== Publications ==<br />
<br />
* [https://github.com/doegox/bibliography Bibliography]<br />
* [https://scholar.google.be/citations?user=Ra_sBhgAAAAJ&hl=en Google Scholar]<br />
* [https://www.researchgate.net/profile/Philippe_Teuwen ResearchGate]<br />
* [https://speakerdeck.com/doegox SpeakerDeck]<br />
<br />
<!-- [http://wwwp.oakland.edu/enp/ Erdős Number]: 3 thanks to a paper without a single math formula ;)<br />
<br>(e.g. Philippe Teuwen [http://dx.doi.org/10.1007/978-3-662-53140-2_11 ↔] Joppe W. Bos [http://dx.doi.org/10.1504/IJACT.2012.045590 ↔] Peter L. Montgomery [http://dx.doi.org/10.1016/0097-3165(73)90011-3 ↔] Paul Erdős) --><br />
<br />
== Code ==<br />
* [https://github.com/doegox GitHub]<br />
* [https://www.openhub.net/accounts/doegox OpenHub]<br />
<br />
== Photography ==<br />
<br />
* [http://flickr.com/photos/doegox/ Flickr]<br />
<br />
== Misc ==<br />
* [https://pinboard.in/u:doegox/ Pinboard]<br />
* [http://www.librarything.com/catalog/doegox LibraryThing]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10542Laptop Dell XPS 152022-01-09T14:31:33Z<p>PhilippeTeuwen: /* Optimus */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* '''Secure Boot: disable'''<br />
* '''SATA: switch from Raid to AHCI'''<br />
* '''Advances Boot Options:/ NOT Enable Legacy Option ROMs'''<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
** See below (first boot) how to create a new entry<br />
* POST/Fastboot/Auto<br />
* auto os recovery threshold off<br />
* Fn Lock Options<br />
** NOT Fn Lock<br />
** Lock Mode Enable/Secondary<br />
* UEFI Capsule Firmware Updates / Enable<br />
** This allows using ``fwupdmgr update`` e.g. to update the TPM firmware<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
===Wayland===<br />
Got quite some troubles with Wayland, so I reverted it back to X11:<br />
<br />
Edit /etc/gdm3/daemon.conf and uncomment line:<br />
WaylandEnable=false<br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
** Boot Option Name : Debian<br />
** File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
** File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus & CUDA====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-cuda-toolkit mesa-utils<br />
reboot<br />
Examples:<br />
optirun -b none nvidia-settings -c :8<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
optirun -b none ./hashcat.bin -m 500 example500.hash example.dict<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10541Laptop Dell XPS 152022-01-09T14:22:59Z<p>PhilippeTeuwen: /* Gnome */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* '''Secure Boot: disable'''<br />
* '''SATA: switch from Raid to AHCI'''<br />
* '''Advances Boot Options:/ NOT Enable Legacy Option ROMs'''<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
** See below (first boot) how to create a new entry<br />
* POST/Fastboot/Auto<br />
* auto os recovery threshold off<br />
* Fn Lock Options<br />
** NOT Fn Lock<br />
** Lock Mode Enable/Secondary<br />
* UEFI Capsule Firmware Updates / Enable<br />
** This allows using ``fwupdmgr update`` e.g. to update the TPM firmware<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
===Wayland===<br />
Got quite some troubles with Wayland, so I reverted it back to X11:<br />
<br />
Edit /etc/gdm3/daemon.conf and uncomment line:<br />
WaylandEnable=false<br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
** Boot Option Name : Debian<br />
** File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
** File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10540Laptop Dell XPS 152022-01-09T14:15:48Z<p>PhilippeTeuwen: Undo revision 10539 by PhilippeTeuwen (talk)</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* '''Secure Boot: disable'''<br />
* '''SATA: switch from Raid to AHCI'''<br />
* '''Advances Boot Options:/ NOT Enable Legacy Option ROMs'''<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
** See below (first boot) how to create a new entry<br />
* POST/Fastboot/Auto<br />
* auto os recovery threshold off<br />
* Fn Lock Options<br />
** NOT Fn Lock<br />
** Lock Mode Enable/Secondary<br />
* UEFI Capsule Firmware Updates / Enable<br />
** This allows using ``fwupdmgr update`` e.g. to update the TPM firmware<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
** Boot Option Name : Debian<br />
** File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
** File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10539Laptop Dell XPS 152022-01-09T14:14:04Z<p>PhilippeTeuwen: Reverted edits by PhilippeTeuwen (talk) to last revision by Valient</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* Secure Boot: disable<br />
* SATA: switch from Raid to AHCI<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
* POST/Fastboot/Thorough<br />
* auto os recovery threshold off<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [http://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe]<br />
* 1.2.10 aka A10 [http://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe]<br />
* 1.2.14 aka A13 [http://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe]<br />
* 1.2.16 [http://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe]<br />
* '''1.2.18''' [http://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA:<br />
optirun -b none ./cudaHashcat64.bin -m 500 example500.hash example.dict<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
===Issues===<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically, still having the issue of black output on HDMI/DP1, see below.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>'''HDMI output doesn't work, it's recognized by xrandr as 'DP1' as for the VGA'''.<br />
<br>VGA output works.<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
===4.4.0===<br />
Testing linux-image-4.4.0-1-amd64 from Debian Experimental:<br />
* it just doesn't boot, stalls immediately after loading initrd<br />
<br />
Testing from vanilla:<br />
* vanilla 4.4 with config from Debian 4.3.0-1-amd64 and general rule to enable as module whatever was new<br />
cp /boot/config-$(uname -r) .config<br />
make oldconfig<br />
* Seems better than 4.3, no more issues with i915<br />
<br />
Testing from vanilla with config closer to linux-image-4.4.0-1-amd64 (trying to understand why the Debian one doesn't boot):<br />
* vanilla 4.4 with config from Debian 4.4.0-1-amd64 and adjusting the minimum because apparently 4.4.0-1-amd64 is a 4.4.2<br />
<source lang=diff><br />
--- config-4.4.0-1-amd64 2016-02-21 16:36:18.000000000 +0100<br />
+++ config-4.4.0-9-doegox 2016-02-22 23:07:13.000000000 +0100<br />
-# Linux/x86 4.4.2 Kernel Configuration<br />
+# Linux/x86_64 4.4.0-9-doegox Kernel Configuration<br />
-CONFIG_MEMCG_DISABLED=y<br />
-CONFIG_X86_X32_DISABLED=y<br />
+CONFIG_FB_NVIDIA=m<br />
+CONFIG_FB_NVIDIA_BACKLIGHT=y<br />
+CONFIG_FB_RIVA=m<br />
+CONFIG_FB_RIVA_BACKLIGHT=y<br />
-CONFIG_GRKERNSEC=y<br />
-CONFIG_GRKERNSEC_PERF_HARDEN=y<br />
</source><br />
I inspected both initrd and besides rivafb.ko and nvidiafb.ko (which are probably useless) there is no diff.<br />
<br>Still, this kernel boots, but the same problem as with 4.5.0 appears:<br />
* can't config touchpad with synclient<br />
See 4.5.0 for the fix.<br />
===4.5.0===<br />
Testing linux-image-4.5.0-1-amd64 (4.5.1-1) from Debian Stretch:<br />
* no more issues with i915, no more black screen when screen awakes :)<br />
* '''main screen flickering when an external monitor is attached. Sometimes ends-up in a complete freeze :('''<br />
* can't config touchpad with synclient<br />
** solved:<br />
<br />
Touchpad problem:<br />
<br>This is because touchpad got detected twice, cf /var/log/Xorg.0.log<br />
[ 13.212] (II) config/udev: Adding input device DLL06E4:01 06CB:7A13 Touchpad (/dev/input/event12)<br />
[ 13.353] (II) config/udev: Adding input device DLL06E4:01 06CB:7A13 Touchpad (/dev/input/mouse2)<br />
[ 13.357] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/event1)<br />
[ 13.445] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/mouse0)<br />
See also in dmesg the spurious driver:<br />
[ 0.341039] pnp 00:05: Plug and Play ACPI device, IDs DLL06e4 PNP0f13 (active)<br />
[ 8.231092] input: DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
[ 8.231227] hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
DLL06E4:01 06CB:7A13 Touchpad must be prevented<br />
<br>=> Add /etc/modprobe.d/synaptics.conf:<br />
blacklist i2c-designware-platform<br />
Blacklisting i2c-hid a explained elsewhere didn't help me.<br />
<br />
If you tried earlier 4.5.0 from Experimental and had issues compiling DKMS modules, be sure to install latest linux-kbuild-4.5<br />
<br />
===4.6===<br />
Seems the most stable up to now.<br />
<br />
* DA200 is now detected once plugged it.<br />
* still occasional freeze with external screen being attached or mode being changed<br />
<br />
==Hardware changes==<br />
I'll try a few changes... to be continued<br />
<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=PoC_or_GTFO&diff=10538PoC or GTFO2021-12-23T10:08:46Z<p>PhilippeTeuwen: </p>
<hr />
<div>==Intro==<br />
This page assembles various matters related to the [https://www.alchemistowl.org/pocorgtfo/ International Journal of Proof-of-Concept or Get The Fuck Out] (PoC||GTFO or PoC or GTFO)<br />
<br>I limit voluntarily myself to topics I've been directly involved with.<br />
<!--<br />
==Mirror==<br />
My PoC mirror:<br />
* http://[2a02:af00:8:0:506f:43ba:4754:464f]<br />
Or, if you're brave:<br />
<source lang=bash><br />
www-browser http://[2a02:af00:8:0:$(echo -n PoC║GTFO | recode utf8..CP437|xxd -p|sed 's/\(....\)/\1:/g;s/:$/]/')<br />
</source><br />
You can find also lighter booklet versions ready for printing (and only printing!) at http://[2a02:af00:8:0:506f:43ba:4754:464f]/booklets<br />
--><br />
==Articles==<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo05.pdf PoC||GTFO 0x05] 3: ECB as an Electronic Coloring Book<br />
** See also https://doegox.github.io/ElectronicColoringBook/<br />
** See also [http://yobi.be/files/ecb.pdf my lightning talk @ hack.lu 2014]<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo06.pdf PoC||GTFO 0x06] 7: More Cryptographic Coloring Books (original title was "Coloring Book Continued")<br />
** Errata in 7.6 due to Frenglish to English translation ;-) : OFB and CTR are fine, only CBC & CFB can be compared to ECB<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo08.pdf PoC||GTFO 0x08] 12: Weird cryptography; or, How to resist brute-force attacks.<br />
** See also [[Sci-Fi Crypto]]<br />
** pocorgtfo08.pdf itself is also a ZIP and a shell script to perform grammatically correct encryption<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo09.pdf PoC||GTFO 0x09] 12: What If You Could Listen to This PDF?<br />
** pocorgtfo09.pdf itself is also a ZIP and a WavPack audio file<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo09.pdf PoC||GTFO 0x12] 11: Are Androids Polyglots?<br />
** pocorgtfo12.pdf itself is also a ZIP and an Android APK able to share itself via NFC<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo13.pdf PoC||GTFO 0x13] 10: Post Scriptum: A Schizophrenic Ghost, with E. Sultanik<br />
** pocorgtfo12.pdf itself is also a ZIP and a PostScript file<br />
<br />
==Misc from PoC||GTFO==<br />
===[https://www.alchemistowl.org/pocorgtfo/pocorgtfo06.pdf PoC||GTFO 0x06]===<br />
Happy thanksgiving ;)<br />
<source lang=bash><br />
sed '4025,4048!d' pocorgtfo06.pdf<br />
</source><br />
<pre><br />
Spoilers for our Pictures of Cats<br />
<br />
- 1.png is a PNG picture. It's a RGB picture, with a palette.<br />
The RGB values have been altered to display another picture via the palette.<br />
So just change offset 0x19 from 0x2 (RGB) to 0x3 (paletted)<br />
to enjoy the hidden picture.<br />
Extra efforts were taken to make the picture not trivial to extract,<br />
and remove as many artifacts as possible<br />
<br />
by Philippe Teuwen & Ange Albertini, original idea by Dominique Bongard<br />
<br />
- 2.bmp is a BMP/PCM polyglot, which means it's a Bitmap picture,<br />
and a RAW audio polyglot that is directly playable<br />
(it's not really hidden, it's just happy co-existence).<br />
The audio, when viewed in spectrogram view, will show a familiar face.<br />
<br />
To enjoy it fully, just run<br />
sox -t raw -r 44100 -c 1 -e signed -b 32 2.bmp -n spectrogram<br />
(with optional -m -x 555 -y 512 -z 24 -Z -36, for better rendering)<br />
<br />
For more details, check http://wiki.yobi.be/wiki/BMP_PCM_polyglot,<br />
including a nifty RGB spectrogram via baudline.<br />
<br />
by Philippe Teuwen & Ange Albertini<br />
</pre><br />
For PNG in PNG, see [[PNG Merge]]<br />
<br>For BMP/PCM, see [[BMP PCM polyglot]]<br />
<br />
PoC||GTFO 0x06 contains also a scan of a [https://en.wikipedia.org/wiki/Cauzin_Softstrip softstrip]<br />
* I made a clean version [https://imgur.com/gP44Ftx here]<br />
* which can be decoded with [http://pastebin.com/hU8mSj1D this code]<br />
* @johnmaushammer posted the result together with [http://pastebin.com/7GvSM8Q9 his own code]<br />
<br />
===[https://www.alchemistowl.org/pocorgtfo/pocorgtfo07.pdf PoC||GTFO 0x07]===<br />
* [https://twitter.com/doegox/status/578948443814629376 Anybody noticed what the boy is reading on PoC||GTFO 0x07 cover?]<br />
* [https://twitter.com/doegox/status/590889853811875840 Did you notice BlueRay microdots in PoC||GTFO 7:3 ? First one depicts @scanlime's artwork]<br />
* Two new polyglots sound + spectrograms<br />
<br />
===[https://www.alchemistowl.org/pocorgtfo/pocorgtfo08.pdf PoC||GTFO 0x08]===<br />
* Animated covers<br />
** @pdfkungfoo made lovely gifs for those of you not having Adobe to enjoy last PoC||GTFO 0x08<br><br />
(click them to see the animations)<br />
<br>[[Image:Family-pocorgtfo08.gif|400px|link=http://wiki.yobi.be/images/2/26/Family-pocorgtfo08.gif]]<br />
<br>[[Image:Birds-pocorgtfo08.gif|400px|link=http://wiki.yobi.be/images/7/7b/Birds-pocorgtfo08.gif]]<br />
<br>Also as video: https://vimeo.com/131434211 and https://vimeo.com/131445216<br />
* PoC||GTFO '08 painting inspired by [https://en.wikipedia.org/wiki/The_Empire_of_Lights Magritte's Empire of Lights]:<br />
<br>[[Image:Pocorgtfo08EmpireLumieres.png|400px]]<br />
* Polyglot is a shell script to encode English into grammatically correct English <br />
** [https://twitter.com/doegox/status/615893486542286852 Did you know? PoC||GTFO 8.12 drawing is a Hugues printing telegraph]<br />
* [https://twitter.com/doegox/status/615603544184516608 PoC||GTFO 0x08 Ossmann artwork is based on Osman videogame]<br />
<br />
==Misc in the same PoC spirit==<br />
Ange had fun with Cameron recent declarations: https://imgur.com/xNUlzaE<br />
<br>That PNG contains a dummy chunk ("dumb" chunk actually) with 32b PCM so you can actually play the PNG and hear the content of dumb chunk (before hearing the white noise of the picture data itself)<br />
<source lang=bash><br />
wget -O - https://imgur.com/download/xNUlzaE | aplay -r 44100 -c1 -f S32_BE<br />
</source><br />
Note that we're supposed to apply a ROT13 but I don't hear a difference (rot13 on binary only affects slightly a small part of the range)<br />
<source lang=bash><br />
wget -O - https://imgur.com/download/xNUlzaE | tr '[A-Za-z]' '[N-ZA-Mn-za-m]' |aplay -r 44100 -c1 -f S32_BE<br />
</source><br />
The voice says "I've no idea what I'm saying"</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=PoC_or_GTFO&diff=10537PoC or GTFO2021-12-23T10:02:19Z<p>PhilippeTeuwen: </p>
<hr />
<div>==Intro==<br />
This page assembles various matters related to the [https://www.alchemistowl.org/pocorgtfo/ International Journal of Proof-of-Concept or Get The Fuck Out] (PoC||GTFO or PoC or GTFO)<br />
<br>I limit voluntarily myself to topics I've been directly involved with.<br />
<!--<br />
==Mirror==<br />
My PoC mirror:<br />
* http://[2a02:af00:8:0:506f:43ba:4754:464f]<br />
Or, if you're brave:<br />
<source lang=bash><br />
www-browser http://[2a02:af00:8:0:$(echo -n PoC║GTFO | recode utf8..CP437|xxd -p|sed 's/\(....\)/\1:/g;s/:$/]/')<br />
</source><br />
You can find also lighter booklet versions ready for printing (and only printing!) at http://[2a02:af00:8:0:506f:43ba:4754:464f]/booklets<br />
--><br />
==Articles==<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo05.pdf PoC||GTFO 0x05] 3: ECB as an Electronic Coloring Book<br />
** See also https://doegox.github.io/ElectronicColoringBook/<br />
** See also [http://yobi.be/files/ecb.pdf my lightning talk @ hack.lu 2014]<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo06.pdf PoC||GTFO 0x06] 7: More Cryptographic Coloring Books (original title was "Coloring Book Continued")<br />
** Errata in 7.6 due to Frenglish to English translation ;-) : OFB and CTR are fine, only CBC & CFB can be compared to ECB<br />
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo08.pdf PoC||GTFO 0x08] 12: Weird cryptography; or, How to resist brute-force attacks.<br />
** See also [[Sci-Fi Crypto]]<br />
** pocorgtfo08.pdf itseld is a shell script to perform grammatically correct encryption<br />
<br />
==Misc from PoC||GTFO==<br />
===[https://www.alchemistowl.org/pocorgtfo/pocorgtfo06.pdf PoC||GTFO 0x06]===<br />
Happy thanksgiving ;)<br />
<source lang=bash><br />
sed '4025,4048!d' pocorgtfo06.pdf<br />
</source><br />
<pre><br />
Spoilers for our Pictures of Cats<br />
<br />
- 1.png is a PNG picture. It's a RGB picture, with a palette.<br />
The RGB values have been altered to display another picture via the palette.<br />
So just change offset 0x19 from 0x2 (RGB) to 0x3 (paletted)<br />
to enjoy the hidden picture.<br />
Extra efforts were taken to make the picture not trivial to extract,<br />
and remove as many artifacts as possible<br />
<br />
by Philippe Teuwen & Ange Albertini, original idea by Dominique Bongard<br />
<br />
- 2.bmp is a BMP/PCM polyglot, which means it's a Bitmap picture,<br />
and a RAW audio polyglot that is directly playable<br />
(it's not really hidden, it's just happy co-existence).<br />
The audio, when viewed in spectrogram view, will show a familiar face.<br />
<br />
To enjoy it fully, just run<br />
sox -t raw -r 44100 -c 1 -e signed -b 32 2.bmp -n spectrogram<br />
(with optional -m -x 555 -y 512 -z 24 -Z -36, for better rendering)<br />
<br />
For more details, check http://wiki.yobi.be/wiki/BMP_PCM_polyglot,<br />
including a nifty RGB spectrogram via baudline.<br />
<br />
by Philippe Teuwen & Ange Albertini<br />
</pre><br />
For PNG in PNG, see [[PNG Merge]]<br />
<br>For BMP/PCM, see [[BMP PCM polyglot]]<br />
<br />
PoC||GTFO 0x06 contains also a scan of a [https://en.wikipedia.org/wiki/Cauzin_Softstrip softstrip]<br />
* I made a clean version [https://imgur.com/gP44Ftx here]<br />
* which can be decoded with [http://pastebin.com/hU8mSj1D this code]<br />
* @johnmaushammer posted the result together with [http://pastebin.com/7GvSM8Q9 his own code]<br />
<br />
===[https://www.alchemistowl.org/pocorgtfo/pocorgtfo07.pdf PoC||GTFO 0x07]===<br />
* [https://twitter.com/doegox/status/578948443814629376 Anybody noticed what the boy is reading on PoC||GTFO 0x07 cover?]<br />
* [https://twitter.com/doegox/status/590889853811875840 Did you notice BlueRay microdots in PoC||GTFO 7:3 ? First one depicts @scanlime's artwork]<br />
* Two new polyglots sound + spectrograms<br />
<br />
===[https://www.alchemistowl.org/pocorgtfo/pocorgtfo08.pdf PoC||GTFO 0x08]===<br />
* Animated covers<br />
** @pdfkungfoo made lovely gifs for those of you not having Adobe to enjoy last PoC||GTFO 0x08<br><br />
(click them to see the animations)<br />
<br>[[Image:Family-pocorgtfo08.gif|400px|link=http://wiki.yobi.be/images/2/26/Family-pocorgtfo08.gif]]<br />
<br>[[Image:Birds-pocorgtfo08.gif|400px|link=http://wiki.yobi.be/images/7/7b/Birds-pocorgtfo08.gif]]<br />
<br>Also as video: https://vimeo.com/131434211 and https://vimeo.com/131445216<br />
* PoC||GTFO '08 painting inspired by [https://en.wikipedia.org/wiki/The_Empire_of_Lights Magritte's Empire of Lights]:<br />
<br>[[Image:Pocorgtfo08EmpireLumieres.png|400px]]<br />
* Polyglot is a shell script to encode English into grammatically correct English <br />
** [https://twitter.com/doegox/status/615893486542286852 Did you know? PoC||GTFO 8.12 drawing is a Hugues printing telegraph]<br />
* [https://twitter.com/doegox/status/615603544184516608 PoC||GTFO 0x08 Ossmann artwork is based on Osman videogame]<br />
<br />
==Misc in the same PoC spirit==<br />
Ange had fun with Cameron recent declarations: https://imgur.com/xNUlzaE<br />
<br>That PNG contains a dummy chunk ("dumb" chunk actually) with 32b PCM so you can actually play the PNG and hear the content of dumb chunk (before hearing the white noise of the picture data itself)<br />
<source lang=bash><br />
wget -O - https://imgur.com/download/xNUlzaE | aplay -r 44100 -c1 -f S32_BE<br />
</source><br />
Note that we're supposed to apply a ROT13 but I don't hear a difference (rot13 on binary only affects slightly a small part of the range)<br />
<source lang=bash><br />
wget -O - https://imgur.com/download/xNUlzaE | tr '[A-Za-z]' '[N-ZA-Mn-za-m]' |aplay -r 44100 -c1 -f S32_BE<br />
</source><br />
The voice says "I've no idea what I'm saying"</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=User:PhilippeTeuwen&diff=10536User:PhilippeTeuwen2021-12-23T09:59:45Z<p>PhilippeTeuwen: </p>
<hr />
<div><br />
== ID ==<br />
[[Image:Phil-contact.png|my contacts are in an image to avoid spam, sorry for the inconvenience]]<br />
* [https://keybase.io/doegox doegox on keybase.io]<br />
** [https://doegox.keybase.pub/ other assertions]<br />
<br />
== Social ==<br />
<br />
* [https://twitter.com/doegox @doegox on Twitter]<br />
* [http://www.linkedin.com/in/philippeteuwen LinkedIn]<br />
<br />
== Publications ==<br />
<br />
* [https://github.com/doegox/bibliography Bibliography]<br />
* [https://scholar.google.be/citations?user=Ra_sBhgAAAAJ&hl=en Google Scholar]<br />
* [https://www.researchgate.net/profile/Philippe_Teuwen ResearchGate]<br />
* [https://speakerdeck.com/doegox SpeakerDeck]<br />
<br />
<!-- [http://wwwp.oakland.edu/enp/ Erdős Number]: 3 thanks to a paper without a single math formula ;)<br />
<br>(e.g. Philippe Teuwen [http://dx.doi.org/10.1007/978-3-662-53140-2_11 ↔] Joppe W. Bos [http://dx.doi.org/10.1504/IJACT.2012.045590 ↔] Peter L. Montgomery [http://dx.doi.org/10.1016/0097-3165(73)90011-3 ↔] Paul Erdős) --><br />
<br />
== Code ==<br />
* [https://github.com/doegox GitHub]<br />
* [https://www.openhub.net/accounts/doegox OpenHub]<br />
<br />
== Photography ==<br />
<br />
* [http://flickr.com/photos/doegox/ Flickr]<br />
<br />
== Misc ==<br />
* [https://pinboard.in/u:doegox/ Pinboard]<br />
* [http://www.librarything.com/catalog/doegox LibraryThing]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=File:Phil-contact.png&diff=10535File:Phil-contact.png2021-12-22T15:40:59Z<p>PhilippeTeuwen: PhilippeTeuwen uploaded a new version of File:Phil-contact.png</p>
<hr />
<div></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10534Laptop Dell XPS 152021-12-21T23:16:29Z<p>PhilippeTeuwen: </p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* '''Secure Boot: disable'''<br />
* '''SATA: switch from Raid to AHCI'''<br />
* '''Advances Boot Options:/ NOT Enable Legacy Option ROMs'''<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
** See below (first boot) how to create a new entry<br />
* POST/Fastboot/Auto<br />
* auto os recovery threshold off<br />
* Fn Lock Options<br />
** NOT Fn Lock<br />
** Lock Mode Enable/Secondary<br />
* UEFI Capsule Firmware Updates / Enable<br />
** This allows using ``fwupdmgr update`` e.g. to update the TPM firmware<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
** Boot Option Name : Debian<br />
** File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
** File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10532Laptop Dell XPS 152021-08-20T21:03:36Z<p>PhilippeTeuwen: /* Bios */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* '''Secure Boot: disable'''<br />
* '''SATA: switch from Raid to AHCI'''<br />
* '''Advances Boot Options:/ NOT Enable Legacy Option ROMs'''<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
** See below (first boot) how to create a new entry<br />
* POST/Fastboot/Auto<br />
* auto os recovery threshold off<br />
* Fn Lock Options<br />
** NOT Fn Lock<br />
** Lock Mode Enable/Secondary<br />
* UEFI Capsule Firmware Updates / Enable<br />
** This allows using ``fwupdmgr update`` e.g. to update the TPM firmware<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
** Boot Option Name : Debian<br />
** File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
** File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10531Laptop Dell XPS 152021-08-20T20:51:21Z<p>PhilippeTeuwen: /* Bios */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* '''Secure Boot: disable'''<br />
* '''SATA: switch from Raid to AHCI'''<br />
* '''Advances Boot Options:/ NOT Enable Legacy Option ROMs'''<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
** See below (first boot) how to create a new entry<br />
* POST/Fastboot/Auto<br />
* auto os recovery threshold off<br />
* Fn Lock Options<br />
** NOT Fn Lock<br />
** Lock Mode Enable/Secondary<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
** Boot Option Name : Debian<br />
** File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
** File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10530Laptop Dell XPS 152021-08-20T20:46:56Z<p>PhilippeTeuwen: /* First boot */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* Secure Boot: disable<br />
* SATA: switch from Raid to AHCI<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
* POST/Fastboot/Thorough<br />
* auto os recovery threshold off<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
** Boot Option Name : Debian<br />
** File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
** File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10529Laptop Dell XPS 152021-08-20T20:46:26Z<p>PhilippeTeuwen: /* First boot */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* Secure Boot: disable<br />
* SATA: switch from Raid to AHCI<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
* POST/Fastboot/Thorough<br />
* auto os recovery threshold off<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
* Boot Sequence / Add Boot Option<br />
* Boot Option Name : Debian<br />
* File System List : PciRoot(0x0)/Pic(0x1D,0x0)/Pci(0x0,0x0)/?/HD(1,GPT,<UUID>)<br />
* File Name : FS0 - EFI - debian - grubx64.efi<br />
* Advances Boot Options / NOT Enable Legacy Option ROMs<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10528Laptop Dell XPS 152021-08-20T20:38:11Z<p>PhilippeTeuwen: /* Debian */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* Secure Boot: disable<br />
* SATA: switch from Raid to AHCI<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
* POST/Fastboot/Thorough<br />
* auto os recovery threshold off<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
<br />
===Gnome===<br />
Update: now using Gnome3.<br />
Needs to replace lightdm by gdm3 to get newer lock screen (gnome-screensaver is deprecated)<br />
<pre><br />
sudo dpkg-reconfigure gdm3<br />
(choose gdm3)<br />
# delay before blanking, in seconds:<br />
gsettings set org.gnome.desktop.session idle-delay 300<br />
# delay after blanking before locking, in seconds:<br />
gsettings set org.gnome.desktop.screensaver lock-delay 10<br />
(reboot)<br />
</pre><br />
Sometimes after a crash, gnome extensions (https://extensions.gnome.org/local/) are disabled. To reenable them:<br />
<pre><br />
dconf write /org/gnome/shell/disable-user-extensions false<br />
</pre><br />
<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Patents&diff=10527Patents2021-05-28T08:47:33Z<p>PhilippeTeuwen: </p>
<hr />
<div>==Granted patents==<br />
Note: les traductions officielles en français, parfois loufoques, ne proviennent pas des auteurs...<br />
===SECURE PAIRING FOR WIRED OR WIRELESS COMMUNICATIONS DEVICES===<br />
* aka '''APPARIEMENT SECURISE POUR DISPOSITIFS DE COMMUNICATION FILAIRES OU SANS FIL'''<br />
* Inventor(s): Vauclair; Marc (Leuven, BE, US) , Serret Avila; Javier (Brussels, BE, US) , Etienne; Lionel Georges (Leuven, BE, US) , Teuwen; Philippe (Leuven, BE, US)<br />
* Priority date: Sep 8, 2004<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006027725&F=0 WO2006027725] (A1)<br />
** '''US8813188 (B2)''' ([https://patents.google.com/patent/US8813188 Google Patents])<br />
** '''EP1792442 (B1)''' ([https://patents.google.com/patent/EP1792442B1 Google Patents])<br />
** '''CN101015173 (B)'''<br />
** DE602005019589 (D1)<br />
** KR20070050057 (A)<br />
** JP2008512891 (A)<br />
** AT459158 (T)<br />
** '''TWI467978 (B)''' ??<br />
<br />
===METHOD AND DEVICE FOR INCREASED RFID TRANSMISSION SECURITY===<br />
* aka '''PROCEDE ET DISPOSITIF AMELIORANT LA SECURITE DE TRANSMISSION DES IDRF'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US) , Thueringer; Peter (Graz, AT, US)<br />
* Priority date Jun 7, 2005<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131861&F=0 WO2006131861] (A1)<br />
** '''US 8813188 (B2)''' ([https://patents.google.com/patent/US8813188B2 Google Patents])<br />
** '''[http://v3.espacenet.com/publicationDetails/biblio?adjacent=true&KC=B1&date=20080305&NR=1894145A1&DB=EPODOC&locale=en_EP&CC=EP&FT=D EP1894145] (B1) ([https://patents.google.com/patent/EP1894145B1 Google Patents])'''<br />
** '''CN101194274 (B)''' [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680020153&D1=appno 200680020153]<br />
** DE602006006055 (D1)<br />
** '''JP4739342 (B2)'''<br />
** AT427536 (T)<br />
** '''KR101270039 (B1)'''<br />
** '''TWI467978 (B)'''<br />
<br />
===WATERMARKING OF A PROCESSING MODULE===<br />
* aka '''FILIGRANAGE D'UN MODULE DE TRAITEMENT'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US)<br />
* Priority date Sep 30, 2005<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=US&NR=8209543B2&KC=B2&FT=D&ND=1&date=20120626&DB=&locale=en_EP WO2007036863] (A3)<br />
** '''US 8209543 (B2)''' ([https://patents.google.com/patent/US8209543 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1934877A2&KC=A2&FT=D EP1934877] (A2)([https://patents.google.com/patent/EP1934877A2 Google Patents])<br />
** CN101273365 (A) [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680035901&D1=appno 200680035901]<br />
** JP2009510880 (A)<br />
<br />
===METHOD OF OBFUSCATING A CODE===<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Aug 26, 2009<br />
* Publications:<br />
** '''US 9465926 (B2)''' ([https://patents.google.com/patent/US9465926 Google Patents])<br />
** '''[http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2290547B1&KC=B1&FT=D EP2290547 (B1)]''' ([https://patents.google.com/patent/EP2290547B1 Google Patents])<br />
** '''US 9965401 (B2)''' ([https://patents.google.com/patent/US9965401B2 Google Patents])<br />
<br />
===CHALLENGE RESPONSE BASED ENROLLMENT OF PHYSICAL UNCLONABLE FUNCTIONS===<br />
* aka '''ENROLLMENT OF PHYSICALLY UNCLONABLE FUNCTIONS'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Nov 19, 2010<br />
* Publications:<br />
** '''US8694778 (B2)''' ([https://patents.google.com/patent/US8694778 Google Patents])<br />
** '''EP2456121 (B1)''' ([https://patents.google.com/patent/EP2456121B1 Google Patents])<br />
** '''CN102571748 (B)''' ([[https://patents.google.com/patent/CN102571748B Google Patents])<br />
<br />
===ELECTRONIC COMPONENT WITH CONFIGURABLE FUNCTIONALITY===<br />
* aka '''ELECTRONIC COMPONENT'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE)<br />
* Priority date Nov 30, 2010<br />
* Publications:<br />
** '''US8990519 (B2)''' ([https://patents.google.com/patent/US8990519 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2458522A1&KC=A1&FT=D EP2458522] (A1) ([https://patents.google.com/patent/EP2458522A1 Google Patents])<br />
** '''CN102609558 (B)''' ([https://patents.google.com/patent/CN102609558B Google Patents])<br />
<br />
===DIGITAL WALLET DEVICE FOR VIRTUAL WALLET===<br />
* Inventors: Teuwen Philippe; Colnot Cedric;<br />
* Priority date Dec 19, 2012 <br />
* Publications:<br />
** '''US 10147086B2 (B2)''' ([https://patents.google.com/patent/US10147086B2 Google Patents])<br />
** EP2747015 (A3) ([https://www.google.be/patents/EP2747015A3 Google Patents])<br />
** CN103886455 (A) ([https://www.google.be/patents/CN103886455A Google Patents])<br />
<br />
===DIGITAL WALLET BRIDGE===<br />
* Inventors: Colnot Cedric; Teuwen Philippe<br />
* Priority date Apr 2,2013 <br />
* Publications:<br />
** '''US 10102522B2 (B2)''' ([https://patents.google.com/patent/US10102522B2 Google Patents])<br />
** EP2787473 (A1) ([https://www.google.be/patents/EP2787473A1?cl=en Google Patents])<br />
<br />
===BINDING MOBILE DEVICE SECURE SOFTWARE COMPONENTS TO THE SIM===<br />
* Inventors: Peter Rombouts, Philippe Teuwen, Frank Michaud<br />
* Priority date: Dec 19, 2013 <br />
* Publications:<br />
** '''US 9264899 (B2)''' ([https://patents.google.com/patent/US9264899 Google Patents])<br />
** '''US 9584514 (B2)''' ([https://patents.google.com/patent/US9584514B2 Google Patents])<br />
** '''CN104731612 (B)''' ([https://patents.google.com/patent/CN104731612A Google Patents])<br />
** '''EP2887610 (B1)''' ([https://patents.google.com/patent/EP2887610B1 Google Patents])<br />
<br />
===METHOD OF GENERATING A STRUCTURE AND CORRESPONDING STRUCTURE===<br />
* Inventors: Colnot Vincent Cedric; Rombouts Peter; Teuwen Philippe; Michaud Frank<br />
* Priority Date: Nov 21, 2013<br />
* Publications:<br />
** '''US 9563754 (B2)''' ([https://patents.google.com/patent/US9563754 Google Patents])<br />
** '''EP2876593 (B1)''' ([https://patents.google.com/patent/EP2876593B1 Google Patents])<br />
** '''CN104657636 (B)''' ([https://patents.google.com/patent/CN104657636B Google Patents])<br />
<br />
===RESTRICTING SOFTWARE TO AUTHORIZED WIRELESS ENVIRONMENTS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Priority Date: Dec 13, 2013<br />
* Publications:<br />
** '''US9693224 (B2)''' ([https://patents.google.com/patent/US9693224 Google Patents])<br />
** '''EP2884786 (B1)''' ([https://patents.google.com/patent/EP2884786B1 Google Patents])<br />
** '''CN104715192 (B)''' ([https://patents.google.com/patent/CN104715192B Google Patents])<br />
<br />
===SECURE SOFTWARE COMPONENTS ANTI-REVERSE-ENGINEERING BY TABLE INTERLEAVING===<br />
* Inventors: Philippe Teuwen, Ventzislav Nikov, Peter Rombouts<br />
* Priority Date: Dec 26, 2013<br />
* Publications:<br />
** '''US 9576116 (B2)''' ([https://patents.google.com/patent/US9576116 Google Patents])<br />
** '''EP2892175 (B1)''' ([https://patents.google.com/patent/EP2892175B1 Google Patents])<br />
<br />
===FLEXIBLE URL SIGNATURE SCHEME FOR TAGS===<br />
* aka '''Flexible data authentication for an nfc data exchange format ndef message'''<br />
* aka '''Flexible data authentication '''<br />
* Inventors: Philippe Teuwen<br />
* Priority Date: Dec 31, 2013<br />
* Publications:<br />
** '''US 9419803 (B2)''' ([https://patents.google.com/patent/US9419803 Google Patents])<br />
** '''EP2890172 (B1)''' ([https://patents.google.com/patent/EP2890172B1 Google Patents])<br />
** '''CN104796257 (B)''' ([https://patents.google.com/patent/CN104796257B Google Patents])<br />
<br />
===ONE-TIME PROGRAMMING IN REPROGRAMMABLE MEMORY===<br />
* Inventors: Marc Vauclair, Philippe Teuwen<br />
* Priority Date: March 14, 2014<br />
* Publications:<br />
** '''US 9823860 (B2)''' ([https://patents.google.com/patent/US9823860B2 Google Patents])<br />
** EP2919236 (A1) ([https://patents.google.com/patent/EP2919236A1 Google Patents])<br />
** '''CN104916321 (B)''' ([https://patents.google.com/patent/CN104916321B Google Patents])<br />
<br />
===CONSTELLATION BASED DEVICE BINDING===<br />
* Inventors: Peter Rombouts, Frank Michaud, Philippe Teuwen<br />
* Priority Date: March 27, 2014<br />
* Publications:<br />
** '''US 9953144 (B2)''' ([https://patents.google.com/patent/US9953144B2 Google Patents])<br />
** EP2924566 (A3) ([https://patents.google.com/patent/EP2924566A3 Google Patents])<br />
** '''CN104951714 (B)''' ([https://patents.google.com/patent/CN104951714B Google Patents])<br />
<br />
===CONTROL FLOW FLATTENING FOR CODE OBFUSCATION WHERE THE NEXT BLOCK CALCULATION NEEDS RUN-TIME INFORMATION===<br />
* Inventors: Jan Hoogerbrugge, Philippe Teuwen, Wil Michiels<br />
* Priority Date: April 23, 2014<br />
* Publications:<br />
** '''EP2937803 (B1)''' ([https://patents.google.com/patent/EP2937803B1 Google Patents])<br />
<br />
===RETURN-ORIENTED PROGRAMMING AS AN OBFUSCATION TECHNIQUE===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Jan Brands, Jan Hoogerbrugge<br />
* Priority Date: May 6, 2014<br />
* Publications:<br />
** '''US 9411597 (B2)''' ([https://patents.google.com/patent/US9411597 Google Patents])<br />
** '''EP2942727 (B1)''' ([https://patents.google.com/patent/EP2942727B1 Google Patents])<br />
** '''CN105095697 (B)''' ([https://patents.google.com/patent/CN105095697A Google Patents])<br />
<br />
===FLEXIBLE INSTRUCTION SETS FOR OBFUSCATED VIRTUAL MACHINES===<br />
* Inventors: Teuwen Philippe<br />
* Priority Date: Feb 26, 2015<br />
* Publications:<br />
** '''US 9501301 (B2)''' ([https://patents.google.com/patent/US9501301 Google Patents])<br />
** '''EP3062256A1 (B1)''' ([https://patents.google.com/patent/EP3062256B1 Google Patents])<br />
** '''CN105930694 (B)''' ([https://patents.google.com/patent/CN105930694B Google Patents])<br />
<br />
===ENCODING VALUES BY PSEUDO-RANDOM MASK===<br />
* Inventors: Michiels Wil, Hoogerbrugge Jan, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US 10097342 (B2)''' ([https://patents.google.com/patent/US10097342B2 Google Patents])<br />
<br />
===WIDE ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Bos Joppe, Teuwen Philippe<br />
* Priority Date: December 16, 2015<br />
* Publications:<br />
** '''US 10171234''' (B2) ([https://patents.google.com/patent/US10171234B2 Google Patents])<br />
** '''EP3182637 (B1)''' ([https://patents.google.com/patent/EP3182637B1 Google Patents])<br />
** CN106888081 (A) ([https://patents.google.com/patent/CN106888081A Google Patents])<br />
<br />
===BALANCED ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US10700849B2''' (B2) ([https://patents.google.com/patent/US10700849B2 Google Patents])<br />
** EP3125462 (A1) ([https://patents.google.com/patent/EP3125462A1 Google Patents])<br />
<br />
===RANDOM DATA FROM GNSS SIGNALS AND SECURE RANDOM VALUE PROVISIONING FOR SECURE SOFTWARE COMPONENT IMPLEMENTATIONS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Filing Date: 12/13/2013(?)<br />
* Application no: 14/104772<br />
* Publications:<br />
** US20150172050 (A1) ([https://www.google.com.ar/patents/US20150172050 Google Patents])<br />
** '''EP2884689''' (B1) ([https://patents.google.com/patent/EP2884689B1 Google Patents])<br />
<br />
==Patent applications (published)==<br />
<br />
===METHOD AND DEVICES FOR WIRELESS NETWORK ACCESS MANAGEMENT===<br />
* aka '''PROCEDE ET DISPOSITIFS DE GESTION DE L'ACCES A UN RESEAU SANS FILM'''<br />
* Inventeur: ERDMANN BOZENA (DE); NIKOV VENTZISLAV (BE); TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-03<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006129287&F=0 WO2006129287] (A1)<br />
<br />
===PROTECTED WIRELESS NETWORK ACCESS===<br />
* aka '''ACCES RESEAU SANS FIL PROTEGE'''<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-06<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131852&F=0 WO2006131852] (A1)<br />
<br />
===FURTIVE TIMED EXECUTION CONTROL===<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-09-19<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007034382A3&KC=A3&FT=D&ND=1&date=20090604&DB=&locale=en_EP WO2007034382] (A3) <br />
<br />
===METHOD AND APPARATUS FOR AUTHENTICATING STATIC DATA CARRIERS===<br />
* aka '''PROCÉDÉ ET APPAREIL D'AUTHENTIFICATION DE SUPPORTS DE DONNÉES STATIQUES'''<br />
* Inventor(s): Serret Avila; Javier (Brussels, BE, US) , Ton; Wim (Edinburgh, IE, US) , Teuwen; Philippe (Leuven, BE, US) , Tuyls; Pim Theo (Eindhoven, NL, US) , De Soete; Marijke G.C.S. (Oostkamp, BE, US) <br />
* Priority date Mar 21, 2006<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007107928A3&KC=A3&FT=D&ND=2&date=20071221&DB=EPODOC&locale=en_EP WO2007107928] (A3)<br />
** US20100161994 (A1) ([https://patents.google.com/patent/US20100161994 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1999751A2&KC=A2&FT=D EP1999751] (A2)([https://patents.google.com/patent/EP1999751A2 Google Patents])<br />
** CN101405805 [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200780010141&D1=appno 200780010141]<br />
** RU2008141690 (A)<br />
** JP2009530945 (A)<br />
<br />
===IMPROVED AUTHENTICATION SYSTEM===<br />
* Inventor(s): TEUWEN PHILIPPE [NL]; NIKOV VENTZISLAV [NL] +<br />
* Priority date Dec 3, 2009<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2336985A1&KC=A1&FT=D EP2336985] (A1)([https://patents.google.com/patent/EP2336985A1 Google Patents])<br />
<br />
===DIVERSIFYING CONTROL FLOW OF WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Wil Michiels, Jan Hoogerbrugge, Teuwen Philippe<br />
* Filing Date: May 29, 2015<br />
* Application No: 14/725801<br />
* Publications:<br />
** US20160253189 (A1) ([https://patents.google.com/patent/US20160350520 Google Patents])<br />
<br />
===FUZZY OPAQUE PREDICATES===<br />
* Inventor: Teuwen Philippe<br />
* Filing Date: June 26, 2015<br />
* Application No: 14/751606<br />
* Publications:<br />
** US20160379131 (A1) ([https://patents.google.com/patent/US20160379131 Google Patents])<br />
<br />
==Patent applications (not yet published)==<br />
<br />
==Search engines==<br />
* Full query<br />
** [http://accounts.ktmine.com/company/ipreport?q=TEUWEN%20PHILIPPE ktmine]<br />
** [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search freepatentsonline], [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22+APD%2F01%2F01%2F2014-%3ENOW&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search limited 2014-now]<br />
* Portals<br />
** [http://www.wipo.int/pctdb/en/ International Patent Applications]<br />
** [http://www.wipo.int/ipdl/en/resources/links.html Patent Databases in Different Countries]<br />
** [http://www.espacenet.com/ esp@cenet, Europe's network of patent databases] // [http://ep.espacenet.com/advancedSearch?locale=en_ep advanced search]<br />
** [http://www.uspto.gov/patft/index.html Unites States Patent and Trademark Office]<br />
** [http://www.google.com/patents Google patents]<br />
** [http://english.sipo.gov.cn/ China SIPO]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Patents&diff=10526Patents2021-05-28T08:45:12Z<p>PhilippeTeuwen: /* WIDE ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION */</p>
<hr />
<div>==Granted patents==<br />
Note: les traductions officielles en français, parfois loufoques, ne proviennent pas des auteurs...<br />
===SECURE PAIRING FOR WIRED OR WIRELESS COMMUNICATIONS DEVICES===<br />
* aka '''APPARIEMENT SECURISE POUR DISPOSITIFS DE COMMUNICATION FILAIRES OU SANS FIL'''<br />
* Inventor(s): Vauclair; Marc (Leuven, BE, US) , Serret Avila; Javier (Brussels, BE, US) , Etienne; Lionel Georges (Leuven, BE, US) , Teuwen; Philippe (Leuven, BE, US)<br />
* Priority date: Sep 8, 2004<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006027725&F=0 WO2006027725] (A1)<br />
** '''US8813188 (B2)''' ([https://www.google.com/patents/US8813188 Google Patents])<br />
** '''EP1792442 (B1)''' ([http://www.google.com/patents/EP1792442B1 Google Patents])<br />
** '''CN101015173 (B)'''<br />
** DE602005019589 (D1)<br />
** KR20070050057 (A)<br />
** JP2008512891 (A)<br />
** AT459158 (T)<br />
** '''TWI467978 (B)''' ??<br />
<br />
===METHOD AND DEVICE FOR INCREASED RFID TRANSMISSION SECURITY===<br />
* aka '''PROCEDE ET DISPOSITIF AMELIORANT LA SECURITE DE TRANSMISSION DES IDRF'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US) , Thueringer; Peter (Graz, AT, US)<br />
* Priority date Jun 7, 2005<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131861&F=0 WO2006131861] (A1)<br />
** '''US 8813188 (B2)''' ([http://www.google.com/patents/US8813188B2 Google Patents])<br />
** '''[http://v3.espacenet.com/publicationDetails/biblio?adjacent=true&KC=B1&date=20080305&NR=1894145A1&DB=EPODOC&locale=en_EP&CC=EP&FT=D EP1894145] (B1) ([http://www.google.com/patents/EP1894145B1 Google Patents])'''<br />
** '''CN101194274 (B)''' [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680020153&D1=appno 200680020153]<br />
** DE602006006055 (D1)<br />
** '''JP4739342 (B2)'''<br />
** AT427536 (T)<br />
** '''KR101270039 (B1)'''<br />
** '''TWI467978 (B)'''<br />
<br />
===WATERMARKING OF A PROCESSING MODULE===<br />
* aka '''FILIGRANAGE D'UN MODULE DE TRAITEMENT'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US)<br />
* Priority date Sep 30, 2005<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=US&NR=8209543B2&KC=B2&FT=D&ND=1&date=20120626&DB=&locale=en_EP WO2007036863] (A3)<br />
** '''US 8209543 (B2)''' ([http://www.google.com/patents/US8209543 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1934877A2&KC=A2&FT=D EP1934877] (A2)([http://www.google.com/patents/EP1934877A2 Google Patents])<br />
** CN101273365 (A) [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680035901&D1=appno 200680035901]<br />
** JP2009510880 (A)<br />
<br />
===METHOD OF OBFUSCATING A CODE===<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Aug 26, 2009<br />
* Publications:<br />
** '''US 9465926 (B2)''' ([https://www.google.com/patents/US9465926 Google Patents])<br />
** '''[http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2290547B1&KC=B1&FT=D EP2290547 (B1)]''' ([http://www.google.com/patents/EP2290547B1 Google Patents])<br />
** '''US 9965401 (B2)''' ([https://patents.google.com/patent/US9965401B2/en Google Patents])<br />
<br />
===CHALLENGE RESPONSE BASED ENROLLMENT OF PHYSICAL UNCLONABLE FUNCTIONS===<br />
* aka '''ENROLLMENT OF PHYSICALLY UNCLONABLE FUNCTIONS'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Nov 19, 2010<br />
* Publications:<br />
** '''US8694778 (B2)''' ([http://www.google.com/patents/US8694778 Google Patents])<br />
** '''EP2456121 (B1)''' ([http://www.google.com/patents/EP2456121B1 Google Patents])<br />
** '''CN102571748 (B)''' ([[https://www.google.com/patents/CN102571748B Google Patents])<br />
<br />
===ELECTRONIC COMPONENT WITH CONFIGURABLE FUNCTIONALITY===<br />
* aka '''ELECTRONIC COMPONENT'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE)<br />
* Priority date Nov 30, 2010<br />
* Publications:<br />
** '''US8990519 (B2)''' ([http://www.google.com/patents/US8990519 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2458522A1&KC=A1&FT=D EP2458522] (A1) ([http://www.google.com/patents/EP2458522A1 Google Patents])<br />
** '''CN102609558 (B)''' ([http://www.google.com/patents/CN102609558B Google Patents])<br />
<br />
===DIGITAL WALLET DEVICE FOR VIRTUAL WALLET===<br />
* Inventors: Teuwen Philippe; Colnot Cedric;<br />
* Priority date Dec 19, 2012 <br />
* Publications:<br />
** '''US 10147086B2 (B2)''' ([https://patents.google.com/patent/US10147086B2/en Google Patents])<br />
** EP2747015 (A3) ([https://www.google.be/patents/EP2747015A3 Google Patents])<br />
** CN103886455 (A) ([https://www.google.be/patents/CN103886455A Google Patents])<br />
<br />
===DIGITAL WALLET BRIDGE===<br />
* Inventors: Colnot Cedric; Teuwen Philippe<br />
* Priority date Apr 2,2013 <br />
* Publications:<br />
** '''US 10102522B2 (B2)''' ([https://patents.google.com/patent/US10102522B2/en Google Patents])<br />
** EP2787473 (A1) ([https://www.google.be/patents/EP2787473A1?cl=en Google Patents])<br />
<br />
===BINDING MOBILE DEVICE SECURE SOFTWARE COMPONENTS TO THE SIM===<br />
* Inventors: Peter Rombouts, Philippe Teuwen, Frank Michaud<br />
* Priority date: Dec 19, 2013 <br />
* Publications:<br />
** '''US 9264899 (B2)''' ([https://www.google.com/patents/US9264899 Google Patents])<br />
** '''US 9584514 (B2)''' ([https://patents.google.com/patent/US9584514B2/en Google Patents])<br />
** '''CN104731612 (B)''' ([https://www.google.com/patents/CN104731612A Google Patents])<br />
** '''EP2887610 (B1)''' ([https://www.google.com/patents/EP2887610B1 Google Patents])<br />
<br />
===METHOD OF GENERATING A STRUCTURE AND CORRESPONDING STRUCTURE===<br />
* Inventors: Colnot Vincent Cedric; Rombouts Peter; Teuwen Philippe; Michaud Frank<br />
* Priority Date: Nov 21, 2013<br />
* Publications:<br />
** '''US 9563754 (B2)''' ([https://www.google.com/patents/US9563754 Google Patents])<br />
** '''EP2876593 (B1)''' ([https://www.google.com/patents/EP2876593B1 Google Patents])<br />
** '''CN104657636 (B)''' ([https://www.google.com/patents/CN104657636B Google Patents])<br />
<br />
===RESTRICTING SOFTWARE TO AUTHORIZED WIRELESS ENVIRONMENTS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Priority Date: Dec 13, 2013<br />
* Publications:<br />
** '''US9693224 (B2)''' ([https://www.google.com/patents/US9693224 Google Patents])<br />
** '''EP2884786 (B1)''' ([https://www.google.com/patents/EP2884786B1 Google Patents])<br />
** '''CN104715192 (B)''' ([https://www.google.com/patents/CN104715192B Google Patents])<br />
<br />
===SECURE SOFTWARE COMPONENTS ANTI-REVERSE-ENGINEERING BY TABLE INTERLEAVING===<br />
* Inventors: Philippe Teuwen, Ventzislav Nikov, Peter Rombouts<br />
* Priority Date: Dec 26, 2013<br />
* Publications:<br />
** '''US 9576116 (B2)''' ([https://www.google.com/patents/US9576116 Google Patents])<br />
** '''EP2892175 (B1)''' ([https://patents.google.com/patent/EP2892175B1/en Google Patents])<br />
<br />
===FLEXIBLE URL SIGNATURE SCHEME FOR TAGS===<br />
* aka '''Flexible data authentication for an nfc data exchange format ndef message'''<br />
* aka '''Flexible data authentication '''<br />
* Inventors: Philippe Teuwen<br />
* Priority Date: Dec 31, 2013<br />
* Publications:<br />
** '''US 9419803 (B2)''' ([https://www.google.com/patents/US9419803 Google Patents])<br />
** '''EP2890172 (B1)''' ([https://www.google.com/patents/EP2890172B1 Google Patents])<br />
** '''CN104796257 (B)''' ([https://www.google.com/patents/CN104796257B Google Patents])<br />
<br />
===ONE-TIME PROGRAMMING IN REPROGRAMMABLE MEMORY===<br />
* Inventors: Marc Vauclair, Philippe Teuwen<br />
* Priority Date: March 14, 2014<br />
* Publications:<br />
** '''US 9823860 (B2)''' ([https://www.google.com/patents/US9823860B2 Google Patents])<br />
** EP2919236 (A1) ([https://www.google.com/patents/EP2919236A1 Google Patents])<br />
** '''CN104916321 (B)''' ([https://www.google.com/patents/CN104916321B Google Patents])<br />
<br />
===CONSTELLATION BASED DEVICE BINDING===<br />
* Inventors: Peter Rombouts, Frank Michaud, Philippe Teuwen<br />
* Priority Date: March 27, 2014<br />
* Publications:<br />
** '''US 9953144 (B2)''' ([https://www.google.com/patents/US9953144B2 Google Patents])<br />
** EP2924566 (A3) ([https://www.google.com/patents/EP2924566A3 Google Patents])<br />
** '''CN104951714 (B)''' ([https://www.google.com/patents/CN104951714B Google Patents])<br />
<br />
===CONTROL FLOW FLATTENING FOR CODE OBFUSCATION WHERE THE NEXT BLOCK CALCULATION NEEDS RUN-TIME INFORMATION===<br />
* Inventors: Jan Hoogerbrugge, Philippe Teuwen, Wil Michiels<br />
* Priority Date: April 23, 2014<br />
* Publications:<br />
** '''EP2937803 (B1)''' ([https://patents.google.com/patent/EP2937803B1/en Google Patents])<br />
<br />
===RETURN-ORIENTED PROGRAMMING AS AN OBFUSCATION TECHNIQUE===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Jan Brands, Jan Hoogerbrugge<br />
* Priority Date: May 6, 2014<br />
* Publications:<br />
** '''US 9411597 (B2)''' ([https://www.google.com/patents/US9411597 Google Patents])<br />
** '''EP2942727 (B1)''' ([https://patents.google.com/patent/EP2942727B1/en Google Patents])<br />
** '''CN105095697 (B)''' ([https://www.google.com/patents/CN105095697A Google Patents])<br />
<br />
===FLEXIBLE INSTRUCTION SETS FOR OBFUSCATED VIRTUAL MACHINES===<br />
* Inventors: Teuwen Philippe<br />
* Priority Date: Feb 26, 2015<br />
* Publications:<br />
** '''US 9501301 (B2)''' ([https://www.google.com/patents/US9501301 Google Patents])<br />
** '''EP3062256A1 (B1)''' ([https://patents.google.com/patent/EP3062256B1/en Google Patents])<br />
** '''CN105930694 (B)''' ([https://patents.google.com/patent/CN105930694B/en Google Patents])<br />
<br />
===ENCODING VALUES BY PSEUDO-RANDOM MASK===<br />
* Inventors: Michiels Wil, Hoogerbrugge Jan, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US 10097342 (B2)''' ([https://patents.google.com/patent/US10097342B2/en Google Patents])<br />
<br />
===WIDE ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Bos Joppe, Teuwen Philippe<br />
* Priority Date: December 16, 2015<br />
* Publications:<br />
** '''US 10171234''' (B2) ([https://patents.google.com/patent/US10171234B2 Google Patents])<br />
** '''EP3182637 (B1)''' ([https://patents.google.com/patent/EP3182637B1 Google Patents])<br />
** CN106888081 (A) ([https://patents.google.com/patent/CN106888081A Google Patents])<br />
<br />
===BALANCED ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US10700849B2''' (B2) ([https://www.google.com/patents/US10700849B2 Google Patents])<br />
** EP3125462 (A1) ([https://www.google.com/patents/EP3125462A1 Google Patents])<br />
<br />
===RANDOM DATA FROM GNSS SIGNALS AND SECURE RANDOM VALUE PROVISIONING FOR SECURE SOFTWARE COMPONENT IMPLEMENTATIONS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Filing Date: 12/13/2013(?)<br />
* Application no: 14/104772<br />
* Publications:<br />
** US20150172050 (A1) ([https://www.google.com.ar/patents/US20150172050 Google Patents])<br />
** '''EP2884689''' (B1) ([https://patents.google.com/patent/EP2884689B1 Google Patents])<br />
<br />
==Patent applications (published)==<br />
<br />
===METHOD AND DEVICES FOR WIRELESS NETWORK ACCESS MANAGEMENT===<br />
* aka '''PROCEDE ET DISPOSITIFS DE GESTION DE L'ACCES A UN RESEAU SANS FILM'''<br />
* Inventeur: ERDMANN BOZENA (DE); NIKOV VENTZISLAV (BE); TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-03<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006129287&F=0 WO2006129287] (A1)<br />
<br />
===PROTECTED WIRELESS NETWORK ACCESS===<br />
* aka '''ACCES RESEAU SANS FIL PROTEGE'''<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-06<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131852&F=0 WO2006131852] (A1)<br />
<br />
===FURTIVE TIMED EXECUTION CONTROL===<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-09-19<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007034382A3&KC=A3&FT=D&ND=1&date=20090604&DB=&locale=en_EP WO2007034382] (A3) <br />
<br />
===METHOD AND APPARATUS FOR AUTHENTICATING STATIC DATA CARRIERS===<br />
* aka '''PROCÉDÉ ET APPAREIL D'AUTHENTIFICATION DE SUPPORTS DE DONNÉES STATIQUES'''<br />
* Inventor(s): Serret Avila; Javier (Brussels, BE, US) , Ton; Wim (Edinburgh, IE, US) , Teuwen; Philippe (Leuven, BE, US) , Tuyls; Pim Theo (Eindhoven, NL, US) , De Soete; Marijke G.C.S. (Oostkamp, BE, US) <br />
* Priority date Mar 21, 2006<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007107928A3&KC=A3&FT=D&ND=2&date=20071221&DB=EPODOC&locale=en_EP WO2007107928] (A3)<br />
** US20100161994 (A1) ([http://www.google.com/patents/US20100161994 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1999751A2&KC=A2&FT=D EP1999751] (A2)([http://www.google.com/patents/EP1999751A2 Google Patents])<br />
** CN101405805 [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200780010141&D1=appno 200780010141]<br />
** RU2008141690 (A)<br />
** JP2009530945 (A)<br />
<br />
===IMPROVED AUTHENTICATION SYSTEM===<br />
* Inventor(s): TEUWEN PHILIPPE [NL]; NIKOV VENTZISLAV [NL] +<br />
* Priority date Dec 3, 2009<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2336985A1&KC=A1&FT=D EP2336985] (A1)([http://www.google.com/patents/EP2336985A1 Google Patents])<br />
<br />
===DIVERSIFYING CONTROL FLOW OF WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Wil Michiels, Jan Hoogerbrugge, Teuwen Philippe<br />
* Filing Date: May 29, 2015<br />
* Application No: 14/725801<br />
* Publications:<br />
** US20160253189 (A1) ([https://www.google.com/patents/US20160350520 Google Patents])<br />
<br />
===FUZZY OPAQUE PREDICATES===<br />
* Inventor: Teuwen Philippe<br />
* Filing Date: June 26, 2015<br />
* Application No: 14/751606<br />
* Publications:<br />
** US20160379131 (A1) ([https://www.google.com/patents/US20160379131 Google Patents])<br />
<br />
==Patent applications (not yet published)==<br />
<br />
==Search engines==<br />
* Full query<br />
** [http://accounts.ktmine.com/company/ipreport?q=TEUWEN%20PHILIPPE ktmine]<br />
** [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search freepatentsonline], [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22+APD%2F01%2F01%2F2014-%3ENOW&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search limited 2014-now]<br />
* Portals<br />
** [http://www.wipo.int/pctdb/en/ International Patent Applications]<br />
** [http://www.wipo.int/ipdl/en/resources/links.html Patent Databases in Different Countries]<br />
** [http://www.espacenet.com/ esp@cenet, Europe's network of patent databases] // [http://ep.espacenet.com/advancedSearch?locale=en_ep advanced search]<br />
** [http://www.uspto.gov/patft/index.html Unites States Patent and Trademark Office]<br />
** [http://www.google.com/patents Google patents]<br />
** [http://english.sipo.gov.cn/ China SIPO]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Patents&diff=10525Patents2021-05-28T08:43:39Z<p>PhilippeTeuwen: /* FLEXIBLE INSTRUCTION SETS FOR OBFUSCATED VIRTUAL MACHINES */</p>
<hr />
<div>==Granted patents==<br />
Note: les traductions officielles en français, parfois loufoques, ne proviennent pas des auteurs...<br />
===SECURE PAIRING FOR WIRED OR WIRELESS COMMUNICATIONS DEVICES===<br />
* aka '''APPARIEMENT SECURISE POUR DISPOSITIFS DE COMMUNICATION FILAIRES OU SANS FIL'''<br />
* Inventor(s): Vauclair; Marc (Leuven, BE, US) , Serret Avila; Javier (Brussels, BE, US) , Etienne; Lionel Georges (Leuven, BE, US) , Teuwen; Philippe (Leuven, BE, US)<br />
* Priority date: Sep 8, 2004<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006027725&F=0 WO2006027725] (A1)<br />
** '''US8813188 (B2)''' ([https://www.google.com/patents/US8813188 Google Patents])<br />
** '''EP1792442 (B1)''' ([http://www.google.com/patents/EP1792442B1 Google Patents])<br />
** '''CN101015173 (B)'''<br />
** DE602005019589 (D1)<br />
** KR20070050057 (A)<br />
** JP2008512891 (A)<br />
** AT459158 (T)<br />
** '''TWI467978 (B)''' ??<br />
<br />
===METHOD AND DEVICE FOR INCREASED RFID TRANSMISSION SECURITY===<br />
* aka '''PROCEDE ET DISPOSITIF AMELIORANT LA SECURITE DE TRANSMISSION DES IDRF'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US) , Thueringer; Peter (Graz, AT, US)<br />
* Priority date Jun 7, 2005<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131861&F=0 WO2006131861] (A1)<br />
** '''US 8813188 (B2)''' ([http://www.google.com/patents/US8813188B2 Google Patents])<br />
** '''[http://v3.espacenet.com/publicationDetails/biblio?adjacent=true&KC=B1&date=20080305&NR=1894145A1&DB=EPODOC&locale=en_EP&CC=EP&FT=D EP1894145] (B1) ([http://www.google.com/patents/EP1894145B1 Google Patents])'''<br />
** '''CN101194274 (B)''' [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680020153&D1=appno 200680020153]<br />
** DE602006006055 (D1)<br />
** '''JP4739342 (B2)'''<br />
** AT427536 (T)<br />
** '''KR101270039 (B1)'''<br />
** '''TWI467978 (B)'''<br />
<br />
===WATERMARKING OF A PROCESSING MODULE===<br />
* aka '''FILIGRANAGE D'UN MODULE DE TRAITEMENT'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US)<br />
* Priority date Sep 30, 2005<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=US&NR=8209543B2&KC=B2&FT=D&ND=1&date=20120626&DB=&locale=en_EP WO2007036863] (A3)<br />
** '''US 8209543 (B2)''' ([http://www.google.com/patents/US8209543 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1934877A2&KC=A2&FT=D EP1934877] (A2)([http://www.google.com/patents/EP1934877A2 Google Patents])<br />
** CN101273365 (A) [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680035901&D1=appno 200680035901]<br />
** JP2009510880 (A)<br />
<br />
===METHOD OF OBFUSCATING A CODE===<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Aug 26, 2009<br />
* Publications:<br />
** '''US 9465926 (B2)''' ([https://www.google.com/patents/US9465926 Google Patents])<br />
** '''[http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2290547B1&KC=B1&FT=D EP2290547 (B1)]''' ([http://www.google.com/patents/EP2290547B1 Google Patents])<br />
** '''US 9965401 (B2)''' ([https://patents.google.com/patent/US9965401B2/en Google Patents])<br />
<br />
===CHALLENGE RESPONSE BASED ENROLLMENT OF PHYSICAL UNCLONABLE FUNCTIONS===<br />
* aka '''ENROLLMENT OF PHYSICALLY UNCLONABLE FUNCTIONS'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Nov 19, 2010<br />
* Publications:<br />
** '''US8694778 (B2)''' ([http://www.google.com/patents/US8694778 Google Patents])<br />
** '''EP2456121 (B1)''' ([http://www.google.com/patents/EP2456121B1 Google Patents])<br />
** '''CN102571748 (B)''' ([[https://www.google.com/patents/CN102571748B Google Patents])<br />
<br />
===ELECTRONIC COMPONENT WITH CONFIGURABLE FUNCTIONALITY===<br />
* aka '''ELECTRONIC COMPONENT'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE)<br />
* Priority date Nov 30, 2010<br />
* Publications:<br />
** '''US8990519 (B2)''' ([http://www.google.com/patents/US8990519 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2458522A1&KC=A1&FT=D EP2458522] (A1) ([http://www.google.com/patents/EP2458522A1 Google Patents])<br />
** '''CN102609558 (B)''' ([http://www.google.com/patents/CN102609558B Google Patents])<br />
<br />
===DIGITAL WALLET DEVICE FOR VIRTUAL WALLET===<br />
* Inventors: Teuwen Philippe; Colnot Cedric;<br />
* Priority date Dec 19, 2012 <br />
* Publications:<br />
** '''US 10147086B2 (B2)''' ([https://patents.google.com/patent/US10147086B2/en Google Patents])<br />
** EP2747015 (A3) ([https://www.google.be/patents/EP2747015A3 Google Patents])<br />
** CN103886455 (A) ([https://www.google.be/patents/CN103886455A Google Patents])<br />
<br />
===DIGITAL WALLET BRIDGE===<br />
* Inventors: Colnot Cedric; Teuwen Philippe<br />
* Priority date Apr 2,2013 <br />
* Publications:<br />
** '''US 10102522B2 (B2)''' ([https://patents.google.com/patent/US10102522B2/en Google Patents])<br />
** EP2787473 (A1) ([https://www.google.be/patents/EP2787473A1?cl=en Google Patents])<br />
<br />
===BINDING MOBILE DEVICE SECURE SOFTWARE COMPONENTS TO THE SIM===<br />
* Inventors: Peter Rombouts, Philippe Teuwen, Frank Michaud<br />
* Priority date: Dec 19, 2013 <br />
* Publications:<br />
** '''US 9264899 (B2)''' ([https://www.google.com/patents/US9264899 Google Patents])<br />
** '''US 9584514 (B2)''' ([https://patents.google.com/patent/US9584514B2/en Google Patents])<br />
** '''CN104731612 (B)''' ([https://www.google.com/patents/CN104731612A Google Patents])<br />
** '''EP2887610 (B1)''' ([https://www.google.com/patents/EP2887610B1 Google Patents])<br />
<br />
===METHOD OF GENERATING A STRUCTURE AND CORRESPONDING STRUCTURE===<br />
* Inventors: Colnot Vincent Cedric; Rombouts Peter; Teuwen Philippe; Michaud Frank<br />
* Priority Date: Nov 21, 2013<br />
* Publications:<br />
** '''US 9563754 (B2)''' ([https://www.google.com/patents/US9563754 Google Patents])<br />
** '''EP2876593 (B1)''' ([https://www.google.com/patents/EP2876593B1 Google Patents])<br />
** '''CN104657636 (B)''' ([https://www.google.com/patents/CN104657636B Google Patents])<br />
<br />
===RESTRICTING SOFTWARE TO AUTHORIZED WIRELESS ENVIRONMENTS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Priority Date: Dec 13, 2013<br />
* Publications:<br />
** '''US9693224 (B2)''' ([https://www.google.com/patents/US9693224 Google Patents])<br />
** '''EP2884786 (B1)''' ([https://www.google.com/patents/EP2884786B1 Google Patents])<br />
** '''CN104715192 (B)''' ([https://www.google.com/patents/CN104715192B Google Patents])<br />
<br />
===SECURE SOFTWARE COMPONENTS ANTI-REVERSE-ENGINEERING BY TABLE INTERLEAVING===<br />
* Inventors: Philippe Teuwen, Ventzislav Nikov, Peter Rombouts<br />
* Priority Date: Dec 26, 2013<br />
* Publications:<br />
** '''US 9576116 (B2)''' ([https://www.google.com/patents/US9576116 Google Patents])<br />
** '''EP2892175 (B1)''' ([https://patents.google.com/patent/EP2892175B1/en Google Patents])<br />
<br />
===FLEXIBLE URL SIGNATURE SCHEME FOR TAGS===<br />
* aka '''Flexible data authentication for an nfc data exchange format ndef message'''<br />
* aka '''Flexible data authentication '''<br />
* Inventors: Philippe Teuwen<br />
* Priority Date: Dec 31, 2013<br />
* Publications:<br />
** '''US 9419803 (B2)''' ([https://www.google.com/patents/US9419803 Google Patents])<br />
** '''EP2890172 (B1)''' ([https://www.google.com/patents/EP2890172B1 Google Patents])<br />
** '''CN104796257 (B)''' ([https://www.google.com/patents/CN104796257B Google Patents])<br />
<br />
===ONE-TIME PROGRAMMING IN REPROGRAMMABLE MEMORY===<br />
* Inventors: Marc Vauclair, Philippe Teuwen<br />
* Priority Date: March 14, 2014<br />
* Publications:<br />
** '''US 9823860 (B2)''' ([https://www.google.com/patents/US9823860B2 Google Patents])<br />
** EP2919236 (A1) ([https://www.google.com/patents/EP2919236A1 Google Patents])<br />
** '''CN104916321 (B)''' ([https://www.google.com/patents/CN104916321B Google Patents])<br />
<br />
===CONSTELLATION BASED DEVICE BINDING===<br />
* Inventors: Peter Rombouts, Frank Michaud, Philippe Teuwen<br />
* Priority Date: March 27, 2014<br />
* Publications:<br />
** '''US 9953144 (B2)''' ([https://www.google.com/patents/US9953144B2 Google Patents])<br />
** EP2924566 (A3) ([https://www.google.com/patents/EP2924566A3 Google Patents])<br />
** '''CN104951714 (B)''' ([https://www.google.com/patents/CN104951714B Google Patents])<br />
<br />
===CONTROL FLOW FLATTENING FOR CODE OBFUSCATION WHERE THE NEXT BLOCK CALCULATION NEEDS RUN-TIME INFORMATION===<br />
* Inventors: Jan Hoogerbrugge, Philippe Teuwen, Wil Michiels<br />
* Priority Date: April 23, 2014<br />
* Publications:<br />
** '''EP2937803 (B1)''' ([https://patents.google.com/patent/EP2937803B1/en Google Patents])<br />
<br />
===RETURN-ORIENTED PROGRAMMING AS AN OBFUSCATION TECHNIQUE===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Jan Brands, Jan Hoogerbrugge<br />
* Priority Date: May 6, 2014<br />
* Publications:<br />
** '''US 9411597 (B2)''' ([https://www.google.com/patents/US9411597 Google Patents])<br />
** '''EP2942727 (B1)''' ([https://patents.google.com/patent/EP2942727B1/en Google Patents])<br />
** '''CN105095697 (B)''' ([https://www.google.com/patents/CN105095697A Google Patents])<br />
<br />
===FLEXIBLE INSTRUCTION SETS FOR OBFUSCATED VIRTUAL MACHINES===<br />
* Inventors: Teuwen Philippe<br />
* Priority Date: Feb 26, 2015<br />
* Publications:<br />
** '''US 9501301 (B2)''' ([https://www.google.com/patents/US9501301 Google Patents])<br />
** '''EP3062256A1 (B1)''' ([https://patents.google.com/patent/EP3062256B1/en Google Patents])<br />
** '''CN105930694 (B)''' ([https://patents.google.com/patent/CN105930694B/en Google Patents])<br />
<br />
===ENCODING VALUES BY PSEUDO-RANDOM MASK===<br />
* Inventors: Michiels Wil, Hoogerbrugge Jan, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US 10097342 (B2)''' ([https://patents.google.com/patent/US10097342B2/en Google Patents])<br />
<br />
===WIDE ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Bos Joppe, Teuwen Philippe<br />
* Priority Date: December 16, 2015<br />
* Publications:<br />
** '''US 10171234''' (B2) ([https://patents.google.com/patent/US10171234B2 Google Patents])<br />
** EP3182637 (A1) ([https://www.google.com/patents/EP3182637A1 Google Patents])<br />
** CN106888081 (A) ([https://www.google.com/patents/CN106888081A Google Patents])<br />
<br />
===BALANCED ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US10700849B2''' (B2) ([https://www.google.com/patents/US10700849B2 Google Patents])<br />
** EP3125462 (A1) ([https://www.google.com/patents/EP3125462A1 Google Patents])<br />
<br />
===RANDOM DATA FROM GNSS SIGNALS AND SECURE RANDOM VALUE PROVISIONING FOR SECURE SOFTWARE COMPONENT IMPLEMENTATIONS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Filing Date: 12/13/2013(?)<br />
* Application no: 14/104772<br />
* Publications:<br />
** US20150172050 (A1) ([https://www.google.com.ar/patents/US20150172050 Google Patents])<br />
** '''EP2884689''' (B1) ([https://patents.google.com/patent/EP2884689B1 Google Patents])<br />
<br />
==Patent applications (published)==<br />
<br />
===METHOD AND DEVICES FOR WIRELESS NETWORK ACCESS MANAGEMENT===<br />
* aka '''PROCEDE ET DISPOSITIFS DE GESTION DE L'ACCES A UN RESEAU SANS FILM'''<br />
* Inventeur: ERDMANN BOZENA (DE); NIKOV VENTZISLAV (BE); TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-03<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006129287&F=0 WO2006129287] (A1)<br />
<br />
===PROTECTED WIRELESS NETWORK ACCESS===<br />
* aka '''ACCES RESEAU SANS FIL PROTEGE'''<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-06<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131852&F=0 WO2006131852] (A1)<br />
<br />
===FURTIVE TIMED EXECUTION CONTROL===<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-09-19<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007034382A3&KC=A3&FT=D&ND=1&date=20090604&DB=&locale=en_EP WO2007034382] (A3) <br />
<br />
===METHOD AND APPARATUS FOR AUTHENTICATING STATIC DATA CARRIERS===<br />
* aka '''PROCÉDÉ ET APPAREIL D'AUTHENTIFICATION DE SUPPORTS DE DONNÉES STATIQUES'''<br />
* Inventor(s): Serret Avila; Javier (Brussels, BE, US) , Ton; Wim (Edinburgh, IE, US) , Teuwen; Philippe (Leuven, BE, US) , Tuyls; Pim Theo (Eindhoven, NL, US) , De Soete; Marijke G.C.S. (Oostkamp, BE, US) <br />
* Priority date Mar 21, 2006<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007107928A3&KC=A3&FT=D&ND=2&date=20071221&DB=EPODOC&locale=en_EP WO2007107928] (A3)<br />
** US20100161994 (A1) ([http://www.google.com/patents/US20100161994 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1999751A2&KC=A2&FT=D EP1999751] (A2)([http://www.google.com/patents/EP1999751A2 Google Patents])<br />
** CN101405805 [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200780010141&D1=appno 200780010141]<br />
** RU2008141690 (A)<br />
** JP2009530945 (A)<br />
<br />
===IMPROVED AUTHENTICATION SYSTEM===<br />
* Inventor(s): TEUWEN PHILIPPE [NL]; NIKOV VENTZISLAV [NL] +<br />
* Priority date Dec 3, 2009<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2336985A1&KC=A1&FT=D EP2336985] (A1)([http://www.google.com/patents/EP2336985A1 Google Patents])<br />
<br />
===DIVERSIFYING CONTROL FLOW OF WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Wil Michiels, Jan Hoogerbrugge, Teuwen Philippe<br />
* Filing Date: May 29, 2015<br />
* Application No: 14/725801<br />
* Publications:<br />
** US20160253189 (A1) ([https://www.google.com/patents/US20160350520 Google Patents])<br />
<br />
===FUZZY OPAQUE PREDICATES===<br />
* Inventor: Teuwen Philippe<br />
* Filing Date: June 26, 2015<br />
* Application No: 14/751606<br />
* Publications:<br />
** US20160379131 (A1) ([https://www.google.com/patents/US20160379131 Google Patents])<br />
<br />
==Patent applications (not yet published)==<br />
<br />
==Search engines==<br />
* Full query<br />
** [http://accounts.ktmine.com/company/ipreport?q=TEUWEN%20PHILIPPE ktmine]<br />
** [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search freepatentsonline], [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22+APD%2F01%2F01%2F2014-%3ENOW&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search limited 2014-now]<br />
* Portals<br />
** [http://www.wipo.int/pctdb/en/ International Patent Applications]<br />
** [http://www.wipo.int/ipdl/en/resources/links.html Patent Databases in Different Countries]<br />
** [http://www.espacenet.com/ esp@cenet, Europe's network of patent databases] // [http://ep.espacenet.com/advancedSearch?locale=en_ep advanced search]<br />
** [http://www.uspto.gov/patft/index.html Unites States Patent and Trademark Office]<br />
** [http://www.google.com/patents Google patents]<br />
** [http://english.sipo.gov.cn/ China SIPO]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Patents&diff=10524Patents2021-05-28T08:42:52Z<p>PhilippeTeuwen: /* RETURN-ORIENTED PROGRAMMING AS AN OBFUSCATION TECHNIQUE */</p>
<hr />
<div>==Granted patents==<br />
Note: les traductions officielles en français, parfois loufoques, ne proviennent pas des auteurs...<br />
===SECURE PAIRING FOR WIRED OR WIRELESS COMMUNICATIONS DEVICES===<br />
* aka '''APPARIEMENT SECURISE POUR DISPOSITIFS DE COMMUNICATION FILAIRES OU SANS FIL'''<br />
* Inventor(s): Vauclair; Marc (Leuven, BE, US) , Serret Avila; Javier (Brussels, BE, US) , Etienne; Lionel Georges (Leuven, BE, US) , Teuwen; Philippe (Leuven, BE, US)<br />
* Priority date: Sep 8, 2004<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006027725&F=0 WO2006027725] (A1)<br />
** '''US8813188 (B2)''' ([https://www.google.com/patents/US8813188 Google Patents])<br />
** '''EP1792442 (B1)''' ([http://www.google.com/patents/EP1792442B1 Google Patents])<br />
** '''CN101015173 (B)'''<br />
** DE602005019589 (D1)<br />
** KR20070050057 (A)<br />
** JP2008512891 (A)<br />
** AT459158 (T)<br />
** '''TWI467978 (B)''' ??<br />
<br />
===METHOD AND DEVICE FOR INCREASED RFID TRANSMISSION SECURITY===<br />
* aka '''PROCEDE ET DISPOSITIF AMELIORANT LA SECURITE DE TRANSMISSION DES IDRF'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US) , Thueringer; Peter (Graz, AT, US)<br />
* Priority date Jun 7, 2005<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131861&F=0 WO2006131861] (A1)<br />
** '''US 8813188 (B2)''' ([http://www.google.com/patents/US8813188B2 Google Patents])<br />
** '''[http://v3.espacenet.com/publicationDetails/biblio?adjacent=true&KC=B1&date=20080305&NR=1894145A1&DB=EPODOC&locale=en_EP&CC=EP&FT=D EP1894145] (B1) ([http://www.google.com/patents/EP1894145B1 Google Patents])'''<br />
** '''CN101194274 (B)''' [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680020153&D1=appno 200680020153]<br />
** DE602006006055 (D1)<br />
** '''JP4739342 (B2)'''<br />
** AT427536 (T)<br />
** '''KR101270039 (B1)'''<br />
** '''TWI467978 (B)'''<br />
<br />
===WATERMARKING OF A PROCESSING MODULE===<br />
* aka '''FILIGRANAGE D'UN MODULE DE TRAITEMENT'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US)<br />
* Priority date Sep 30, 2005<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=US&NR=8209543B2&KC=B2&FT=D&ND=1&date=20120626&DB=&locale=en_EP WO2007036863] (A3)<br />
** '''US 8209543 (B2)''' ([http://www.google.com/patents/US8209543 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1934877A2&KC=A2&FT=D EP1934877] (A2)([http://www.google.com/patents/EP1934877A2 Google Patents])<br />
** CN101273365 (A) [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680035901&D1=appno 200680035901]<br />
** JP2009510880 (A)<br />
<br />
===METHOD OF OBFUSCATING A CODE===<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Aug 26, 2009<br />
* Publications:<br />
** '''US 9465926 (B2)''' ([https://www.google.com/patents/US9465926 Google Patents])<br />
** '''[http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2290547B1&KC=B1&FT=D EP2290547 (B1)]''' ([http://www.google.com/patents/EP2290547B1 Google Patents])<br />
** '''US 9965401 (B2)''' ([https://patents.google.com/patent/US9965401B2/en Google Patents])<br />
<br />
===CHALLENGE RESPONSE BASED ENROLLMENT OF PHYSICAL UNCLONABLE FUNCTIONS===<br />
* aka '''ENROLLMENT OF PHYSICALLY UNCLONABLE FUNCTIONS'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Nov 19, 2010<br />
* Publications:<br />
** '''US8694778 (B2)''' ([http://www.google.com/patents/US8694778 Google Patents])<br />
** '''EP2456121 (B1)''' ([http://www.google.com/patents/EP2456121B1 Google Patents])<br />
** '''CN102571748 (B)''' ([[https://www.google.com/patents/CN102571748B Google Patents])<br />
<br />
===ELECTRONIC COMPONENT WITH CONFIGURABLE FUNCTIONALITY===<br />
* aka '''ELECTRONIC COMPONENT'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE)<br />
* Priority date Nov 30, 2010<br />
* Publications:<br />
** '''US8990519 (B2)''' ([http://www.google.com/patents/US8990519 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2458522A1&KC=A1&FT=D EP2458522] (A1) ([http://www.google.com/patents/EP2458522A1 Google Patents])<br />
** '''CN102609558 (B)''' ([http://www.google.com/patents/CN102609558B Google Patents])<br />
<br />
===DIGITAL WALLET DEVICE FOR VIRTUAL WALLET===<br />
* Inventors: Teuwen Philippe; Colnot Cedric;<br />
* Priority date Dec 19, 2012 <br />
* Publications:<br />
** '''US 10147086B2 (B2)''' ([https://patents.google.com/patent/US10147086B2/en Google Patents])<br />
** EP2747015 (A3) ([https://www.google.be/patents/EP2747015A3 Google Patents])<br />
** CN103886455 (A) ([https://www.google.be/patents/CN103886455A Google Patents])<br />
<br />
===DIGITAL WALLET BRIDGE===<br />
* Inventors: Colnot Cedric; Teuwen Philippe<br />
* Priority date Apr 2,2013 <br />
* Publications:<br />
** '''US 10102522B2 (B2)''' ([https://patents.google.com/patent/US10102522B2/en Google Patents])<br />
** EP2787473 (A1) ([https://www.google.be/patents/EP2787473A1?cl=en Google Patents])<br />
<br />
===BINDING MOBILE DEVICE SECURE SOFTWARE COMPONENTS TO THE SIM===<br />
* Inventors: Peter Rombouts, Philippe Teuwen, Frank Michaud<br />
* Priority date: Dec 19, 2013 <br />
* Publications:<br />
** '''US 9264899 (B2)''' ([https://www.google.com/patents/US9264899 Google Patents])<br />
** '''US 9584514 (B2)''' ([https://patents.google.com/patent/US9584514B2/en Google Patents])<br />
** '''CN104731612 (B)''' ([https://www.google.com/patents/CN104731612A Google Patents])<br />
** '''EP2887610 (B1)''' ([https://www.google.com/patents/EP2887610B1 Google Patents])<br />
<br />
===METHOD OF GENERATING A STRUCTURE AND CORRESPONDING STRUCTURE===<br />
* Inventors: Colnot Vincent Cedric; Rombouts Peter; Teuwen Philippe; Michaud Frank<br />
* Priority Date: Nov 21, 2013<br />
* Publications:<br />
** '''US 9563754 (B2)''' ([https://www.google.com/patents/US9563754 Google Patents])<br />
** '''EP2876593 (B1)''' ([https://www.google.com/patents/EP2876593B1 Google Patents])<br />
** '''CN104657636 (B)''' ([https://www.google.com/patents/CN104657636B Google Patents])<br />
<br />
===RESTRICTING SOFTWARE TO AUTHORIZED WIRELESS ENVIRONMENTS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Priority Date: Dec 13, 2013<br />
* Publications:<br />
** '''US9693224 (B2)''' ([https://www.google.com/patents/US9693224 Google Patents])<br />
** '''EP2884786 (B1)''' ([https://www.google.com/patents/EP2884786B1 Google Patents])<br />
** '''CN104715192 (B)''' ([https://www.google.com/patents/CN104715192B Google Patents])<br />
<br />
===SECURE SOFTWARE COMPONENTS ANTI-REVERSE-ENGINEERING BY TABLE INTERLEAVING===<br />
* Inventors: Philippe Teuwen, Ventzislav Nikov, Peter Rombouts<br />
* Priority Date: Dec 26, 2013<br />
* Publications:<br />
** '''US 9576116 (B2)''' ([https://www.google.com/patents/US9576116 Google Patents])<br />
** '''EP2892175 (B1)''' ([https://patents.google.com/patent/EP2892175B1/en Google Patents])<br />
<br />
===FLEXIBLE URL SIGNATURE SCHEME FOR TAGS===<br />
* aka '''Flexible data authentication for an nfc data exchange format ndef message'''<br />
* aka '''Flexible data authentication '''<br />
* Inventors: Philippe Teuwen<br />
* Priority Date: Dec 31, 2013<br />
* Publications:<br />
** '''US 9419803 (B2)''' ([https://www.google.com/patents/US9419803 Google Patents])<br />
** '''EP2890172 (B1)''' ([https://www.google.com/patents/EP2890172B1 Google Patents])<br />
** '''CN104796257 (B)''' ([https://www.google.com/patents/CN104796257B Google Patents])<br />
<br />
===ONE-TIME PROGRAMMING IN REPROGRAMMABLE MEMORY===<br />
* Inventors: Marc Vauclair, Philippe Teuwen<br />
* Priority Date: March 14, 2014<br />
* Publications:<br />
** '''US 9823860 (B2)''' ([https://www.google.com/patents/US9823860B2 Google Patents])<br />
** EP2919236 (A1) ([https://www.google.com/patents/EP2919236A1 Google Patents])<br />
** '''CN104916321 (B)''' ([https://www.google.com/patents/CN104916321B Google Patents])<br />
<br />
===CONSTELLATION BASED DEVICE BINDING===<br />
* Inventors: Peter Rombouts, Frank Michaud, Philippe Teuwen<br />
* Priority Date: March 27, 2014<br />
* Publications:<br />
** '''US 9953144 (B2)''' ([https://www.google.com/patents/US9953144B2 Google Patents])<br />
** EP2924566 (A3) ([https://www.google.com/patents/EP2924566A3 Google Patents])<br />
** '''CN104951714 (B)''' ([https://www.google.com/patents/CN104951714B Google Patents])<br />
<br />
===CONTROL FLOW FLATTENING FOR CODE OBFUSCATION WHERE THE NEXT BLOCK CALCULATION NEEDS RUN-TIME INFORMATION===<br />
* Inventors: Jan Hoogerbrugge, Philippe Teuwen, Wil Michiels<br />
* Priority Date: April 23, 2014<br />
* Publications:<br />
** '''EP2937803 (B1)''' ([https://patents.google.com/patent/EP2937803B1/en Google Patents])<br />
<br />
===RETURN-ORIENTED PROGRAMMING AS AN OBFUSCATION TECHNIQUE===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Jan Brands, Jan Hoogerbrugge<br />
* Priority Date: May 6, 2014<br />
* Publications:<br />
** '''US 9411597 (B2)''' ([https://www.google.com/patents/US9411597 Google Patents])<br />
** '''EP2942727 (B1)''' ([https://patents.google.com/patent/EP2942727B1/en Google Patents])<br />
** '''CN105095697 (B)''' ([https://www.google.com/patents/CN105095697A Google Patents])<br />
<br />
===FLEXIBLE INSTRUCTION SETS FOR OBFUSCATED VIRTUAL MACHINES===<br />
* Inventors: Teuwen Philippe<br />
* Priority Date: Feb 26, 2015<br />
* Publications:<br />
** '''US 9501301 (B2)''' ([https://www.google.com/patents/US9501301 Google Patents])<br />
** '''EP3062256A1 (B1)''' ([https://patents.google.com/patent/EP3062256B1/en Google Patents])<br />
** CN105930694 (A) ([https://www.google.com/patents/CN105930694 Google Patents])<br />
<br />
===ENCODING VALUES BY PSEUDO-RANDOM MASK===<br />
* Inventors: Michiels Wil, Hoogerbrugge Jan, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US 10097342 (B2)''' ([https://patents.google.com/patent/US10097342B2/en Google Patents])<br />
<br />
===WIDE ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Bos Joppe, Teuwen Philippe<br />
* Priority Date: December 16, 2015<br />
* Publications:<br />
** '''US 10171234''' (B2) ([https://patents.google.com/patent/US10171234B2 Google Patents])<br />
** EP3182637 (A1) ([https://www.google.com/patents/EP3182637A1 Google Patents])<br />
** CN106888081 (A) ([https://www.google.com/patents/CN106888081A Google Patents])<br />
<br />
===BALANCED ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US10700849B2''' (B2) ([https://www.google.com/patents/US10700849B2 Google Patents])<br />
** EP3125462 (A1) ([https://www.google.com/patents/EP3125462A1 Google Patents])<br />
<br />
===RANDOM DATA FROM GNSS SIGNALS AND SECURE RANDOM VALUE PROVISIONING FOR SECURE SOFTWARE COMPONENT IMPLEMENTATIONS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Filing Date: 12/13/2013(?)<br />
* Application no: 14/104772<br />
* Publications:<br />
** US20150172050 (A1) ([https://www.google.com.ar/patents/US20150172050 Google Patents])<br />
** '''EP2884689''' (B1) ([https://patents.google.com/patent/EP2884689B1 Google Patents])<br />
<br />
==Patent applications (published)==<br />
<br />
===METHOD AND DEVICES FOR WIRELESS NETWORK ACCESS MANAGEMENT===<br />
* aka '''PROCEDE ET DISPOSITIFS DE GESTION DE L'ACCES A UN RESEAU SANS FILM'''<br />
* Inventeur: ERDMANN BOZENA (DE); NIKOV VENTZISLAV (BE); TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-03<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006129287&F=0 WO2006129287] (A1)<br />
<br />
===PROTECTED WIRELESS NETWORK ACCESS===<br />
* aka '''ACCES RESEAU SANS FIL PROTEGE'''<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-06<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131852&F=0 WO2006131852] (A1)<br />
<br />
===FURTIVE TIMED EXECUTION CONTROL===<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-09-19<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007034382A3&KC=A3&FT=D&ND=1&date=20090604&DB=&locale=en_EP WO2007034382] (A3) <br />
<br />
===METHOD AND APPARATUS FOR AUTHENTICATING STATIC DATA CARRIERS===<br />
* aka '''PROCÉDÉ ET APPAREIL D'AUTHENTIFICATION DE SUPPORTS DE DONNÉES STATIQUES'''<br />
* Inventor(s): Serret Avila; Javier (Brussels, BE, US) , Ton; Wim (Edinburgh, IE, US) , Teuwen; Philippe (Leuven, BE, US) , Tuyls; Pim Theo (Eindhoven, NL, US) , De Soete; Marijke G.C.S. (Oostkamp, BE, US) <br />
* Priority date Mar 21, 2006<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007107928A3&KC=A3&FT=D&ND=2&date=20071221&DB=EPODOC&locale=en_EP WO2007107928] (A3)<br />
** US20100161994 (A1) ([http://www.google.com/patents/US20100161994 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1999751A2&KC=A2&FT=D EP1999751] (A2)([http://www.google.com/patents/EP1999751A2 Google Patents])<br />
** CN101405805 [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200780010141&D1=appno 200780010141]<br />
** RU2008141690 (A)<br />
** JP2009530945 (A)<br />
<br />
===IMPROVED AUTHENTICATION SYSTEM===<br />
* Inventor(s): TEUWEN PHILIPPE [NL]; NIKOV VENTZISLAV [NL] +<br />
* Priority date Dec 3, 2009<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2336985A1&KC=A1&FT=D EP2336985] (A1)([http://www.google.com/patents/EP2336985A1 Google Patents])<br />
<br />
===DIVERSIFYING CONTROL FLOW OF WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Wil Michiels, Jan Hoogerbrugge, Teuwen Philippe<br />
* Filing Date: May 29, 2015<br />
* Application No: 14/725801<br />
* Publications:<br />
** US20160253189 (A1) ([https://www.google.com/patents/US20160350520 Google Patents])<br />
<br />
===FUZZY OPAQUE PREDICATES===<br />
* Inventor: Teuwen Philippe<br />
* Filing Date: June 26, 2015<br />
* Application No: 14/751606<br />
* Publications:<br />
** US20160379131 (A1) ([https://www.google.com/patents/US20160379131 Google Patents])<br />
<br />
==Patent applications (not yet published)==<br />
<br />
==Search engines==<br />
* Full query<br />
** [http://accounts.ktmine.com/company/ipreport?q=TEUWEN%20PHILIPPE ktmine]<br />
** [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search freepatentsonline], [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22+APD%2F01%2F01%2F2014-%3ENOW&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search limited 2014-now]<br />
* Portals<br />
** [http://www.wipo.int/pctdb/en/ International Patent Applications]<br />
** [http://www.wipo.int/ipdl/en/resources/links.html Patent Databases in Different Countries]<br />
** [http://www.espacenet.com/ esp@cenet, Europe's network of patent databases] // [http://ep.espacenet.com/advancedSearch?locale=en_ep advanced search]<br />
** [http://www.uspto.gov/patft/index.html Unites States Patent and Trademark Office]<br />
** [http://www.google.com/patents Google patents]<br />
** [http://english.sipo.gov.cn/ China SIPO]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Patents&diff=10523Patents2021-05-28T08:41:50Z<p>PhilippeTeuwen: /* SECURE SOFTWARE COMPONENTS ANTI-REVERSE-ENGINEERING BY TABLE INTERLEAVING */</p>
<hr />
<div>==Granted patents==<br />
Note: les traductions officielles en français, parfois loufoques, ne proviennent pas des auteurs...<br />
===SECURE PAIRING FOR WIRED OR WIRELESS COMMUNICATIONS DEVICES===<br />
* aka '''APPARIEMENT SECURISE POUR DISPOSITIFS DE COMMUNICATION FILAIRES OU SANS FIL'''<br />
* Inventor(s): Vauclair; Marc (Leuven, BE, US) , Serret Avila; Javier (Brussels, BE, US) , Etienne; Lionel Georges (Leuven, BE, US) , Teuwen; Philippe (Leuven, BE, US)<br />
* Priority date: Sep 8, 2004<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006027725&F=0 WO2006027725] (A1)<br />
** '''US8813188 (B2)''' ([https://www.google.com/patents/US8813188 Google Patents])<br />
** '''EP1792442 (B1)''' ([http://www.google.com/patents/EP1792442B1 Google Patents])<br />
** '''CN101015173 (B)'''<br />
** DE602005019589 (D1)<br />
** KR20070050057 (A)<br />
** JP2008512891 (A)<br />
** AT459158 (T)<br />
** '''TWI467978 (B)''' ??<br />
<br />
===METHOD AND DEVICE FOR INCREASED RFID TRANSMISSION SECURITY===<br />
* aka '''PROCEDE ET DISPOSITIF AMELIORANT LA SECURITE DE TRANSMISSION DES IDRF'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US) , Thueringer; Peter (Graz, AT, US)<br />
* Priority date Jun 7, 2005<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131861&F=0 WO2006131861] (A1)<br />
** '''US 8813188 (B2)''' ([http://www.google.com/patents/US8813188B2 Google Patents])<br />
** '''[http://v3.espacenet.com/publicationDetails/biblio?adjacent=true&KC=B1&date=20080305&NR=1894145A1&DB=EPODOC&locale=en_EP&CC=EP&FT=D EP1894145] (B1) ([http://www.google.com/patents/EP1894145B1 Google Patents])'''<br />
** '''CN101194274 (B)''' [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680020153&D1=appno 200680020153]<br />
** DE602006006055 (D1)<br />
** '''JP4739342 (B2)'''<br />
** AT427536 (T)<br />
** '''KR101270039 (B1)'''<br />
** '''TWI467978 (B)'''<br />
<br />
===WATERMARKING OF A PROCESSING MODULE===<br />
* aka '''FILIGRANAGE D'UN MODULE DE TRAITEMENT'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US)<br />
* Priority date Sep 30, 2005<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=US&NR=8209543B2&KC=B2&FT=D&ND=1&date=20120626&DB=&locale=en_EP WO2007036863] (A3)<br />
** '''US 8209543 (B2)''' ([http://www.google.com/patents/US8209543 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1934877A2&KC=A2&FT=D EP1934877] (A2)([http://www.google.com/patents/EP1934877A2 Google Patents])<br />
** CN101273365 (A) [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680035901&D1=appno 200680035901]<br />
** JP2009510880 (A)<br />
<br />
===METHOD OF OBFUSCATING A CODE===<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Aug 26, 2009<br />
* Publications:<br />
** '''US 9465926 (B2)''' ([https://www.google.com/patents/US9465926 Google Patents])<br />
** '''[http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2290547B1&KC=B1&FT=D EP2290547 (B1)]''' ([http://www.google.com/patents/EP2290547B1 Google Patents])<br />
** '''US 9965401 (B2)''' ([https://patents.google.com/patent/US9965401B2/en Google Patents])<br />
<br />
===CHALLENGE RESPONSE BASED ENROLLMENT OF PHYSICAL UNCLONABLE FUNCTIONS===<br />
* aka '''ENROLLMENT OF PHYSICALLY UNCLONABLE FUNCTIONS'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Nov 19, 2010<br />
* Publications:<br />
** '''US8694778 (B2)''' ([http://www.google.com/patents/US8694778 Google Patents])<br />
** '''EP2456121 (B1)''' ([http://www.google.com/patents/EP2456121B1 Google Patents])<br />
** '''CN102571748 (B)''' ([[https://www.google.com/patents/CN102571748B Google Patents])<br />
<br />
===ELECTRONIC COMPONENT WITH CONFIGURABLE FUNCTIONALITY===<br />
* aka '''ELECTRONIC COMPONENT'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE)<br />
* Priority date Nov 30, 2010<br />
* Publications:<br />
** '''US8990519 (B2)''' ([http://www.google.com/patents/US8990519 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2458522A1&KC=A1&FT=D EP2458522] (A1) ([http://www.google.com/patents/EP2458522A1 Google Patents])<br />
** '''CN102609558 (B)''' ([http://www.google.com/patents/CN102609558B Google Patents])<br />
<br />
===DIGITAL WALLET DEVICE FOR VIRTUAL WALLET===<br />
* Inventors: Teuwen Philippe; Colnot Cedric;<br />
* Priority date Dec 19, 2012 <br />
* Publications:<br />
** '''US 10147086B2 (B2)''' ([https://patents.google.com/patent/US10147086B2/en Google Patents])<br />
** EP2747015 (A3) ([https://www.google.be/patents/EP2747015A3 Google Patents])<br />
** CN103886455 (A) ([https://www.google.be/patents/CN103886455A Google Patents])<br />
<br />
===DIGITAL WALLET BRIDGE===<br />
* Inventors: Colnot Cedric; Teuwen Philippe<br />
* Priority date Apr 2,2013 <br />
* Publications:<br />
** '''US 10102522B2 (B2)''' ([https://patents.google.com/patent/US10102522B2/en Google Patents])<br />
** EP2787473 (A1) ([https://www.google.be/patents/EP2787473A1?cl=en Google Patents])<br />
<br />
===BINDING MOBILE DEVICE SECURE SOFTWARE COMPONENTS TO THE SIM===<br />
* Inventors: Peter Rombouts, Philippe Teuwen, Frank Michaud<br />
* Priority date: Dec 19, 2013 <br />
* Publications:<br />
** '''US 9264899 (B2)''' ([https://www.google.com/patents/US9264899 Google Patents])<br />
** '''US 9584514 (B2)''' ([https://patents.google.com/patent/US9584514B2/en Google Patents])<br />
** '''CN104731612 (B)''' ([https://www.google.com/patents/CN104731612A Google Patents])<br />
** '''EP2887610 (B1)''' ([https://www.google.com/patents/EP2887610B1 Google Patents])<br />
<br />
===METHOD OF GENERATING A STRUCTURE AND CORRESPONDING STRUCTURE===<br />
* Inventors: Colnot Vincent Cedric; Rombouts Peter; Teuwen Philippe; Michaud Frank<br />
* Priority Date: Nov 21, 2013<br />
* Publications:<br />
** '''US 9563754 (B2)''' ([https://www.google.com/patents/US9563754 Google Patents])<br />
** '''EP2876593 (B1)''' ([https://www.google.com/patents/EP2876593B1 Google Patents])<br />
** '''CN104657636 (B)''' ([https://www.google.com/patents/CN104657636B Google Patents])<br />
<br />
===RESTRICTING SOFTWARE TO AUTHORIZED WIRELESS ENVIRONMENTS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Priority Date: Dec 13, 2013<br />
* Publications:<br />
** '''US9693224 (B2)''' ([https://www.google.com/patents/US9693224 Google Patents])<br />
** '''EP2884786 (B1)''' ([https://www.google.com/patents/EP2884786B1 Google Patents])<br />
** '''CN104715192 (B)''' ([https://www.google.com/patents/CN104715192B Google Patents])<br />
<br />
===SECURE SOFTWARE COMPONENTS ANTI-REVERSE-ENGINEERING BY TABLE INTERLEAVING===<br />
* Inventors: Philippe Teuwen, Ventzislav Nikov, Peter Rombouts<br />
* Priority Date: Dec 26, 2013<br />
* Publications:<br />
** '''US 9576116 (B2)''' ([https://www.google.com/patents/US9576116 Google Patents])<br />
** '''EP2892175 (B1)''' ([https://patents.google.com/patent/EP2892175B1/en Google Patents])<br />
<br />
===FLEXIBLE URL SIGNATURE SCHEME FOR TAGS===<br />
* aka '''Flexible data authentication for an nfc data exchange format ndef message'''<br />
* aka '''Flexible data authentication '''<br />
* Inventors: Philippe Teuwen<br />
* Priority Date: Dec 31, 2013<br />
* Publications:<br />
** '''US 9419803 (B2)''' ([https://www.google.com/patents/US9419803 Google Patents])<br />
** '''EP2890172 (B1)''' ([https://www.google.com/patents/EP2890172B1 Google Patents])<br />
** '''CN104796257 (B)''' ([https://www.google.com/patents/CN104796257B Google Patents])<br />
<br />
===ONE-TIME PROGRAMMING IN REPROGRAMMABLE MEMORY===<br />
* Inventors: Marc Vauclair, Philippe Teuwen<br />
* Priority Date: March 14, 2014<br />
* Publications:<br />
** '''US 9823860 (B2)''' ([https://www.google.com/patents/US9823860B2 Google Patents])<br />
** EP2919236 (A1) ([https://www.google.com/patents/EP2919236A1 Google Patents])<br />
** '''CN104916321 (B)''' ([https://www.google.com/patents/CN104916321B Google Patents])<br />
<br />
===CONSTELLATION BASED DEVICE BINDING===<br />
* Inventors: Peter Rombouts, Frank Michaud, Philippe Teuwen<br />
* Priority Date: March 27, 2014<br />
* Publications:<br />
** '''US 9953144 (B2)''' ([https://www.google.com/patents/US9953144B2 Google Patents])<br />
** EP2924566 (A3) ([https://www.google.com/patents/EP2924566A3 Google Patents])<br />
** '''CN104951714 (B)''' ([https://www.google.com/patents/CN104951714B Google Patents])<br />
<br />
===CONTROL FLOW FLATTENING FOR CODE OBFUSCATION WHERE THE NEXT BLOCK CALCULATION NEEDS RUN-TIME INFORMATION===<br />
* Inventors: Jan Hoogerbrugge, Philippe Teuwen, Wil Michiels<br />
* Priority Date: April 23, 2014<br />
* Publications:<br />
** '''EP2937803 (B1)''' ([https://patents.google.com/patent/EP2937803B1/en Google Patents])<br />
<br />
===RETURN-ORIENTED PROGRAMMING AS AN OBFUSCATION TECHNIQUE===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Jan Brands, Jan Hoogerbrugge<br />
* Priority Date: May 6, 2014<br />
* Publications:<br />
** '''US 9411597 (B2)''' ([https://www.google.com/patents/US9411597 Google Patents])<br />
** EP2942727 (A1) ([https://www.google.com/patents/EP2942727A1 Google Patents])<br />
** '''CN105095697 (B)''' ([https://www.google.com/patents/CN105095697A Google Patents])<br />
<br />
===FLEXIBLE INSTRUCTION SETS FOR OBFUSCATED VIRTUAL MACHINES===<br />
* Inventors: Teuwen Philippe<br />
* Priority Date: Feb 26, 2015<br />
* Publications:<br />
** '''US 9501301 (B2)''' ([https://www.google.com/patents/US9501301 Google Patents])<br />
** '''EP3062256A1 (B1)''' ([https://patents.google.com/patent/EP3062256B1/en Google Patents])<br />
** CN105930694 (A) ([https://www.google.com/patents/CN105930694 Google Patents])<br />
<br />
===ENCODING VALUES BY PSEUDO-RANDOM MASK===<br />
* Inventors: Michiels Wil, Hoogerbrugge Jan, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US 10097342 (B2)''' ([https://patents.google.com/patent/US10097342B2/en Google Patents])<br />
<br />
===WIDE ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Bos Joppe, Teuwen Philippe<br />
* Priority Date: December 16, 2015<br />
* Publications:<br />
** '''US 10171234''' (B2) ([https://patents.google.com/patent/US10171234B2 Google Patents])<br />
** EP3182637 (A1) ([https://www.google.com/patents/EP3182637A1 Google Patents])<br />
** CN106888081 (A) ([https://www.google.com/patents/CN106888081A Google Patents])<br />
<br />
===BALANCED ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US10700849B2''' (B2) ([https://www.google.com/patents/US10700849B2 Google Patents])<br />
** EP3125462 (A1) ([https://www.google.com/patents/EP3125462A1 Google Patents])<br />
<br />
===RANDOM DATA FROM GNSS SIGNALS AND SECURE RANDOM VALUE PROVISIONING FOR SECURE SOFTWARE COMPONENT IMPLEMENTATIONS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Filing Date: 12/13/2013(?)<br />
* Application no: 14/104772<br />
* Publications:<br />
** US20150172050 (A1) ([https://www.google.com.ar/patents/US20150172050 Google Patents])<br />
** '''EP2884689''' (B1) ([https://patents.google.com/patent/EP2884689B1 Google Patents])<br />
<br />
==Patent applications (published)==<br />
<br />
===METHOD AND DEVICES FOR WIRELESS NETWORK ACCESS MANAGEMENT===<br />
* aka '''PROCEDE ET DISPOSITIFS DE GESTION DE L'ACCES A UN RESEAU SANS FILM'''<br />
* Inventeur: ERDMANN BOZENA (DE); NIKOV VENTZISLAV (BE); TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-03<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006129287&F=0 WO2006129287] (A1)<br />
<br />
===PROTECTED WIRELESS NETWORK ACCESS===<br />
* aka '''ACCES RESEAU SANS FIL PROTEGE'''<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-06<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131852&F=0 WO2006131852] (A1)<br />
<br />
===FURTIVE TIMED EXECUTION CONTROL===<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-09-19<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007034382A3&KC=A3&FT=D&ND=1&date=20090604&DB=&locale=en_EP WO2007034382] (A3) <br />
<br />
===METHOD AND APPARATUS FOR AUTHENTICATING STATIC DATA CARRIERS===<br />
* aka '''PROCÉDÉ ET APPAREIL D'AUTHENTIFICATION DE SUPPORTS DE DONNÉES STATIQUES'''<br />
* Inventor(s): Serret Avila; Javier (Brussels, BE, US) , Ton; Wim (Edinburgh, IE, US) , Teuwen; Philippe (Leuven, BE, US) , Tuyls; Pim Theo (Eindhoven, NL, US) , De Soete; Marijke G.C.S. (Oostkamp, BE, US) <br />
* Priority date Mar 21, 2006<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007107928A3&KC=A3&FT=D&ND=2&date=20071221&DB=EPODOC&locale=en_EP WO2007107928] (A3)<br />
** US20100161994 (A1) ([http://www.google.com/patents/US20100161994 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1999751A2&KC=A2&FT=D EP1999751] (A2)([http://www.google.com/patents/EP1999751A2 Google Patents])<br />
** CN101405805 [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200780010141&D1=appno 200780010141]<br />
** RU2008141690 (A)<br />
** JP2009530945 (A)<br />
<br />
===IMPROVED AUTHENTICATION SYSTEM===<br />
* Inventor(s): TEUWEN PHILIPPE [NL]; NIKOV VENTZISLAV [NL] +<br />
* Priority date Dec 3, 2009<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2336985A1&KC=A1&FT=D EP2336985] (A1)([http://www.google.com/patents/EP2336985A1 Google Patents])<br />
<br />
===DIVERSIFYING CONTROL FLOW OF WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Wil Michiels, Jan Hoogerbrugge, Teuwen Philippe<br />
* Filing Date: May 29, 2015<br />
* Application No: 14/725801<br />
* Publications:<br />
** US20160253189 (A1) ([https://www.google.com/patents/US20160350520 Google Patents])<br />
<br />
===FUZZY OPAQUE PREDICATES===<br />
* Inventor: Teuwen Philippe<br />
* Filing Date: June 26, 2015<br />
* Application No: 14/751606<br />
* Publications:<br />
** US20160379131 (A1) ([https://www.google.com/patents/US20160379131 Google Patents])<br />
<br />
==Patent applications (not yet published)==<br />
<br />
==Search engines==<br />
* Full query<br />
** [http://accounts.ktmine.com/company/ipreport?q=TEUWEN%20PHILIPPE ktmine]<br />
** [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search freepatentsonline], [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22+APD%2F01%2F01%2F2014-%3ENOW&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search limited 2014-now]<br />
* Portals<br />
** [http://www.wipo.int/pctdb/en/ International Patent Applications]<br />
** [http://www.wipo.int/ipdl/en/resources/links.html Patent Databases in Different Countries]<br />
** [http://www.espacenet.com/ esp@cenet, Europe's network of patent databases] // [http://ep.espacenet.com/advancedSearch?locale=en_ep advanced search]<br />
** [http://www.uspto.gov/patft/index.html Unites States Patent and Trademark Office]<br />
** [http://www.google.com/patents Google patents]<br />
** [http://english.sipo.gov.cn/ China SIPO]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Patents&diff=10522Patents2021-05-28T08:37:58Z<p>PhilippeTeuwen: </p>
<hr />
<div>==Granted patents==<br />
Note: les traductions officielles en français, parfois loufoques, ne proviennent pas des auteurs...<br />
===SECURE PAIRING FOR WIRED OR WIRELESS COMMUNICATIONS DEVICES===<br />
* aka '''APPARIEMENT SECURISE POUR DISPOSITIFS DE COMMUNICATION FILAIRES OU SANS FIL'''<br />
* Inventor(s): Vauclair; Marc (Leuven, BE, US) , Serret Avila; Javier (Brussels, BE, US) , Etienne; Lionel Georges (Leuven, BE, US) , Teuwen; Philippe (Leuven, BE, US)<br />
* Priority date: Sep 8, 2004<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006027725&F=0 WO2006027725] (A1)<br />
** '''US8813188 (B2)''' ([https://www.google.com/patents/US8813188 Google Patents])<br />
** '''EP1792442 (B1)''' ([http://www.google.com/patents/EP1792442B1 Google Patents])<br />
** '''CN101015173 (B)'''<br />
** DE602005019589 (D1)<br />
** KR20070050057 (A)<br />
** JP2008512891 (A)<br />
** AT459158 (T)<br />
** '''TWI467978 (B)''' ??<br />
<br />
===METHOD AND DEVICE FOR INCREASED RFID TRANSMISSION SECURITY===<br />
* aka '''PROCEDE ET DISPOSITIF AMELIORANT LA SECURITE DE TRANSMISSION DES IDRF'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US) , Thueringer; Peter (Graz, AT, US)<br />
* Priority date Jun 7, 2005<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131861&F=0 WO2006131861] (A1)<br />
** '''US 8813188 (B2)''' ([http://www.google.com/patents/US8813188B2 Google Patents])<br />
** '''[http://v3.espacenet.com/publicationDetails/biblio?adjacent=true&KC=B1&date=20080305&NR=1894145A1&DB=EPODOC&locale=en_EP&CC=EP&FT=D EP1894145] (B1) ([http://www.google.com/patents/EP1894145B1 Google Patents])'''<br />
** '''CN101194274 (B)''' [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680020153&D1=appno 200680020153]<br />
** DE602006006055 (D1)<br />
** '''JP4739342 (B2)'''<br />
** AT427536 (T)<br />
** '''KR101270039 (B1)'''<br />
** '''TWI467978 (B)'''<br />
<br />
===WATERMARKING OF A PROCESSING MODULE===<br />
* aka '''FILIGRANAGE D'UN MODULE DE TRAITEMENT'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US)<br />
* Priority date Sep 30, 2005<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=US&NR=8209543B2&KC=B2&FT=D&ND=1&date=20120626&DB=&locale=en_EP WO2007036863] (A3)<br />
** '''US 8209543 (B2)''' ([http://www.google.com/patents/US8209543 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1934877A2&KC=A2&FT=D EP1934877] (A2)([http://www.google.com/patents/EP1934877A2 Google Patents])<br />
** CN101273365 (A) [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680035901&D1=appno 200680035901]<br />
** JP2009510880 (A)<br />
<br />
===METHOD OF OBFUSCATING A CODE===<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Aug 26, 2009<br />
* Publications:<br />
** '''US 9465926 (B2)''' ([https://www.google.com/patents/US9465926 Google Patents])<br />
** '''[http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2290547B1&KC=B1&FT=D EP2290547 (B1)]''' ([http://www.google.com/patents/EP2290547B1 Google Patents])<br />
** '''US 9965401 (B2)''' ([https://patents.google.com/patent/US9965401B2/en Google Patents])<br />
<br />
===CHALLENGE RESPONSE BASED ENROLLMENT OF PHYSICAL UNCLONABLE FUNCTIONS===<br />
* aka '''ENROLLMENT OF PHYSICALLY UNCLONABLE FUNCTIONS'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Nov 19, 2010<br />
* Publications:<br />
** '''US8694778 (B2)''' ([http://www.google.com/patents/US8694778 Google Patents])<br />
** '''EP2456121 (B1)''' ([http://www.google.com/patents/EP2456121B1 Google Patents])<br />
** '''CN102571748 (B)''' ([[https://www.google.com/patents/CN102571748B Google Patents])<br />
<br />
===ELECTRONIC COMPONENT WITH CONFIGURABLE FUNCTIONALITY===<br />
* aka '''ELECTRONIC COMPONENT'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE)<br />
* Priority date Nov 30, 2010<br />
* Publications:<br />
** '''US8990519 (B2)''' ([http://www.google.com/patents/US8990519 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2458522A1&KC=A1&FT=D EP2458522] (A1) ([http://www.google.com/patents/EP2458522A1 Google Patents])<br />
** '''CN102609558 (B)''' ([http://www.google.com/patents/CN102609558B Google Patents])<br />
<br />
===DIGITAL WALLET DEVICE FOR VIRTUAL WALLET===<br />
* Inventors: Teuwen Philippe; Colnot Cedric;<br />
* Priority date Dec 19, 2012 <br />
* Publications:<br />
** '''US 10147086B2 (B2)''' ([https://patents.google.com/patent/US10147086B2/en Google Patents])<br />
** EP2747015 (A3) ([https://www.google.be/patents/EP2747015A3 Google Patents])<br />
** CN103886455 (A) ([https://www.google.be/patents/CN103886455A Google Patents])<br />
<br />
===DIGITAL WALLET BRIDGE===<br />
* Inventors: Colnot Cedric; Teuwen Philippe<br />
* Priority date Apr 2,2013 <br />
* Publications:<br />
** '''US 10102522B2 (B2)''' ([https://patents.google.com/patent/US10102522B2/en Google Patents])<br />
** EP2787473 (A1) ([https://www.google.be/patents/EP2787473A1?cl=en Google Patents])<br />
<br />
===BINDING MOBILE DEVICE SECURE SOFTWARE COMPONENTS TO THE SIM===<br />
* Inventors: Peter Rombouts, Philippe Teuwen, Frank Michaud<br />
* Priority date: Dec 19, 2013 <br />
* Publications:<br />
** '''US 9264899 (B2)''' ([https://www.google.com/patents/US9264899 Google Patents])<br />
** '''US 9584514 (B2)''' ([https://patents.google.com/patent/US9584514B2/en Google Patents])<br />
** '''CN104731612 (B)''' ([https://www.google.com/patents/CN104731612A Google Patents])<br />
** '''EP2887610 (B1)''' ([https://www.google.com/patents/EP2887610B1 Google Patents])<br />
<br />
===METHOD OF GENERATING A STRUCTURE AND CORRESPONDING STRUCTURE===<br />
* Inventors: Colnot Vincent Cedric; Rombouts Peter; Teuwen Philippe; Michaud Frank<br />
* Priority Date: Nov 21, 2013<br />
* Publications:<br />
** '''US 9563754 (B2)''' ([https://www.google.com/patents/US9563754 Google Patents])<br />
** '''EP2876593 (B1)''' ([https://www.google.com/patents/EP2876593B1 Google Patents])<br />
** '''CN104657636 (B)''' ([https://www.google.com/patents/CN104657636B Google Patents])<br />
<br />
===RESTRICTING SOFTWARE TO AUTHORIZED WIRELESS ENVIRONMENTS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Priority Date: Dec 13, 2013<br />
* Publications:<br />
** '''US9693224 (B2)''' ([https://www.google.com/patents/US9693224 Google Patents])<br />
** '''EP2884786 (B1)''' ([https://www.google.com/patents/EP2884786B1 Google Patents])<br />
** '''CN104715192 (B)''' ([https://www.google.com/patents/CN104715192B Google Patents])<br />
<br />
===SECURE SOFTWARE COMPONENTS ANTI-REVERSE-ENGINEERING BY TABLE INTERLEAVING===<br />
* Inventors: Philippe Teuwen, Ventzislav Nikov, Peter Rombouts<br />
* Priority Date: Dec 26, 2013<br />
* Publications:<br />
** '''US 9576116 (B2)''' ([https://www.google.com/patents/US9576116 Google Patents])<br />
** EP2892175 (A1) ([https://www.google.com/patents/EP2892175A1 Google Patents])<br />
<br />
===FLEXIBLE URL SIGNATURE SCHEME FOR TAGS===<br />
* aka '''Flexible data authentication for an nfc data exchange format ndef message'''<br />
* aka '''Flexible data authentication '''<br />
* Inventors: Philippe Teuwen<br />
* Priority Date: Dec 31, 2013<br />
* Publications:<br />
** '''US 9419803 (B2)''' ([https://www.google.com/patents/US9419803 Google Patents])<br />
** '''EP2890172 (B1)''' ([https://www.google.com/patents/EP2890172B1 Google Patents])<br />
** '''CN104796257 (B)''' ([https://www.google.com/patents/CN104796257B Google Patents])<br />
<br />
===ONE-TIME PROGRAMMING IN REPROGRAMMABLE MEMORY===<br />
* Inventors: Marc Vauclair, Philippe Teuwen<br />
* Priority Date: March 14, 2014<br />
* Publications:<br />
** '''US 9823860 (B2)''' ([https://www.google.com/patents/US9823860B2 Google Patents])<br />
** EP2919236 (A1) ([https://www.google.com/patents/EP2919236A1 Google Patents])<br />
** '''CN104916321 (B)''' ([https://www.google.com/patents/CN104916321B Google Patents])<br />
<br />
===CONSTELLATION BASED DEVICE BINDING===<br />
* Inventors: Peter Rombouts, Frank Michaud, Philippe Teuwen<br />
* Priority Date: March 27, 2014<br />
* Publications:<br />
** '''US 9953144 (B2)''' ([https://www.google.com/patents/US9953144B2 Google Patents])<br />
** EP2924566 (A3) ([https://www.google.com/patents/EP2924566A3 Google Patents])<br />
** '''CN104951714 (B)''' ([https://www.google.com/patents/CN104951714B Google Patents])<br />
<br />
===CONTROL FLOW FLATTENING FOR CODE OBFUSCATION WHERE THE NEXT BLOCK CALCULATION NEEDS RUN-TIME INFORMATION===<br />
* Inventors: Jan Hoogerbrugge, Philippe Teuwen, Wil Michiels<br />
* Priority Date: April 23, 2014<br />
* Publications:<br />
** '''EP2937803 (B1)''' ([https://patents.google.com/patent/EP2937803B1/en Google Patents])<br />
<br />
===RETURN-ORIENTED PROGRAMMING AS AN OBFUSCATION TECHNIQUE===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Jan Brands, Jan Hoogerbrugge<br />
* Priority Date: May 6, 2014<br />
* Publications:<br />
** '''US 9411597 (B2)''' ([https://www.google.com/patents/US9411597 Google Patents])<br />
** EP2942727 (A1) ([https://www.google.com/patents/EP2942727A1 Google Patents])<br />
** '''CN105095697 (B)''' ([https://www.google.com/patents/CN105095697A Google Patents])<br />
<br />
===FLEXIBLE INSTRUCTION SETS FOR OBFUSCATED VIRTUAL MACHINES===<br />
* Inventors: Teuwen Philippe<br />
* Priority Date: Feb 26, 2015<br />
* Publications:<br />
** '''US 9501301 (B2)''' ([https://www.google.com/patents/US9501301 Google Patents])<br />
** '''EP3062256A1 (B1)''' ([https://patents.google.com/patent/EP3062256B1/en Google Patents])<br />
** CN105930694 (A) ([https://www.google.com/patents/CN105930694 Google Patents])<br />
<br />
===ENCODING VALUES BY PSEUDO-RANDOM MASK===<br />
* Inventors: Michiels Wil, Hoogerbrugge Jan, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US 10097342 (B2)''' ([https://patents.google.com/patent/US10097342B2/en Google Patents])<br />
<br />
===WIDE ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Bos Joppe, Teuwen Philippe<br />
* Priority Date: December 16, 2015<br />
* Publications:<br />
** '''US 10171234''' (B2) ([https://patents.google.com/patent/US10171234B2 Google Patents])<br />
** EP3182637 (A1) ([https://www.google.com/patents/EP3182637A1 Google Patents])<br />
** CN106888081 (A) ([https://www.google.com/patents/CN106888081A Google Patents])<br />
<br />
===BALANCED ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US10700849B2''' (B2) ([https://www.google.com/patents/US10700849B2 Google Patents])<br />
** EP3125462 (A1) ([https://www.google.com/patents/EP3125462A1 Google Patents])<br />
<br />
===RANDOM DATA FROM GNSS SIGNALS AND SECURE RANDOM VALUE PROVISIONING FOR SECURE SOFTWARE COMPONENT IMPLEMENTATIONS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Filing Date: 12/13/2013(?)<br />
* Application no: 14/104772<br />
* Publications:<br />
** US20150172050 (A1) ([https://www.google.com.ar/patents/US20150172050 Google Patents])<br />
** '''EP2884689''' (B1) ([https://patents.google.com/patent/EP2884689B1 Google Patents])<br />
<br />
==Patent applications (published)==<br />
<br />
===METHOD AND DEVICES FOR WIRELESS NETWORK ACCESS MANAGEMENT===<br />
* aka '''PROCEDE ET DISPOSITIFS DE GESTION DE L'ACCES A UN RESEAU SANS FILM'''<br />
* Inventeur: ERDMANN BOZENA (DE); NIKOV VENTZISLAV (BE); TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-03<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006129287&F=0 WO2006129287] (A1)<br />
<br />
===PROTECTED WIRELESS NETWORK ACCESS===<br />
* aka '''ACCES RESEAU SANS FIL PROTEGE'''<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-06<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131852&F=0 WO2006131852] (A1)<br />
<br />
===FURTIVE TIMED EXECUTION CONTROL===<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-09-19<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007034382A3&KC=A3&FT=D&ND=1&date=20090604&DB=&locale=en_EP WO2007034382] (A3) <br />
<br />
===METHOD AND APPARATUS FOR AUTHENTICATING STATIC DATA CARRIERS===<br />
* aka '''PROCÉDÉ ET APPAREIL D'AUTHENTIFICATION DE SUPPORTS DE DONNÉES STATIQUES'''<br />
* Inventor(s): Serret Avila; Javier (Brussels, BE, US) , Ton; Wim (Edinburgh, IE, US) , Teuwen; Philippe (Leuven, BE, US) , Tuyls; Pim Theo (Eindhoven, NL, US) , De Soete; Marijke G.C.S. (Oostkamp, BE, US) <br />
* Priority date Mar 21, 2006<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007107928A3&KC=A3&FT=D&ND=2&date=20071221&DB=EPODOC&locale=en_EP WO2007107928] (A3)<br />
** US20100161994 (A1) ([http://www.google.com/patents/US20100161994 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1999751A2&KC=A2&FT=D EP1999751] (A2)([http://www.google.com/patents/EP1999751A2 Google Patents])<br />
** CN101405805 [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200780010141&D1=appno 200780010141]<br />
** RU2008141690 (A)<br />
** JP2009530945 (A)<br />
<br />
===IMPROVED AUTHENTICATION SYSTEM===<br />
* Inventor(s): TEUWEN PHILIPPE [NL]; NIKOV VENTZISLAV [NL] +<br />
* Priority date Dec 3, 2009<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2336985A1&KC=A1&FT=D EP2336985] (A1)([http://www.google.com/patents/EP2336985A1 Google Patents])<br />
<br />
===DIVERSIFYING CONTROL FLOW OF WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Wil Michiels, Jan Hoogerbrugge, Teuwen Philippe<br />
* Filing Date: May 29, 2015<br />
* Application No: 14/725801<br />
* Publications:<br />
** US20160253189 (A1) ([https://www.google.com/patents/US20160350520 Google Patents])<br />
<br />
===FUZZY OPAQUE PREDICATES===<br />
* Inventor: Teuwen Philippe<br />
* Filing Date: June 26, 2015<br />
* Application No: 14/751606<br />
* Publications:<br />
** US20160379131 (A1) ([https://www.google.com/patents/US20160379131 Google Patents])<br />
<br />
==Patent applications (not yet published)==<br />
<br />
==Search engines==<br />
* Full query<br />
** [http://accounts.ktmine.com/company/ipreport?q=TEUWEN%20PHILIPPE ktmine]<br />
** [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search freepatentsonline], [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22+APD%2F01%2F01%2F2014-%3ENOW&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search limited 2014-now]<br />
* Portals<br />
** [http://www.wipo.int/pctdb/en/ International Patent Applications]<br />
** [http://www.wipo.int/ipdl/en/resources/links.html Patent Databases in Different Countries]<br />
** [http://www.espacenet.com/ esp@cenet, Europe's network of patent databases] // [http://ep.espacenet.com/advancedSearch?locale=en_ep advanced search]<br />
** [http://www.uspto.gov/patft/index.html Unites States Patent and Trademark Office]<br />
** [http://www.google.com/patents Google patents]<br />
** [http://english.sipo.gov.cn/ China SIPO]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Patents&diff=10521Patents2021-03-20T11:24:12Z<p>PhilippeTeuwen: </p>
<hr />
<div>==Granted patents==<br />
Note: les traductions officielles en français, parfois loufoques, ne proviennent pas des auteurs...<br />
===SECURE PAIRING FOR WIRED OR WIRELESS COMMUNICATIONS DEVICES===<br />
* aka '''APPARIEMENT SECURISE POUR DISPOSITIFS DE COMMUNICATION FILAIRES OU SANS FIL'''<br />
* Inventor(s): Vauclair; Marc (Leuven, BE, US) , Serret Avila; Javier (Brussels, BE, US) , Etienne; Lionel Georges (Leuven, BE, US) , Teuwen; Philippe (Leuven, BE, US)<br />
* Priority date: Sep 8, 2004<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006027725&F=0 WO2006027725] (A1)<br />
** '''US8813188 (B2)''' ([https://www.google.com/patents/US8813188 Google Patents])<br />
** '''EP1792442 (B1)''' ([http://www.google.com/patents/EP1792442B1 Google Patents])<br />
** '''CN101015173 (B)'''<br />
** DE602005019589 (D1)<br />
** KR20070050057 (A)<br />
** JP2008512891 (A)<br />
** AT459158 (T)<br />
** '''TWI467978 (B)''' ??<br />
<br />
===METHOD AND DEVICE FOR INCREASED RFID TRANSMISSION SECURITY===<br />
* aka '''PROCEDE ET DISPOSITIF AMELIORANT LA SECURITE DE TRANSMISSION DES IDRF'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US) , Thueringer; Peter (Graz, AT, US)<br />
* Priority date Jun 7, 2005<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131861&F=0 WO2006131861] (A1)<br />
** '''US 8813188 (B2)''' ([http://www.google.com/patents/US8813188B2 Google Patents])<br />
** '''[http://v3.espacenet.com/publicationDetails/biblio?adjacent=true&KC=B1&date=20080305&NR=1894145A1&DB=EPODOC&locale=en_EP&CC=EP&FT=D EP1894145] (B1) ([http://www.google.com/patents/EP1894145B1 Google Patents])'''<br />
** '''CN101194274 (B)''' [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680020153&D1=appno 200680020153]<br />
** DE602006006055 (D1)<br />
** '''JP4739342 (B2)'''<br />
** AT427536 (T)<br />
** '''KR101270039 (B1)'''<br />
** '''TWI467978 (B)'''<br />
<br />
===WATERMARKING OF A PROCESSING MODULE===<br />
* aka '''FILIGRANAGE D'UN MODULE DE TRAITEMENT'''<br />
* Inventor(s): Teuwen; Philippe (Ixelles, BE, US)<br />
* Priority date Sep 30, 2005<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=US&NR=8209543B2&KC=B2&FT=D&ND=1&date=20120626&DB=&locale=en_EP WO2007036863] (A3)<br />
** '''US 8209543 (B2)''' ([http://www.google.com/patents/US8209543 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1934877A2&KC=A2&FT=D EP1934877] (A2)([http://www.google.com/patents/EP1934877A2 Google Patents])<br />
** CN101273365 (A) [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200680035901&D1=appno 200680035901]<br />
** JP2009510880 (A)<br />
<br />
===METHOD OF OBFUSCATING A CODE===<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Aug 26, 2009<br />
* Publications:<br />
** '''US 9465926 (B2)''' ([https://www.google.com/patents/US9465926 Google Patents])<br />
** '''[http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2290547B1&KC=B1&FT=D EP2290547 (B1)]''' ([http://www.google.com/patents/EP2290547B1 Google Patents])<br />
** '''US 9965401 (B2)''' ([https://patents.google.com/patent/US9965401B2/en Google Patents])<br />
<br />
===CHALLENGE RESPONSE BASED ENROLLMENT OF PHYSICAL UNCLONABLE FUNCTIONS===<br />
* aka '''ENROLLMENT OF PHYSICALLY UNCLONABLE FUNCTIONS'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE) ; Nikov; Ventzislav; (Haasrode, BE)<br />
* Priority date Nov 19, 2010<br />
* Publications:<br />
** '''US8694778 (B2)''' ([http://www.google.com/patents/US8694778 Google Patents])<br />
** '''EP2456121 (B1)''' ([http://www.google.com/patents/EP2456121B1 Google Patents])<br />
** '''CN102571748 (B)''' ([[https://www.google.com/patents/CN102571748B Google Patents])<br />
<br />
===ELECTRONIC COMPONENT WITH CONFIGURABLE FUNCTIONALITY===<br />
* aka '''ELECTRONIC COMPONENT'''<br />
* Inventors: Teuwen; Philippe; (Ixelles, BE)<br />
* Priority date Nov 30, 2010<br />
* Publications:<br />
** '''US8990519 (B2)''' ([http://www.google.com/patents/US8990519 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2458522A1&KC=A1&FT=D EP2458522] (A1) ([http://www.google.com/patents/EP2458522A1 Google Patents])<br />
** '''CN102609558 (B)''' ([http://www.google.com/patents/CN102609558B Google Patents])<br />
<br />
===DIGITAL WALLET DEVICE FOR VIRTUAL WALLET===<br />
* Inventors: Teuwen Philippe; Colnot Cedric;<br />
* Priority date Dec 19, 2012 <br />
* Publications:<br />
** '''US 10147086B2 (B2)''' ([https://patents.google.com/patent/US10147086B2/en Google Patents])<br />
** EP2747015 (A3) ([https://www.google.be/patents/EP2747015A3 Google Patents])<br />
** CN103886455 (A) ([https://www.google.be/patents/CN103886455A Google Patents])<br />
<br />
===DIGITAL WALLET BRIDGE===<br />
* Inventors: Colnot Cedric; Teuwen Philippe<br />
* Priority date Apr 2,2013 <br />
* Publications:<br />
** '''US 10102522B2 (B2)''' ([https://patents.google.com/patent/US10102522B2/en Google Patents])<br />
** EP2787473 (A1) ([https://www.google.be/patents/EP2787473A1?cl=en Google Patents])<br />
<br />
===BINDING MOBILE DEVICE SECURE SOFTWARE COMPONENTS TO THE SIM===<br />
* Inventors: Peter Rombouts, Philippe Teuwen, Frank Michaud<br />
* Priority date: Dec 19, 2013 <br />
* Publications:<br />
** '''US 9264899 (B2)''' ([https://www.google.com/patents/US9264899 Google Patents])<br />
** '''US 9584514 (B2)''' ([https://patents.google.com/patent/US9584514B2/en Google Patents])<br />
** '''CN104731612 (B)''' ([https://www.google.com/patents/CN104731612A Google Patents])<br />
** '''EP2887610 (B1)''' ([https://www.google.com/patents/EP2887610B1 Google Patents])<br />
<br />
===METHOD OF GENERATING A STRUCTURE AND CORRESPONDING STRUCTURE===<br />
* Inventors: Colnot Vincent Cedric; Rombouts Peter; Teuwen Philippe; Michaud Frank<br />
* Priority Date: Nov 21, 2013<br />
* Publications:<br />
** '''US 9563754 (B2)''' ([https://www.google.com/patents/US9563754 Google Patents])<br />
** '''EP2876593 (B1)''' ([https://www.google.com/patents/EP2876593B1 Google Patents])<br />
** '''CN104657636 (B)''' ([https://www.google.com/patents/CN104657636B Google Patents])<br />
<br />
===RESTRICTING SOFTWARE TO AUTHORIZED WIRELESS ENVIRONMENTS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Priority Date: Dec 13, 2013<br />
* Publications:<br />
** '''US9693224 (B2)''' ([https://www.google.com/patents/US9693224 Google Patents])<br />
** '''EP2884786 (B1)''' ([https://www.google.com/patents/EP2884786B1 Google Patents])<br />
** '''CN104715192 (B)''' ([https://www.google.com/patents/CN104715192B Google Patents])<br />
<br />
===SECURE SOFTWARE COMPONENTS ANTI-REVERSE-ENGINEERING BY TABLE INTERLEAVING===<br />
* Inventors: Philippe Teuwen, Ventzislav Nikov, Peter Rombouts<br />
* Priority Date: Dec 26, 2013<br />
* Publications:<br />
** '''US 9576116 (B2)''' ([https://www.google.com/patents/US9576116 Google Patents])<br />
** EP2892175 (A1) ([https://www.google.com/patents/EP2892175A1 Google Patents])<br />
<br />
===FLEXIBLE URL SIGNATURE SCHEME FOR TAGS===<br />
* aka '''Flexible data authentication for an nfc data exchange format ndef message'''<br />
* aka '''Flexible data authentication '''<br />
* Inventors: Philippe Teuwen<br />
* Priority Date: Dec 31, 2013<br />
* Publications:<br />
** '''US 9419803 (B2)''' ([https://www.google.com/patents/US9419803 Google Patents])<br />
** '''EP2890172 (B1)''' ([https://www.google.com/patents/EP2890172B1 Google Patents])<br />
** '''CN104796257 (B)''' ([https://www.google.com/patents/CN104796257B Google Patents])<br />
<br />
===ONE-TIME PROGRAMMING IN REPROGRAMMABLE MEMORY===<br />
* Inventors: Marc Vauclair, Philippe Teuwen<br />
* Priority Date: March 14, 2014<br />
* Publications:<br />
** '''US 9823860 (B2)''' ([https://www.google.com/patents/US9823860B2 Google Patents])<br />
** EP2919236 (A1) ([https://www.google.com/patents/EP2919236A1 Google Patents])<br />
** '''CN104916321 (B)''' ([https://www.google.com/patents/CN104916321B Google Patents])<br />
<br />
===CONSTELLATION BASED DEVICE BINDING===<br />
* Inventors: Peter Rombouts, Frank Michaud, Philippe Teuwen<br />
* Priority Date: March 27, 2014<br />
* Publications:<br />
** '''US 9953144 (B2)''' ([https://www.google.com/patents/US9953144B2 Google Patents])<br />
** EP2924566 (A3) ([https://www.google.com/patents/EP2924566A3 Google Patents])<br />
** '''CN104951714 (B)''' ([https://www.google.com/patents/CN104951714B Google Patents])<br />
<br />
===CONTROL FLOW FLATTENING FOR CODE OBFUSCATION WHERE THE NEXT BLOCK CALCULATION NEEDS RUN-TIME INFORMATION===<br />
* Inventors: Jan Hoogerbrugge, Philippe Teuwen, Wil Michiels<br />
* Priority Date: April 23, 2014<br />
* Publications:<br />
** '''EP2937803 (B1)''' ([https://patents.google.com/patent/EP2937803B1/en Google Patents])<br />
<br />
===RETURN-ORIENTED PROGRAMMING AS AN OBFUSCATION TECHNIQUE===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Jan Brands, Jan Hoogerbrugge<br />
* Priority Date: May 6, 2014<br />
* Publications:<br />
** '''US 9411597 (B2)''' ([https://www.google.com/patents/US9411597 Google Patents])<br />
** EP2942727 (A1) ([https://www.google.com/patents/EP2942727A1 Google Patents])<br />
** '''CN105095697 (B)''' ([https://www.google.com/patents/CN105095697A Google Patents])<br />
<br />
===FLEXIBLE INSTRUCTION SETS FOR OBFUSCATED VIRTUAL MACHINES===<br />
* Inventors: Teuwen Philippe<br />
* Priority Date: Feb 26, 2015<br />
* Publications:<br />
** '''US 9501301 (B2)''' ([https://www.google.com/patents/US9501301 Google Patents])<br />
** '''EP3062256A1 (B1)''' ([https://patents.google.com/patent/EP3062256B1/en Google Patents])<br />
** CN105930694 (A) ([https://www.google.com/patents/CN105930694 Google Patents])<br />
<br />
===ENCODING VALUES BY PSEUDO-RANDOM MASK===<br />
* Inventors: Michiels Wil, Hoogerbrugge Jan, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US 10097342 (B2)''' ([https://patents.google.com/patent/US10097342B2/en Google Patents])<br />
<br />
===WIDE ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Bos Joppe, Teuwen Philippe<br />
* Priority Date: December 16, 2015<br />
* Publications:<br />
** '''US 10171234''' (B2) ([https://patents.google.com/patent/US10171234B2 Google Patents])<br />
** EP3182637 (A1) ([https://www.google.com/patents/EP3182637A1 Google Patents])<br />
** CN106888081 (A) ([https://www.google.com/patents/CN106888081A Google Patents])<br />
<br />
===BALANCED ENCODING OF INTERMEDIATE VALUES WITHIN A WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Michiels Wil, Teuwen Philippe<br />
* Priority Date: July 30, 2015<br />
* Publications:<br />
** '''US10700849B2''' (B2) ([https://www.google.com/patents/US10700849B2 Google Patents])<br />
** EP3125462 (A1) ([https://www.google.com/patents/EP3125462A1 Google Patents])<br />
<br />
==Patent applications (published)==<br />
<br />
===METHOD AND DEVICES FOR WIRELESS NETWORK ACCESS MANAGEMENT===<br />
* aka '''PROCEDE ET DISPOSITIFS DE GESTION DE L'ACCES A UN RESEAU SANS FILM'''<br />
* Inventeur: ERDMANN BOZENA (DE); NIKOV VENTZISLAV (BE); TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-03<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006129287&F=0 WO2006129287] (A1)<br />
<br />
===PROTECTED WIRELESS NETWORK ACCESS===<br />
* aka '''ACCES RESEAU SANS FIL PROTEGE'''<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-06-06<br />
* Publications:<br />
** [http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=WO2006131852&F=0 WO2006131852] (A1)<br />
<br />
===FURTIVE TIMED EXECUTION CONTROL===<br />
* Inventeur: TEUWEN PHILIPPE (BE)<br />
* Priority date: 2005-09-19<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007034382A3&KC=A3&FT=D&ND=1&date=20090604&DB=&locale=en_EP WO2007034382] (A3) <br />
<br />
===METHOD AND APPARATUS FOR AUTHENTICATING STATIC DATA CARRIERS===<br />
* aka '''PROCÉDÉ ET APPAREIL D'AUTHENTIFICATION DE SUPPORTS DE DONNÉES STATIQUES'''<br />
* Inventor(s): Serret Avila; Javier (Brussels, BE, US) , Ton; Wim (Edinburgh, IE, US) , Teuwen; Philippe (Leuven, BE, US) , Tuyls; Pim Theo (Eindhoven, NL, US) , De Soete; Marijke G.C.S. (Oostkamp, BE, US) <br />
* Priority date Mar 21, 2006<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=WO&NR=2007107928A3&KC=A3&FT=D&ND=2&date=20071221&DB=EPODOC&locale=en_EP WO2007107928] (A3)<br />
** US20100161994 (A1) ([http://www.google.com/patents/US20100161994 Google Patents])<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=1999751A2&KC=A2&FT=D EP1999751] (A2)([http://www.google.com/patents/EP1999751A2 Google Patents])<br />
** CN101405805 [http://59.151.93.237/sipo_EN/search/quickSearch.do?method=search&T1=200780010141&D1=appno 200780010141]<br />
** RU2008141690 (A)<br />
** JP2009530945 (A)<br />
<br />
===IMPROVED AUTHENTICATION SYSTEM===<br />
* Inventor(s): TEUWEN PHILIPPE [NL]; NIKOV VENTZISLAV [NL] +<br />
* Priority date Dec 3, 2009<br />
* Publications:<br />
** [http://worldwide.espacenet.com/publicationDetails/biblio?CC=EP&NR=2336985A1&KC=A1&FT=D EP2336985] (A1)([http://www.google.com/patents/EP2336985A1 Google Patents])<br />
<br />
===RANDOM DATA FROM GNSS SIGNALS AND SECURE RANDOM VALUE PROVISIONING FOR SECURE SOFTWARE COMPONENT IMPLEMENTATIONS===<br />
* Inventors: Philippe Teuwen, Peter Rombouts, Frank Michaud<br />
* Filing Date: 12/13/2013(?)<br />
* Application no: 14/104772<br />
* Publications:<br />
** US20150172050 (A1) ([https://www.google.com.ar/patents/US20150172050 Google Patents])<br />
** EP2884689 (A3) ([https://www.google.com/patents/EP2884689A3 Google Patents])<br />
<br />
===DIVERSIFYING CONTROL FLOW OF WHITE-BOX IMPLEMENTATION===<br />
* Inventors: Wil Michiels, Jan Hoogerbrugge, Teuwen Philippe<br />
* Filing Date: May 29, 2015<br />
* Application No: 14/725801<br />
* Publications:<br />
** US20160253189 (A1) ([https://www.google.com/patents/US20160350520 Google Patents])<br />
<br />
===FUZZY OPAQUE PREDICATES===<br />
* Inventor: Teuwen Philippe<br />
* Filing Date: June 26, 2015<br />
* Application No: 14/751606<br />
* Publications:<br />
** US20160379131 (A1) ([https://www.google.com/patents/US20160379131 Google Patents])<br />
<br />
==Patent applications (not yet published)==<br />
<br />
==Search engines==<br />
* Full query<br />
** [http://accounts.ktmine.com/company/ipreport?q=TEUWEN%20PHILIPPE ktmine]<br />
** [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search freepatentsonline], [http://www.freepatentsonline.com/result.html?p=1&edit_alert=&srch=xprtsrch&query_txt=IN%2F%22teuwen+philippe%22+APD%2F01%2F01%2F2014-%3ENOW&uspat=on&usapp=on&eupat=on&pct=on&date_range=all&stemming=off&sort=chron&search=Search limited 2014-now]<br />
* Portals<br />
** [http://www.wipo.int/pctdb/en/ International Patent Applications]<br />
** [http://www.wipo.int/ipdl/en/resources/links.html Patent Databases in Different Countries]<br />
** [http://www.espacenet.com/ esp@cenet, Europe's network of patent databases] // [http://ep.espacenet.com/advancedSearch?locale=en_ep advanced search]<br />
** [http://www.uspto.gov/patft/index.html Unites States Patent and Trademark Office]<br />
** [http://www.google.com/patents Google patents]<br />
** [http://english.sipo.gov.cn/ China SIPO]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Proxmark&diff=10520Proxmark2020-10-16T15:42:35Z<p>PhilippeTeuwen: /* Resources */</p>
<hr />
<div><br />
==Upgrading ELECHOUSE Proxmark3 Easy V3 to 512k==<br />
===(de)soldering===<br />
The popular [https://www.aliexpress.com/popular/proxmark3-kit.html Proxmark3 Easy] has an at91sam7s256 with only 256k and e.g. it's already about 83% full with the current iceman firmware.<br />
<br>So I decided to attempt an upgrade.<br />
<br />
at91sam7s512 is about [http://fr.farnell.com/atmel/at91sam7s512b-au/micro-32-bits-arm7-512k-flash/dp/1972051 15€ on Farnell].<br />
<br />
The steps I followed to desolder and solder the new chip are basically the same as seen on [http://www.youtube.com/watch?v=_dS6JukK7IA&t=1m39s this youtube video]:<br />
<br />
* heating the chip with my [http://www.aoyue.com/en/pro/?id=16 desoldering station]<br />
* removing the chip with a small [https://www.aliexpress.com/wholesale?SearchText=vacuum+suction+pen+chip suction pen]<br />
* putting flux on the pads<br />
* cleaning the pads with desoldering wick<br />
* putting the new chip and soldering some pins to lock it in place (look for aligning the small dot on the correct corner)<br />
* putting flux on the pins<br />
* putting solder on the pins, don't be afraid of bridges...<br />
* removing extra solder with desoldering wick<br />
* checking carefully for residual solder bridges<br />
<br />
And voila.<br />
<br />
Note that it's maybe easier to solder the new chip not by using flux+solder+iron but [https://www.aliexpress.com/wholesale?SearchText=mechanic+solder+flux solder flux paste] and heating with air gun, as shown [https://www.youtube.com/watch?v=2Z7nCAxS2Rg&t=9m30s in this video]...<br />
<br />
===JTAG programming on Proxmark3 Easy V3===<br />
Then wire your JTAG programmer to the board. Mine is a Segger J-Link.<br />
<br>To make it easier, solder a [https://www.aliexpress.com/wholesale?SearchText=breakable+single+row+male+curved+header+2.54 breakable single-row male curved header].<br />
<br>Choose a curved one so you can leave it in place later and still stack the PM3 daughterboard.<br />
<br />
Then using [https://www.aliexpress.com/wholesale?SearchText=wire+dupont+male+female Dupont wires male-female], wire it to the JTAG programmer.<br />
<br />
For the J-Link, the [https://www.segger.com/interface-description.html pinout] is:<br />
--------- ---------<br />
|1917151311 9 7 5 3 1|<br />
|201816141210 8 6 4 2|<br />
--------------------<br />
<br />
PM3 JLink<br />
--- -----<br />
TMS 7<br />
TDI 5<br />
TDO 13<br />
TCK 9<br />
GND 6<br />
3.3 2<br />
<br />
If you prefer you can leave 3.3 not connected and power the PM3 over USB while reprogramming it. But *don't* provide both 3.3 + USB!<br />
<br />
To use the J-Link on Debian:<br />
<br />
$ apt-get install openocd<br />
There is some doc installed locally: file:///usr/share/doc/openocd/openocd.html/index.html<br />
<br />
Create /etc/udev/rules.d/60-jlink.rules with<br />
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0101", MODE="664", GROUP="plugdev"<br />
<br />
I created a config file by reusing most of [https://github.com/Proxmark/proxmark3/blob/master/tools/at91sam7s512-buspirate.cfg tools/at91sam7s512-buspirate.cfg] from Adam Laurie, but specific to J-Link instead of buspirate:<br />
<pre><br />
telnet_port 4444<br />
gdb_port 3333<br />
interface jlink<br />
transport select jtag<br />
adapter_khz 1000<br />
reset_config srst_only srst_pulls_trst<br />
jtag newtap sam7x cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x3f0f0f0f<br />
target create sam7x.cpu arm7tdmi -endian little -chain-position sam7x.cpu<br />
sam7x.cpu configure -event reset-init {<br />
soft_reset_halt<br />
mww 0xfffffd00 0xa5000004 # RSTC_CR: Reset peripherals<br />
mww 0xfffffd44 0x00008000 # WDT_MR: disable watchdog<br />
mww 0xfffffd08 0xa5000001 # RSTC_MR enable user reset<br />
mww 0xfffffc20 0x00005001 # CKGR_MOR : enable the main oscillator<br />
sleep 10<br />
mww 0xfffffc2c 0x000b1c02 # CKGR_PLLR: 16MHz * 12/2 = 96MHz<br />
sleep 10<br />
mww 0xfffffc30 0x00000007 # PMC_MCKR : MCK = PLL / 2 = 48 MHz<br />
sleep 10<br />
mww 0xffffff60 0x00480100 # MC_FMR: flash mode (FWS=1,FMCN=72)<br />
sleep 100<br />
}<br />
gdb_memory_map enable<br />
sam7x.cpu configure -work-area-virt 0 -work-area-phys 0x00200000 -work-area-size 0x10000 -work-area-backup 0<br />
flash bank sam7x.flash.0 at91sam7 0 0 0 0 sam7x.cpu 0 0 0 0 0 0 0 18432<br />
flash bank sam7x.flash.1 at91sam7 0 0 0 0 sam7x.cpu 1 0 0 0 0 0 0 18432<br />
</pre><br />
<br />
Launching OpenOCD:<br />
<br />
<pre><br />
$ openocd -f at91sam7s512-jlink.cfg<br />
Open On-Chip Debugger 0.9.0 (2017-03-07-13:28)<br />
Licensed under GNU GPL v2<br />
For bug reports, read<br />
http://openocd.org/doc/doxygen/bugs.html<br />
adapter speed: 1000 kHz<br />
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain connect_deassert_srst<br />
Info : J-Link ARM V8 compiled Dec 1 2009 11:42:48<br />
Info : J-Link caps 0xb9ff7bbf<br />
Info : J-Link hw version 80000<br />
Info : J-Link hw type J-Link<br />
Info : J-Link max mem block 9576<br />
Info : J-Link configuration<br />
Info : USB-Address: 0x0<br />
Info : Kickstart power on JTAG-pin 19: 0xffffffff<br />
Info : Vref = 3.332 TCK = 1 TDI = 0 TDO = 0 TMS = 0 SRST = 1 TRST = 1<br />
Info : J-Link JTAG Interface ready<br />
Info : clock speed 1000 kHz<br />
Info : JTAG tap: sam7x.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)<br />
Info : Embedded ICE version 1<br />
Info : sam7x.cpu: hardware has 2 breakpoint/watchpoint units<br />
</pre><br />
<br />
Launching a telnet:<br />
<pre><br />
$ telnet localhost 4444<br />
Connected to localhost.<br />
Escape character is '^]'.<br />
Open On-Chip Debugger<br />
> halt<br />
target state: halted<br />
target halted in ARM state due to debug-request, current mode: Supervisor<br />
cpsr: 0xf00000d3 pc: 0x001c9c60<br />
> flash erase_sector 0 0 15<br />
erased sectors 0 through 15 on flash bank 0 in 0.033260s<br />
> flash erase_sector 1 0 15<br />
erased sectors 0 through 15 on flash bank 1 in 0.033311s<br />
</pre><br />
Apparently some chips have a bank 1, some don't...<br />
<br />
===Backuping firmware===<br />
The chip was new but in case you need to backup the chip content first, this is possible from the telnet session with size = 0x40000 for a 256kb chip and 0x80000 for a 512kb chip. E.g. for 256kb:<br />
<pre><br />
> dump_image backup.bin 0x100000 0x40000<br />
dumped 262144 bytes in 9.232331s (27.729 KiB/s)<br />
</pre><br />
<br />
===Flashing full image, take 1===<br />
Probably the easiest way, from the telnet session:<br />
<pre><br />
> flash write_image ./recovery/proxmark3_recovery.bin 0x100000<br />
wrote 217204 bytes from file ./recovery/proxmark3_recovery.bin in 18.417032s (11.517 KiB/s)<br />
</pre><br />
This works also for restoring a <code>backup.bin</code> image dumped earlier.<br />
===Flashing full image, take 2===<br />
Using the elf images, from the telnet session:<br />
<pre><br />
> flash write_image ./bootrom/obj/bootrom.elf<br />
> flash write_image ./armsrc/obj/fullimage.elf<br />
</pre><br />
Note the absence of base address in the command.<br />
===Flashing full image, take 3===<br />
Using the s19 images, from the telnet session:<br />
<pre><br />
> flash write_image ./bootrom/obj/bootrom.s19 0x100000<br />
> flash write_image ./armsrc/obj/fullimage.s19 0x100000<br />
</pre><br />
This failed when I tried because the data section seemed to be at a wrong address in <code>fullimage.s19</code>.<br />
<br />
Indeed <code>fullimmage.s19</code> loads code and data with offset 0x100000 (<code>flash write_image ./armsrc/obj/fullimage.s19 0x100000</code>):<br />
* code from 0x100000+0x200 to 0x100000+0x33580<br />
* data from 0x100000+0x133580 to 0x100000+0x135200<br />
But data should be at 0x133580 so 0x100000+0x35200<br />
<br>Here is a patch that solved the issue:<br />
<source lang=diff><br />
diff --git a/common/Makefile.common b/common/Makefile.common<br />
index 95820e66..e697ae14 100644<br />
--- a/common/Makefile.common<br />
+++ b/common/Makefile.common<br />
@@ -99,7 +99,7 @@ $(VERSIONOBJ): $(OBJDIR)/%.o: %.c $(INCLUDES)<br />
# See ldscript.common. -- Henryk Plötz <henryk@ploetzli.ch> 2009-08-27<br />
OBJCOPY_TRANSLATIONS = --no-change-warnings \<br />
--change-addresses -0x100000 --change-start 0 \<br />
- --change-section-address .bss+0 --change-section-address .data+0 \<br />
+ --change-section-address .bss+0 --change-section-address .data-0x100000 \<br />
--change-section-address .commonarea+0<br />
$(OBJDIR)/%.s19: $(OBJDIR)/%.elf<br />
$(OBJCOPY) -Osrec --srec-forceS3 --strip-debug $(OBJCOPY_TRANSLATIONS) $^ $@<br />
</source><br />
<br />
Update: patch applied in https://github.com/iceman1001/proxmark3/commit/d59026518e02c37ab0673a670b9ea14e17ae399c<br />
<br />
===Flashing full image, take 4===<br />
In case flashing the full image from JTAG seems to fail, you can flash only the bootloader:<br />
<pre><br />
> flash write_image /tmp/bootrom.s19 0x100000 <br />
wrote 3624 bytes from file /tmp/bootrom.s19 in 0.392169s (9.024 KiB/s)<br />
</pre><br />
Then follow the usual recovery procedure:<br />
* Press button and keep it pressed during the whole procedure<br />
* Plug PM3 to USB<br />
* ./flasher /dev/ttyACM0 fullimage.elf<br />
* Release button and re-plug the PM3<br />
<br />
===Done===<br />
<pre><br />
$ ./proxmark3 /dev/ttyACM0<br />
Proxmark3 RFID instrument<br />
bootrom: iceman/iceman/v2.1.0-1547-gb0df293d 2017-05-03 20:44:34<br />
os: iceman/iceman/v2.1.0-1547-gb0df293d 2017-05-03 20:44:39<br />
LF FPGA image built for 2s30vq100 on 2015/03/06 at 07:38:04<br />
HF FPGA image built for 2s30vq100 on 2015/11/ 2 at 9: 8: 8<br />
<br />
uC: AT91SAM7S512 Rev B<br />
Embedded Processor: ARM7TDMI<br />
Nonvolatile Program Memory Size: 512K bytes. Used: 217204 bytes (41%).<br />
Free: 307084 bytes (59%).<br />
Second Nonvolatile Program Memory Size: None<br />
Internal SRAM Size: 64K bytes<br />
Architecture Identifier: AT91SAM7Sxx Series<br />
Nonvolatile Program Memory Type: Embedded Flash Memory<br />
</pre><br />
==JTAG connectors==<br />
===Proxmark3 with headers===<br />
[[File:Pm3.jpg|400px]]<br />
===Proxmark3 without headers===<br />
[[File:Pm3naked1.jpg|400px]] [[File:Pm3naked2.jpg|400px]]<br />
<br>Apply some pressure to ensure a proper connection during the whole flashing operation<br />
<br />
===Proxmark3 Easy with headers===<br />
[[File:Pm3easy.jpg|400px]] [[File:Pm3easy2.jpg|400px]] [[File:Pm3easy3.jpg|400px]]<br />
<br>See above for the proper pinout.<br />
<br>If you want to solder a header, beware that there is very little space between both PCBs. It's possible to solder curved pins but without their plastic support, see pics.<br />
<br>I used a breakout but you can directly connect to the JLink if you prefer. You can fint the board by searching for "jlink adapter card" on aliexpress. You'll need to add a jumper to connect jlink pin2 and 3.3v.<br />
===Proxmark3 Easy without headers===<br />
See [[Proxmark#JTAG_programming_on_Proxmark3_Easy_V3|above]] for pinouts<br />
<br />
[[File:Pm3easy4.jpg|400px]]<br />
<br>Using Dupont individual wires<br />
<br />
[[File:Pm3easy6.jpg|400px]] [[File:Pm3easy5.jpg|400px]]<br />
<br>Using the same cable as shown above<br />
<br />
==Resources==<br />
* https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/jtag_notes.md<br />
* https://github.com/Proxmark/proxmark3/wiki/Debricking-Proxmark3 using a Bus Pirate<br />
* "Lock Error Bit Detected, Operation Abort" ?<br />
<pre><br />
flash protect 0 0 15 off<br />
flash protect 1 0 15 off<br />
</pre></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Proxmark&diff=10519Proxmark2020-10-16T15:41:49Z<p>PhilippeTeuwen: </p>
<hr />
<div><br />
==Upgrading ELECHOUSE Proxmark3 Easy V3 to 512k==<br />
===(de)soldering===<br />
The popular [https://www.aliexpress.com/popular/proxmark3-kit.html Proxmark3 Easy] has an at91sam7s256 with only 256k and e.g. it's already about 83% full with the current iceman firmware.<br />
<br>So I decided to attempt an upgrade.<br />
<br />
at91sam7s512 is about [http://fr.farnell.com/atmel/at91sam7s512b-au/micro-32-bits-arm7-512k-flash/dp/1972051 15€ on Farnell].<br />
<br />
The steps I followed to desolder and solder the new chip are basically the same as seen on [http://www.youtube.com/watch?v=_dS6JukK7IA&t=1m39s this youtube video]:<br />
<br />
* heating the chip with my [http://www.aoyue.com/en/pro/?id=16 desoldering station]<br />
* removing the chip with a small [https://www.aliexpress.com/wholesale?SearchText=vacuum+suction+pen+chip suction pen]<br />
* putting flux on the pads<br />
* cleaning the pads with desoldering wick<br />
* putting the new chip and soldering some pins to lock it in place (look for aligning the small dot on the correct corner)<br />
* putting flux on the pins<br />
* putting solder on the pins, don't be afraid of bridges...<br />
* removing extra solder with desoldering wick<br />
* checking carefully for residual solder bridges<br />
<br />
And voila.<br />
<br />
Note that it's maybe easier to solder the new chip not by using flux+solder+iron but [https://www.aliexpress.com/wholesale?SearchText=mechanic+solder+flux solder flux paste] and heating with air gun, as shown [https://www.youtube.com/watch?v=2Z7nCAxS2Rg&t=9m30s in this video]...<br />
<br />
===JTAG programming on Proxmark3 Easy V3===<br />
Then wire your JTAG programmer to the board. Mine is a Segger J-Link.<br />
<br>To make it easier, solder a [https://www.aliexpress.com/wholesale?SearchText=breakable+single+row+male+curved+header+2.54 breakable single-row male curved header].<br />
<br>Choose a curved one so you can leave it in place later and still stack the PM3 daughterboard.<br />
<br />
Then using [https://www.aliexpress.com/wholesale?SearchText=wire+dupont+male+female Dupont wires male-female], wire it to the JTAG programmer.<br />
<br />
For the J-Link, the [https://www.segger.com/interface-description.html pinout] is:<br />
--------- ---------<br />
|1917151311 9 7 5 3 1|<br />
|201816141210 8 6 4 2|<br />
--------------------<br />
<br />
PM3 JLink<br />
--- -----<br />
TMS 7<br />
TDI 5<br />
TDO 13<br />
TCK 9<br />
GND 6<br />
3.3 2<br />
<br />
If you prefer you can leave 3.3 not connected and power the PM3 over USB while reprogramming it. But *don't* provide both 3.3 + USB!<br />
<br />
To use the J-Link on Debian:<br />
<br />
$ apt-get install openocd<br />
There is some doc installed locally: file:///usr/share/doc/openocd/openocd.html/index.html<br />
<br />
Create /etc/udev/rules.d/60-jlink.rules with<br />
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0101", MODE="664", GROUP="plugdev"<br />
<br />
I created a config file by reusing most of [https://github.com/Proxmark/proxmark3/blob/master/tools/at91sam7s512-buspirate.cfg tools/at91sam7s512-buspirate.cfg] from Adam Laurie, but specific to J-Link instead of buspirate:<br />
<pre><br />
telnet_port 4444<br />
gdb_port 3333<br />
interface jlink<br />
transport select jtag<br />
adapter_khz 1000<br />
reset_config srst_only srst_pulls_trst<br />
jtag newtap sam7x cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x3f0f0f0f<br />
target create sam7x.cpu arm7tdmi -endian little -chain-position sam7x.cpu<br />
sam7x.cpu configure -event reset-init {<br />
soft_reset_halt<br />
mww 0xfffffd00 0xa5000004 # RSTC_CR: Reset peripherals<br />
mww 0xfffffd44 0x00008000 # WDT_MR: disable watchdog<br />
mww 0xfffffd08 0xa5000001 # RSTC_MR enable user reset<br />
mww 0xfffffc20 0x00005001 # CKGR_MOR : enable the main oscillator<br />
sleep 10<br />
mww 0xfffffc2c 0x000b1c02 # CKGR_PLLR: 16MHz * 12/2 = 96MHz<br />
sleep 10<br />
mww 0xfffffc30 0x00000007 # PMC_MCKR : MCK = PLL / 2 = 48 MHz<br />
sleep 10<br />
mww 0xffffff60 0x00480100 # MC_FMR: flash mode (FWS=1,FMCN=72)<br />
sleep 100<br />
}<br />
gdb_memory_map enable<br />
sam7x.cpu configure -work-area-virt 0 -work-area-phys 0x00200000 -work-area-size 0x10000 -work-area-backup 0<br />
flash bank sam7x.flash.0 at91sam7 0 0 0 0 sam7x.cpu 0 0 0 0 0 0 0 18432<br />
flash bank sam7x.flash.1 at91sam7 0 0 0 0 sam7x.cpu 1 0 0 0 0 0 0 18432<br />
</pre><br />
<br />
Launching OpenOCD:<br />
<br />
<pre><br />
$ openocd -f at91sam7s512-jlink.cfg<br />
Open On-Chip Debugger 0.9.0 (2017-03-07-13:28)<br />
Licensed under GNU GPL v2<br />
For bug reports, read<br />
http://openocd.org/doc/doxygen/bugs.html<br />
adapter speed: 1000 kHz<br />
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain connect_deassert_srst<br />
Info : J-Link ARM V8 compiled Dec 1 2009 11:42:48<br />
Info : J-Link caps 0xb9ff7bbf<br />
Info : J-Link hw version 80000<br />
Info : J-Link hw type J-Link<br />
Info : J-Link max mem block 9576<br />
Info : J-Link configuration<br />
Info : USB-Address: 0x0<br />
Info : Kickstart power on JTAG-pin 19: 0xffffffff<br />
Info : Vref = 3.332 TCK = 1 TDI = 0 TDO = 0 TMS = 0 SRST = 1 TRST = 1<br />
Info : J-Link JTAG Interface ready<br />
Info : clock speed 1000 kHz<br />
Info : JTAG tap: sam7x.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)<br />
Info : Embedded ICE version 1<br />
Info : sam7x.cpu: hardware has 2 breakpoint/watchpoint units<br />
</pre><br />
<br />
Launching a telnet:<br />
<pre><br />
$ telnet localhost 4444<br />
Connected to localhost.<br />
Escape character is '^]'.<br />
Open On-Chip Debugger<br />
> halt<br />
target state: halted<br />
target halted in ARM state due to debug-request, current mode: Supervisor<br />
cpsr: 0xf00000d3 pc: 0x001c9c60<br />
> flash erase_sector 0 0 15<br />
erased sectors 0 through 15 on flash bank 0 in 0.033260s<br />
> flash erase_sector 1 0 15<br />
erased sectors 0 through 15 on flash bank 1 in 0.033311s<br />
</pre><br />
Apparently some chips have a bank 1, some don't...<br />
<br />
===Backuping firmware===<br />
The chip was new but in case you need to backup the chip content first, this is possible from the telnet session with size = 0x40000 for a 256kb chip and 0x80000 for a 512kb chip. E.g. for 256kb:<br />
<pre><br />
> dump_image backup.bin 0x100000 0x40000<br />
dumped 262144 bytes in 9.232331s (27.729 KiB/s)<br />
</pre><br />
<br />
===Flashing full image, take 1===<br />
Probably the easiest way, from the telnet session:<br />
<pre><br />
> flash write_image ./recovery/proxmark3_recovery.bin 0x100000<br />
wrote 217204 bytes from file ./recovery/proxmark3_recovery.bin in 18.417032s (11.517 KiB/s)<br />
</pre><br />
This works also for restoring a <code>backup.bin</code> image dumped earlier.<br />
===Flashing full image, take 2===<br />
Using the elf images, from the telnet session:<br />
<pre><br />
> flash write_image ./bootrom/obj/bootrom.elf<br />
> flash write_image ./armsrc/obj/fullimage.elf<br />
</pre><br />
Note the absence of base address in the command.<br />
===Flashing full image, take 3===<br />
Using the s19 images, from the telnet session:<br />
<pre><br />
> flash write_image ./bootrom/obj/bootrom.s19 0x100000<br />
> flash write_image ./armsrc/obj/fullimage.s19 0x100000<br />
</pre><br />
This failed when I tried because the data section seemed to be at a wrong address in <code>fullimage.s19</code>.<br />
<br />
Indeed <code>fullimmage.s19</code> loads code and data with offset 0x100000 (<code>flash write_image ./armsrc/obj/fullimage.s19 0x100000</code>):<br />
* code from 0x100000+0x200 to 0x100000+0x33580<br />
* data from 0x100000+0x133580 to 0x100000+0x135200<br />
But data should be at 0x133580 so 0x100000+0x35200<br />
<br>Here is a patch that solved the issue:<br />
<source lang=diff><br />
diff --git a/common/Makefile.common b/common/Makefile.common<br />
index 95820e66..e697ae14 100644<br />
--- a/common/Makefile.common<br />
+++ b/common/Makefile.common<br />
@@ -99,7 +99,7 @@ $(VERSIONOBJ): $(OBJDIR)/%.o: %.c $(INCLUDES)<br />
# See ldscript.common. -- Henryk Plötz <henryk@ploetzli.ch> 2009-08-27<br />
OBJCOPY_TRANSLATIONS = --no-change-warnings \<br />
--change-addresses -0x100000 --change-start 0 \<br />
- --change-section-address .bss+0 --change-section-address .data+0 \<br />
+ --change-section-address .bss+0 --change-section-address .data-0x100000 \<br />
--change-section-address .commonarea+0<br />
$(OBJDIR)/%.s19: $(OBJDIR)/%.elf<br />
$(OBJCOPY) -Osrec --srec-forceS3 --strip-debug $(OBJCOPY_TRANSLATIONS) $^ $@<br />
</source><br />
<br />
Update: patch applied in https://github.com/iceman1001/proxmark3/commit/d59026518e02c37ab0673a670b9ea14e17ae399c<br />
<br />
===Flashing full image, take 4===<br />
In case flashing the full image from JTAG seems to fail, you can flash only the bootloader:<br />
<pre><br />
> flash write_image /tmp/bootrom.s19 0x100000 <br />
wrote 3624 bytes from file /tmp/bootrom.s19 in 0.392169s (9.024 KiB/s)<br />
</pre><br />
Then follow the usual recovery procedure:<br />
* Press button and keep it pressed during the whole procedure<br />
* Plug PM3 to USB<br />
* ./flasher /dev/ttyACM0 fullimage.elf<br />
* Release button and re-plug the PM3<br />
<br />
===Done===<br />
<pre><br />
$ ./proxmark3 /dev/ttyACM0<br />
Proxmark3 RFID instrument<br />
bootrom: iceman/iceman/v2.1.0-1547-gb0df293d 2017-05-03 20:44:34<br />
os: iceman/iceman/v2.1.0-1547-gb0df293d 2017-05-03 20:44:39<br />
LF FPGA image built for 2s30vq100 on 2015/03/06 at 07:38:04<br />
HF FPGA image built for 2s30vq100 on 2015/11/ 2 at 9: 8: 8<br />
<br />
uC: AT91SAM7S512 Rev B<br />
Embedded Processor: ARM7TDMI<br />
Nonvolatile Program Memory Size: 512K bytes. Used: 217204 bytes (41%).<br />
Free: 307084 bytes (59%).<br />
Second Nonvolatile Program Memory Size: None<br />
Internal SRAM Size: 64K bytes<br />
Architecture Identifier: AT91SAM7Sxx Series<br />
Nonvolatile Program Memory Type: Embedded Flash Memory<br />
</pre><br />
==JTAG connectors==<br />
===Proxmark3 with headers===<br />
[[File:Pm3.jpg|400px]]<br />
===Proxmark3 without headers===<br />
[[File:Pm3naked1.jpg|400px]] [[File:Pm3naked2.jpg|400px]]<br />
<br>Apply some pressure to ensure a proper connection during the whole flashing operation<br />
<br />
===Proxmark3 Easy with headers===<br />
[[File:Pm3easy.jpg|400px]] [[File:Pm3easy2.jpg|400px]] [[File:Pm3easy3.jpg|400px]]<br />
<br>See above for the proper pinout.<br />
<br>If you want to solder a header, beware that there is very little space between both PCBs. It's possible to solder curved pins but without their plastic support, see pics.<br />
<br>I used a breakout but you can directly connect to the JLink if you prefer. You can fint the board by searching for "jlink adapter card" on aliexpress. You'll need to add a jumper to connect jlink pin2 and 3.3v.<br />
===Proxmark3 Easy without headers===<br />
See [[Proxmark#JTAG_programming_on_Proxmark3_Easy_V3|above]] for pinouts<br />
<br />
[[File:Pm3easy4.jpg|400px]]<br />
<br>Using Dupont individual wires<br />
<br />
[[File:Pm3easy6.jpg|400px]] [[File:Pm3easy5.jpg|400px]]<br />
<br>Using the same cable as shown above<br />
<br />
==Resources==<br />
* https://github.com/Proxmark/proxmark3/wiki/Debricking-Proxmark3 using a Bus Pirate<br />
* "Lock Error Bit Detected, Operation Abort" ?<br />
<pre><br />
flash protect 0 0 15 off<br />
flash protect 1 0 15 off<br />
</pre></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Canon_EOS&diff=10518Canon EOS2020-03-20T08:56:54Z<p>PhilippeTeuwen: /* IR photography */</p>
<hr />
<div>==EOS 350D==<br />
* Characteristics<br />
** CMOS 22,2 x 14,8 mm<br />
** 8,2 millions of pixels (8 millions when capturing -> 3456 x 2304)<br />
** ISO 100, 200, 400, 800 or 1600<br />
** EF-S body compatible with all Canon EF (red dot/full frame) or EF-S (white square) but 1,6X to get 35 mm equivalent<br />
* [http://www.canon-europe.com/For_Home/Product_Finder/Cameras/Digital_SLR/EOS_350C/index.asp?ComponentID=270585&SourcePageID=164046#1 sur Canon Europe]<br />
* [http://www.brochures.canon-europe.com/pdfs/EOS_350D-p8090-c3945-BE_FR-1109683414.pdf brochure en Français (122kb)]<br />
* [http://www.usa.canon.com/html/PMA/pdf/Rebel%20XT%20WP.pdf Digital Rebel XT whitepaper]<br />
* [http://software.canon-europe.com/Cameras/SLR_Cameras/EOS_350D10192.asp Softwares] ou [http://alpha02.c-wss.com/inc/ApplServlet?SV=WWUCA900 ici]<br />
* [http://web.canon.jp/Imaging/eosdigital2/e3kr2_firmware-e.html EOS 350D DIGITAL Firmware Update Version 1.0.3]<br />
* [http://213.247.48.62/flashcheck.asp?lng=en-gb EOS 300D Site]<br />
* [http://www.bahneman.com/liem/photos/tricks/digital-rebel-tricks.php Digital Rebel Tips and Tricks]<br />
* [http://www.photo-forums.com/WebX?13@@.ee946e1 Canon Digital Rebel Forum]<br />
* [http://en.wikipedia.org/wiki/Canon_EOS_350D Wikipedia]<br />
==EOS 5D Mark II==<br />
* [https://secure.wikimedia.org/wikipedia/en/wiki/Canon_EOS_5D_Mark_II Wikipedia]<br />
* [http://software.canon-europe.com/products/0010678.asp Official Software Support]<br />
* [http://magiclantern.wikia.com/wiki/Magic_Lantern_Firmware_Wiki Magic Lantern fw]<br />
<br />
==[[Photo accessories|Accessories]]==<br />
==[[Linux photography|Digital photography & Linux]]==<br />
<br />
==Misc links for EOS==<br />
* [http://web.canon.jp/Imaging/eosdigital2/index.html sur Canon Japan (+samples)]<br />
* [http://alpha03.c-wss.com/inc/ApplServlet?SV=WWUCA900 manuels]<br />
* [http://www.canon-europe.com/Support/Patches/dpp/ Software Digital Photo Professional 1.6.1]<br />
* [http://web.canon.jp/Imaging/BeBit-e.html Firmwares etc]<br />
* [http://www.cig.canon-europe.com/user/login.html CANON iMAGE GATEWAY]<br />
* [http://web.canon.jp/Imaging/enjoydslr/index.html Digital SLR cameras]<br />
* [http://web.canon.jp/Imaging/astro/index-e.html Astrophotography guide for EOS DIGITAL]<br />
<br />
==Hacks==<br />
===Hand-made trigger for 350D===<br />
Hand-made trigger for 350D & other Canon models (look for "C6" [https://code.google.com/p/photoduino/wiki/CameraReference here]:<br />
<br>[[Image:declencheur.jpg]]<br />
<br>The external trigger is composed of a jack 2.5mm, three wires, an on/off switch and a push button<br />
<br>Shortcut of ground and right (the middle ring) is equivalent to half-press, here wired to a simple on/off switch which provides the housing<br />
<br>Shortcut of ground and left (the tip) is equivalent to full press, here wired to a simple red push button<br />
===AV to stereo cable for 5D Mark II===<br />
<br />
The 5D has an AV output connector accepting a TRRS 3.5mm jack.<br />
<br>With Magic Lantern you can use it to plug a headphone and get the sound feedback directly while recording a movie, nice!<br />
<br>But you can't just plug the headphone into the camera, you would get only sound on the left ear and, worse, you would be busy short-cutting Ground and Right signals! <br />
<br />
On the Canon side, the AV port is a female 3.5mm TRRS jack, TRRS means it has 4 connectors where T=tip, R=ring (so two rings), S=sleeve.<br />
<br>On the headphone side, it's a simple stereo 3.5mm TRS jack.<br />
<br />
We have:<br />
<pre><br />
canon stereo jack<br />
===== ===========<br />
T left T left<br />
R video R right<br />
R common S common<br />
S right S common<br />
</pre><br />
I've shown the TRS as TRSS to show that physically the second ring of a TRRS meets the sleeve of a TRS.<br />
<br />
To build an adapter, I bought a cheap 50cm 3.5mm jack TRRS cable (so a TRRS male at one end and a TRRS female at the other end).<br />
I didn't want any adapter cable because there is a high chance it's not properly wired. Even the popular TRRS to RCA have a great chance to have the ground on the TRRS sleeve which means you'll get the Right signal on all three cinches instead of the Ground. If you use a TRRS-RCA make sure to use the one provided with your EOS!! But that solution is bulky and we need an additional RCA(male)-TRS(female) to hook a headphone.<br />
With a TRRS extension cable, we've full control.<br />
<br />
Cut the cable somewhere and check its color code. Here also electrically check it, don't make any assumption on the color codes!<br />
Mine was like this (with color conventions, to show you it's arbitrary and you can't trust it):<br />
<br />
<pre><br />
T naked cable (usually naked=ground)<br />
R white cable (usually white=left)<br />
R red cable (usually red=right)<br />
S yellow cable (usually yellow=video)<br />
</pre><br />
<br />
We want to wire left-left, right-right and common-common.<br />
We'll leave the video signal from EOS disconnected.<br />
As common on the TRS is wide, we'll connect both R&S of the female connector of the cable to the common.<br />
<br />
So it will look like this:<br />
<pre><br />
canon cable stereo jack<br />
===== ============ ===========<br />
T left T----------T T left<br />
<br />
R video R +----R R right<br />
/<br />
R common R---/--+---R S common<br />
/ \<br />
S right S-+ +-S <br />
</pre><br />
<br />
My cable just before soldering, with the thermo retractile tubes ready: (colors of your cable may be different, beware!!)<br />
<br>[[File:EOS_TRRS.jpg|500px]]<br />
<br />
With this cable you can also use a mobile headset with TRRS & Mic, it won't hurt (and obviously the Mic won't be used by the camera).<br />
It would look like this:<br />
<pre><br />
canon cable OMTP jack<br />
===== ============ =========<br />
T left T----------T T left<br />
<br />
R video R +----R R right<br />
/<br />
R common R---/--+---R R mic<br />
/ \<br />
S right S-+ +-S S common<br />
</pre><br />
Even an iPhone headset should work:<br />
<pre><br />
canon cable CTIA jack<br />
===== ============ =========<br />
T left T----------T T left<br />
<br />
R video R +----R R right<br />
/<br />
R common R---/--+---R R common<br />
/ \<br />
S right S-+ +-S S mic<br />
</pre><br />
<br />
===Misc hacks===<br />
* [http://www.camerahacker.com/directory/Hacks.shtml Camera Hacker], misc hacks<br />
<br />
==IR photography==<br />
* My experiments: https://twitter.com/search?f=image&q=(%23iroftheday)%20(from%3Adoegox)&src=typed_query<br />
<br />
* https://en.wikipedia.org/wiki/Infrared_photography<br />
* https://www.lifepixel.com/photo-tutorials/quick-start-guide<br />
* https://www.lifepixel.com/infrared-photography-primer<br />
<br />
If the lens allows to focus "further" than infinite, it'll be enough to compensate for the absence of filter refraction: focus needs to be (~1/3 * (0.55+0.58)) = 0.375mm shorter.<br />
Else, this could be compensated by removing the spacers or adding a clean filter of about 1.1mm.<br />
<br />
Create custom white balance on picture of green grass/foliage, with possibly some exposure compensation (+2?)<br />
<br />
Live View With Auto Focus (best method) : be sure your camera set to use the direct (also called Live) focus mode, not Quick mode. Press and maintain AF-ON till liveview AF square becomes green (a few seconds).<br />
<br />
===Modding===<br />
* http://www.4photos.de/camera-diy/infrared.html<br />
* https://www.lifepixel.com/tutorials/infrared-diy-tutorials<br />
===Modding 350D===<br />
A bad idea... Choose a camera with LifeView instead!!<br />
* http://www.astrosurf.org/buil/350d/350d.htm<br />
* http://www.astronomic.fr/index.php/2008/07/18/52-modification-du-canon-eos-350d<br />
* http://www.astromb.eu/35/<br />
* http://www.astrosurf.org/buil/autofocus/adjust.htm<br />
===Modding 50D===<br />
* https://www.lifepixel.com/tutorials/infrared-diy-tutorials/canon-50d-ir<br />
* https://ir-photo.net/ir_50dmod.html<br />
* Remove dust filter too! https://ir-photo.net/ir_40dmod.html<br />
<br />
There are several guides on how to open the 50D but most suggest to dismantle more than needed.<br />
Here are minimalist instructions:<br />
<br />
* Remove the battery, CF card and eyepiece<br />
* Bottom:<br />
** Remove 2 screws holding the *back* panel<br />
** Remove the seal on the Wireless Grip port (looks like HDMI connector)<br />
* Back:<br />
** Remove 1 screw hidden under grip below the magnifiers logos<br />
** Remove 2 screws under eyepiece<br />
** Remove 1 screw with the small eyepiece wheel<br />
* Left:<br />
** Remove grip<br />
** Remove 2 screws under grip<br />
** Remove 1 screw under PC plug seal<br />
* Remove back<br />
** Beware of 2 FPC<br />
** Beware of U-shaped shield around the Wireless Grip port<br />
* Remove left<br />
** Beware of metal piece around HDMI<br />
* Desolder<br />
** 2 points holding the metal shield in the middle of the PCB<br />
** Remove shield<br />
** Remove FPCs<br />
* Unscrew PCB<br />
** 4 screws (leave the 2 holding the CF reader)<br />
** 1 screw accessible from hole at bottom of CF reader<br />
* Remove PCB<br />
** Beware of 2 cable connectors at back<br />
* Unscrew sensor<br />
** Remove 2 screws<br />
** Remove 3 screws with triangle tool, beware of their spacers and springs<br />
* Remove sensor<br />
<br />
To defilter sensor:<br />
* Remove dust-cleaning filter (it's also an IR filter, so don't put it back)<br />
* Remove blue filter on top of sensor<br />
<br />
Dimensions:<br />
* main filter: 26.6x19.2x0.55<br />
* dust-cleaner: 37.8x26.8x0.58<br />
<br />
===Filters===<br />
* http://4photos.de/camera-diy/exchangeable-filter-dslr.html<br />
* https://www.lifepixel.com/infrared-filters-choices<br />
* https://kolarivision.com/articles/choosing-a-filter/<br />
* https://www.lifepixel.com/infrared-faq -> What kind of filters do you use for conversions? -> spectrograms<br />
* https://www.davidkennardphotography.com/blog/990-zomei-ir-filters-review-comparison.xhtml<br />
* https://www.lifepixel.com/shop/filters/external-mounted-filters/external-mounted-infrared-filters<br />
* https://www.lifepixel.com/shop/filters/internal-diy-filters/canon-internal-diy-filters<br />
<br />
<pre><br />
Deep B&W IR: 830nm+ -> B&W mode <br />
Standard IR: 720nm+ = Hoya R72 = Wratten 89b<br />
Enhanced IR: 665nm+ = Extra Color dark red<br />
Super Color IR: 590nm+ = Ultra Color -> yellow/blue red<br />
550nm+ IR portraits yellow<br />
Hyper color IR: 470nm+<br />
Blue + IR 300-450 + 720+ = NDVI =Schott BG3 ~ 590nm + channel swap https://www.aliexpress.com/item/33055427860.html<br />
UV-IR Cut 445nm-670nm Aliexpress "FOTGA UV-IR CUT filter"<br />
adjustable 530nm..750nm Aliexpress "Adjustable Infra-Red Lens"<br />
</pre><br />
<br />
==Digital photography==<br />
<br />
* [http://www.steves-digicams.com/ Steve's DigiCams]<br />
* [http://www.dpreview.com/ Digital Camera Reviews and News] (same as [http://photo.askey.net/ here]?)<br />
* [http://www.imaging-resource.com/ Imaging resource] incl. some howtos, tutorials,... [http://ir.webphotoschool.com/ Some EOS300 specific ones]<br />
* [http://www.dcresource.com/ Digital camera resource page]<br />
* [http://www.oreilly.com/catalog/digphotohks/chapter/index.html Digital Photography Hacks] incl. free sample chapters<br />
<br />
==Notes==<br />
I was wondering why in bulk mode over 30s the camera was busy after the shot for about the same time.<br />
<br>Now I got the answer!<br />
<br>When taking long exposure shots, we can have what's called hot pixels, red, green or blue. To remove them automatically the SLR takes a picture of the same duration with the shutter closed (called "dark" in astrophoto) and substract it from the previous. [http://www.virusphoto.com/14600-reussir-ses-photos-de-nuit.html]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Canon_EOS&diff=10517Canon EOS2020-03-20T08:54:37Z<p>PhilippeTeuwen: /* IR photography with 350D */</p>
<hr />
<div>==EOS 350D==<br />
* Characteristics<br />
** CMOS 22,2 x 14,8 mm<br />
** 8,2 millions of pixels (8 millions when capturing -> 3456 x 2304)<br />
** ISO 100, 200, 400, 800 or 1600<br />
** EF-S body compatible with all Canon EF (red dot/full frame) or EF-S (white square) but 1,6X to get 35 mm equivalent<br />
* [http://www.canon-europe.com/For_Home/Product_Finder/Cameras/Digital_SLR/EOS_350C/index.asp?ComponentID=270585&SourcePageID=164046#1 sur Canon Europe]<br />
* [http://www.brochures.canon-europe.com/pdfs/EOS_350D-p8090-c3945-BE_FR-1109683414.pdf brochure en Français (122kb)]<br />
* [http://www.usa.canon.com/html/PMA/pdf/Rebel%20XT%20WP.pdf Digital Rebel XT whitepaper]<br />
* [http://software.canon-europe.com/Cameras/SLR_Cameras/EOS_350D10192.asp Softwares] ou [http://alpha02.c-wss.com/inc/ApplServlet?SV=WWUCA900 ici]<br />
* [http://web.canon.jp/Imaging/eosdigital2/e3kr2_firmware-e.html EOS 350D DIGITAL Firmware Update Version 1.0.3]<br />
* [http://213.247.48.62/flashcheck.asp?lng=en-gb EOS 300D Site]<br />
* [http://www.bahneman.com/liem/photos/tricks/digital-rebel-tricks.php Digital Rebel Tips and Tricks]<br />
* [http://www.photo-forums.com/WebX?13@@.ee946e1 Canon Digital Rebel Forum]<br />
* [http://en.wikipedia.org/wiki/Canon_EOS_350D Wikipedia]<br />
==EOS 5D Mark II==<br />
* [https://secure.wikimedia.org/wikipedia/en/wiki/Canon_EOS_5D_Mark_II Wikipedia]<br />
* [http://software.canon-europe.com/products/0010678.asp Official Software Support]<br />
* [http://magiclantern.wikia.com/wiki/Magic_Lantern_Firmware_Wiki Magic Lantern fw]<br />
<br />
==[[Photo accessories|Accessories]]==<br />
==[[Linux photography|Digital photography & Linux]]==<br />
<br />
==Misc links for EOS==<br />
* [http://web.canon.jp/Imaging/eosdigital2/index.html sur Canon Japan (+samples)]<br />
* [http://alpha03.c-wss.com/inc/ApplServlet?SV=WWUCA900 manuels]<br />
* [http://www.canon-europe.com/Support/Patches/dpp/ Software Digital Photo Professional 1.6.1]<br />
* [http://web.canon.jp/Imaging/BeBit-e.html Firmwares etc]<br />
* [http://www.cig.canon-europe.com/user/login.html CANON iMAGE GATEWAY]<br />
* [http://web.canon.jp/Imaging/enjoydslr/index.html Digital SLR cameras]<br />
* [http://web.canon.jp/Imaging/astro/index-e.html Astrophotography guide for EOS DIGITAL]<br />
<br />
==Hacks==<br />
===Hand-made trigger for 350D===<br />
Hand-made trigger for 350D & other Canon models (look for "C6" [https://code.google.com/p/photoduino/wiki/CameraReference here]:<br />
<br>[[Image:declencheur.jpg]]<br />
<br>The external trigger is composed of a jack 2.5mm, three wires, an on/off switch and a push button<br />
<br>Shortcut of ground and right (the middle ring) is equivalent to half-press, here wired to a simple on/off switch which provides the housing<br />
<br>Shortcut of ground and left (the tip) is equivalent to full press, here wired to a simple red push button<br />
===AV to stereo cable for 5D Mark II===<br />
<br />
The 5D has an AV output connector accepting a TRRS 3.5mm jack.<br />
<br>With Magic Lantern you can use it to plug a headphone and get the sound feedback directly while recording a movie, nice!<br />
<br>But you can't just plug the headphone into the camera, you would get only sound on the left ear and, worse, you would be busy short-cutting Ground and Right signals! <br />
<br />
On the Canon side, the AV port is a female 3.5mm TRRS jack, TRRS means it has 4 connectors where T=tip, R=ring (so two rings), S=sleeve.<br />
<br>On the headphone side, it's a simple stereo 3.5mm TRS jack.<br />
<br />
We have:<br />
<pre><br />
canon stereo jack<br />
===== ===========<br />
T left T left<br />
R video R right<br />
R common S common<br />
S right S common<br />
</pre><br />
I've shown the TRS as TRSS to show that physically the second ring of a TRRS meets the sleeve of a TRS.<br />
<br />
To build an adapter, I bought a cheap 50cm 3.5mm jack TRRS cable (so a TRRS male at one end and a TRRS female at the other end).<br />
I didn't want any adapter cable because there is a high chance it's not properly wired. Even the popular TRRS to RCA have a great chance to have the ground on the TRRS sleeve which means you'll get the Right signal on all three cinches instead of the Ground. If you use a TRRS-RCA make sure to use the one provided with your EOS!! But that solution is bulky and we need an additional RCA(male)-TRS(female) to hook a headphone.<br />
With a TRRS extension cable, we've full control.<br />
<br />
Cut the cable somewhere and check its color code. Here also electrically check it, don't make any assumption on the color codes!<br />
Mine was like this (with color conventions, to show you it's arbitrary and you can't trust it):<br />
<br />
<pre><br />
T naked cable (usually naked=ground)<br />
R white cable (usually white=left)<br />
R red cable (usually red=right)<br />
S yellow cable (usually yellow=video)<br />
</pre><br />
<br />
We want to wire left-left, right-right and common-common.<br />
We'll leave the video signal from EOS disconnected.<br />
As common on the TRS is wide, we'll connect both R&S of the female connector of the cable to the common.<br />
<br />
So it will look like this:<br />
<pre><br />
canon cable stereo jack<br />
===== ============ ===========<br />
T left T----------T T left<br />
<br />
R video R +----R R right<br />
/<br />
R common R---/--+---R S common<br />
/ \<br />
S right S-+ +-S <br />
</pre><br />
<br />
My cable just before soldering, with the thermo retractile tubes ready: (colors of your cable may be different, beware!!)<br />
<br>[[File:EOS_TRRS.jpg|500px]]<br />
<br />
With this cable you can also use a mobile headset with TRRS & Mic, it won't hurt (and obviously the Mic won't be used by the camera).<br />
It would look like this:<br />
<pre><br />
canon cable OMTP jack<br />
===== ============ =========<br />
T left T----------T T left<br />
<br />
R video R +----R R right<br />
/<br />
R common R---/--+---R R mic<br />
/ \<br />
S right S-+ +-S S common<br />
</pre><br />
Even an iPhone headset should work:<br />
<pre><br />
canon cable CTIA jack<br />
===== ============ =========<br />
T left T----------T T left<br />
<br />
R video R +----R R right<br />
/<br />
R common R---/--+---R R common<br />
/ \<br />
S right S-+ +-S S mic<br />
</pre><br />
<br />
===Misc hacks===<br />
* [http://www.camerahacker.com/directory/Hacks.shtml Camera Hacker], misc hacks<br />
<br />
==IR photography==<br />
* https://en.wikipedia.org/wiki/Infrared_photography<br />
* https://www.lifepixel.com/photo-tutorials/quick-start-guide<br />
* https://www.lifepixel.com/infrared-photography-primer<br />
<br />
If the lens allows to focus "further" than infinite, it'll be enough to compensate for the absence of filter refraction: focus needs to be (~1/3 * (0.55+0.58)) = 0.375mm shorter.<br />
Else, this could be compensated by removing the spacers or adding a clean filter of about 1.1mm.<br />
<br />
Create custom white balance on picture of green grass/foliage, with possibly some exposure compensation (+2?)<br />
<br />
Live View With Auto Focus (best method) : be sure your camera set to use the direct (also called Live) focus mode, not Quick mode. Press and maintain AF-ON till liveview AF square becomes green (a few seconds).<br />
<br />
===Modding===<br />
* http://www.4photos.de/camera-diy/infrared.html<br />
* https://www.lifepixel.com/tutorials/infrared-diy-tutorials<br />
===Modding 350D===<br />
A bad idea... Choose a camera with LifeView instead!!<br />
* http://www.astrosurf.org/buil/350d/350d.htm<br />
* http://www.astronomic.fr/index.php/2008/07/18/52-modification-du-canon-eos-350d<br />
* http://www.astromb.eu/35/<br />
* http://www.astrosurf.org/buil/autofocus/adjust.htm<br />
===Modding 50D===<br />
* https://www.lifepixel.com/tutorials/infrared-diy-tutorials/canon-50d-ir<br />
* https://ir-photo.net/ir_50dmod.html<br />
* Remove dust filter too! https://ir-photo.net/ir_40dmod.html<br />
<br />
There are several guides on how to open the 50D but most suggest to dismantle more than needed.<br />
Here are minimalist instructions:<br />
<br />
* Remove the battery, CF card and eyepiece<br />
* Bottom:<br />
** Remove 2 screws holding the *back* panel<br />
** Remove the seal on the Wireless Grip port (looks like HDMI connector)<br />
* Back:<br />
** Remove 1 screw hidden under grip below the magnifiers logos<br />
** Remove 2 screws under eyepiece<br />
** Remove 1 screw with the small eyepiece wheel<br />
* Left:<br />
** Remove grip<br />
** Remove 2 screws under grip<br />
** Remove 1 screw under PC plug seal<br />
* Remove back<br />
** Beware of 2 FPC<br />
** Beware of U-shaped shield around the Wireless Grip port<br />
* Remove left<br />
** Beware of metal piece around HDMI<br />
* Desolder<br />
** 2 points holding the metal shield in the middle of the PCB<br />
** Remove shield<br />
** Remove FPCs<br />
* Unscrew PCB<br />
** 4 screws (leave the 2 holding the CF reader)<br />
** 1 screw accessible from hole at bottom of CF reader<br />
* Remove PCB<br />
** Beware of 2 cable connectors at back<br />
* Unscrew sensor<br />
** Remove 2 screws<br />
** Remove 3 screws with triangle tool, beware of their spacers and springs<br />
* Remove sensor<br />
<br />
To defilter sensor:<br />
* Remove dust-cleaning filter (it's also an IR filter, so don't put it back)<br />
* Remove blue filter on top of sensor<br />
<br />
Dimensions:<br />
* main filter: 26.6x19.2x0.55<br />
* dust-cleaner: 37.8x26.8x0.58<br />
<br />
===Filters===<br />
* http://4photos.de/camera-diy/exchangeable-filter-dslr.html<br />
* https://www.lifepixel.com/infrared-filters-choices<br />
* https://kolarivision.com/articles/choosing-a-filter/<br />
* https://www.lifepixel.com/infrared-faq -> What kind of filters do you use for conversions? -> spectrograms<br />
* https://www.davidkennardphotography.com/blog/990-zomei-ir-filters-review-comparison.xhtml<br />
* https://www.lifepixel.com/shop/filters/external-mounted-filters/external-mounted-infrared-filters<br />
* https://www.lifepixel.com/shop/filters/internal-diy-filters/canon-internal-diy-filters<br />
<br />
<pre><br />
Deep B&W IR: 830nm+ -> B&W mode <br />
Standard IR: 720nm+ = Hoya R72 = Wratten 89b<br />
Enhanced IR: 665nm+ = Extra Color dark red<br />
Super Color IR: 590nm+ = Ultra Color -> yellow/blue red<br />
550nm+ IR portraits yellow<br />
Hyper color IR: 470nm+<br />
Blue + IR 300-450 + 720+ = NDVI =Schott BG3 ~ 590nm + channel swap https://www.aliexpress.com/item/33055427860.html<br />
UV-IR Cut 445nm-670nm Aliexpress "FOTGA UV-IR CUT filter"<br />
adjustable 530nm..750nm Aliexpress "Adjustable Infra-Red Lens"<br />
</pre><br />
<br />
==Digital photography==<br />
<br />
* [http://www.steves-digicams.com/ Steve's DigiCams]<br />
* [http://www.dpreview.com/ Digital Camera Reviews and News] (same as [http://photo.askey.net/ here]?)<br />
* [http://www.imaging-resource.com/ Imaging resource] incl. some howtos, tutorials,... [http://ir.webphotoschool.com/ Some EOS300 specific ones]<br />
* [http://www.dcresource.com/ Digital camera resource page]<br />
* [http://www.oreilly.com/catalog/digphotohks/chapter/index.html Digital Photography Hacks] incl. free sample chapters<br />
<br />
==Notes==<br />
I was wondering why in bulk mode over 30s the camera was busy after the shot for about the same time.<br />
<br>Now I got the answer!<br />
<br>When taking long exposure shots, we can have what's called hot pixels, red, green or blue. To remove them automatically the SLR takes a picture of the same duration with the shutter closed (called "dark" in astrophoto) and substract it from the previous. [http://www.virusphoto.com/14600-reussir-ses-photos-de-nuit.html]</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10516Laptop Dell XPS 152020-01-08T09:39:03Z<p>PhilippeTeuwen: /* Bios */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* Secure Boot: disable<br />
* SATA: switch from Raid to AHCI<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
* POST/Fastboot/Thorough<br />
* auto os recovery threshold off<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
* 1.13.1 [https://dl.dell.com/FOLDER06021536M/1/XPS_9550_1.13.1.exe XPS_9550_1.13.1.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=3hr07 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=GnuPG&diff=10515GnuPG2019-12-09T14:52:46Z<p>PhilippeTeuwen: /* Extending expiration time */</p>
<hr />
<div>Those are personal notes when I decided in 2016 to generate a new key as transition from my previous one (from 2002!).<br />
<br>Daily subkeys are stored on a Yubikey NEO-n and master key is stored offline.<br />
<br />
==Resources==<br />
The steps I followed and which I describe only very briefly here, more to remind how I combined them, came from those excellent resources:<br />
* https://help.riseup.net/en/security/message-security/openpgp/best-practices<br />
* http://ekaia.org/blog/2009/05/10/creating-new-gpgkey/<br />
* https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/<br />
<br />
==gpg.conf==<br />
First step was to refresh a little bit my gpg.conf.<br />
<br>See https://github.com/ioerror/duraconf/raw/master/configs/gnupg/gpg.conf for commented gpg.conf and https://help.riseup.net/en/security/message-security/openpgp/best-practices for the reasons behind.<br />
<pre><br />
no-emit-version<br />
no-comments<br />
keyid-format 0xlong<br />
with-fingerprint<br />
list-options show-uid-validity<br />
verify-options show-uid-validity<br />
use-agent<br />
keyserver hkps://hkps.pool.sks-keyservers.net<br />
keyserver-options ca-cert-file=/home/phil/.gnupg/keyservers/sks-keyservers.netCA.pem<br />
keyserver-options no-try-dns-srv<br />
keyserver-options no-honor-keyserver-url<br />
keyserver-options include-revoked<br />
personal-cipher-preferences AES256 AES192 AES CAST5<br />
personal-digest-preferences SHA512 SHA384 SHA256 SHA224<br />
cert-digest-algo SHA512<br />
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed<br />
</pre><br />
Some more of my own:<br />
<pre><br />
no-greeting<br />
keyserver-options auto-key-retrieve honor-http-proxy<br />
list-options show-policy-urls show-notations show-keyserver-urls show-uid-validity show-unusable-uids show-unusable-subkeys show-sig-expire<br />
verify-options show-photos show-policy-urls show-notations show-keyserver-urls show-uid-validity show-unusable-uids<br />
utf8-strings<br />
ask-cert-level<br />
</pre><br />
==Offline storage==<br />
Digressing a little bit...<br />
<br />
I chose an old SDCard to store the master key offline, but it required a little bit of maintenance because it wasn't mounting automatically:<br />
<br />
Making sude partition table was ok:<br />
$ sudo fdisk /dev/mmcblk0<br />
Checking FS signatures:<br />
$ sudo wipefs /dev/mmcblk0p1<br />
There was still a mix of FAT and ext2 signatures, so deleting the ext2 signature based on the returned offset:<br />
$ sudo wipefs -o 0x438 /dev/mmcblk0p1<br />
Formatting<br />
$ sudo mkfs.vfat /dev/mmcblk0p1<br />
$ sudo fatlabel /dev/mmcblk0p1 GNUPG<br />
Reinserting it to get it mounted automatically, then<br />
$ cp ~/.gnupg/gpg.conf /media/phil/GNUPG<br />
$ sudo mount --bind /media/phil/GNUPG ~/.gnupg <br />
==Entropy==<br />
Creating large keys require large entropy.<br />
<br>I like haveged for that:<br />
$ sudo apt-get install haveged<br />
==Creating main key==<br />
Idea following https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/ is to keep the main key completely offline so if yubikey is lost, there is still some hope.<br />
$ gpg --expert --gen-key<br />
Please select what kind of key you want:<br />
(8) RSA (set your own capabilities)<br />
Your selection? 8<br />
Current allowed actions: Sign Certify Encrypt <br />
Your selection? s<br />
Your selection? e<br />
Current allowed actions: Certify <br />
Your selection? q<br />
What keysize do you want? (2048) 4096<br />
Requested keysize is 4096 bits<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Real name: Philippe Teuwen<br />
Email address: phil@teuwen.org<br />
Comment: <br />
You selected this USER-ID:<br />
"Philippe Teuwen <phil@teuwen.org>"<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o<br />
gpg: key 0x9B554C36544C89BC marked as ultimately trusted<br />
public and secret key created and signed.<br />
==Creating revokation certificate==<br />
$ gpg --gen-revoke 9B554C36544C89BC > /media/phil/GNUPG/rev-phil_teuwen.org_2016<br />
sec 4096R/0x9B554C36544C89BC 2016-02-04 Philippe Teuwen <phil@teuwen.org><br />
Create a revocation certificate for this key? (y/N) y<br />
Please select the reason for the revocation:<br />
3 = Key is no longer used<br />
Your decision? 3<br />
Enter an optional description; end it with an empty line:<br />
>Using revocation certificate that was generated when key was created.<br />
>It is very likely that I have lost access to the private key.<br />
> <br />
Reason for revocation: Key is no longer used<br />
Using revocation certificate that was generated when key was created. It is very likely that I have lost access to the private key.<br />
Is this okay? (y/N) y<br />
Then printing it on paper<br />
==Creating Encryption subkey==<br />
Idea following https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/ is to create the encryption key out of yubikey and importing it so it can be imported on several yubikey's.<br />
<br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addkey<br />
Please select what kind of key you want:<br />
(6) RSA (encrypt only)<br />
Your selection? 6<br />
What keysize do you want? (2048) 2048<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
gpg> save<br />
==Backup the secret key==<br />
<br />
The "keytocard / save" operations that we will do later will also remove the secret key from your keyring, so better to backup it first!<br />
<br />
$ gpg --export-secret-key 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
$ gpg --delete-secret-key 9B554C36544C89BC<br />
$ gpg --import < /media/phil/GNUPG/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
<br />
==Yubikey== <br />
$ sudo apt-get install yubikey-personalization ykneomgr<br />
$ wget https://raw.githubusercontent.com/Yubico/yubikey-personalization/master/69-yubikey.rules <br />
$ wget https://raw.githubusercontent.com/Yubico/yubikey-personalization/master/70-yubikey.rules <br />
$ sudo mv *rules /etc/udev/rules.d/<br />
$ sudo chown root.root /etc/udev/rules.d/*yubikey.rules<br />
Insert yubikey NEO-n<br />
$ ykinfo -a<br />
On a Yubikey where HID has been deactivated, ykinfo will fail, use ykneomgr instead.<br />
<br>If ykneomgr fails, it may be because you used it for gpg via scdaemon.<br />
<br>Even with "card-timeout 1" in .gnupg/scdaemon.conf I experienced problems once I read some encrypted emails, I have to restart pcscd to free the Yubikey and be able to use ykneomgr.<br />
<br />
To keep possibility to use all modes simultaneously:<br />
$ ykpersonalize -m86<br />
Firmware version 3.3.0 Touch level 1285 Program sequence 1<br />
The USB mode will be set to: 0x86<br />
Commit? (y/n) [n]: y<br />
If ykpersonalize doesn't work (no HID), see ykneomgr<br />
<br />
I wanted to disable HID (as I don't use it but still touch accidentally the key now and then).<br />
<br>But switching to mode 5 (U2F+CCID) didn't disable HID so to get it working I had to switch to mode 1 (CCID) then 5 (U2F+CCID):<br />
ykneomgr -M1<br />
ykneomgr -M5<br />
<br />
==Creating Signature and Authentication subkeys==<br />
Yes default admin PIN is 12345678 and default user PIN is 123456.<br />
<br>We'll change them later.<br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(1) Signature key<br />
Your selection? 1<br />
Enter Admin PIN: 12345678<br />
Enter PIN: 123456<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(3) Authentication key<br />
Your selection? 3<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03 usage: A <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
==Ready to import Encryption subkey?==<br />
At this point we should import the encryption key to the yubikey but I got some error:<br />
gpg: error writing key to card: not supported<br />
Some say to use [https://github.com/Yubico/ykneo-openpgp/tree/master/util keyParser.py] but I found out gpg2 works. Gpg could work directly with the card (except for the keytocard obviously) but Gpg2 needs sdaemon for that: <br />
$ sudo apt-get install gnupg2 scdaemon<br />
Yet another quirk: gnupg gave some warnings about locking from FAT but gnupg2 just refuses using FAT, so I add to the gpg.conf of the SD-Card:<br />
# allow linux to write to FAT disks<br />
lock-never<br />
<br />
While this was working fine earlier, at some point I experiended:<br />
$ gpg2 --card-status<br />
gpg: OpenPGP card not available: Not supported<br />
<br />
The fix was to forbid scdaemon to use the CCID driver but to use PCSC instead. Edit .gnupg/scdaemon.conf:<br />
card-timeout 1<br />
disable-ccid<br />
<br />
The "card-timeout" is supposed to free the card when not in use, still I've typically to restart pcscd if scdaemon keeps locking it.<br />
<br />
==Encryption key to Yubikey==<br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
gpg> toggle<br />
gpg> key 1<br />
sec 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03<br />
ssb* 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: never <br />
ssb 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: never <br />
card-no: 0006 03037217<br />
ssb 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: never <br />
card-no: 0006 03037217<br />
(1) Philippe Teuwen <phil@teuwen.org><br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg> save<br />
==Adding UID and photo==<br />
Choose a 240x288 picture strongly compressed (I chose jpeg quality 20) to obtain a size < 5kb. <br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
gpg> adduid<br />
Real name: Philippe Teuwen<br />
Email address: pteuwen@quarkslab.com<br />
Comment: <br />
You selected this USER-ID:<br />
"Philippe Teuwen <pteuwen@quarkslab.com>"<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o<br />
<br />
gpg> addphoto<br />
Enter JPEG filename for photo ID: ~/phil20.jpg<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03 usage: A <br />
[ultimate] (1) Philippe Teuwen <phil@teuwen.org><br />
[ unknown] (2). Philippe Teuwen <pteuwen@quarkslab.com><br />
[ unknown] (3) [jpeg image of size 4266]<br />
<br />
gpg> uid 1<br />
gpg> primary<br />
gpg> save<br />
==Almost there==<br />
Exporting key<br />
$ gpg --armor --export 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC.asc<br />
And pushing it to http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
Back to the daily .gnupg<br />
$ sudo umount ~/.gnupg<br />
Changing default PINs<br />
$ gpg --card-edit<br />
gpg/card> admin<br />
Admin commands are allowed<br />
gpg/card> passwd<br />
gpg: OpenPGP card no. D2760001240102000006030372170000 detected<br />
1 - change PIN<br />
Your selection? 1<br />
Please enter the PIN<br />
123456<br />
New PIN<br />
... <br />
New PIN<br />
...<br />
PIN changed. <br />
<br />
3 - change Admin PIN<br />
Your selection? 3<br />
gpg: 3 Admin PIN attempts remaining before card is permanently locked<br />
Please enter the Admin PIN<br />
12345678 <br />
New Admin PIN<br />
... <br />
New Admin PIN<br />
...<br />
PIN changed. <br />
<br />
Q - quit<br />
Your selection? q<br />
<br />
gpg/card> forcesig<br />
gpg/card> url<br />
URL to retrieve public key: http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
gpg/card> fetch<br />
gpg: requesting key 0xAEBAADBEE208E2DD from http server www.yobi.be<br />
<br />
gpg/card> quit<br />
<br />
$ gpg --card-status<br />
Application ID ...: D2760001240102000006030372170000<br />
Version ..........: 2.0<br />
Manufacturer .....: unknown<br />
Serial number ....: xxxxxxxxx<br />
Name of cardholder: [not set]<br />
Language prefs ...: [not set]<br />
Sex ..............: unspecified<br />
URL of public key : http://www.yobi.be/files/9B554C36544C89BC.asc<br />
Login data .......: [not set]<br />
Signature PIN ....: not forced<br />
Key attributes ...: 2048R 2048R 2048R<br />
Max. PIN lengths .: 127 127 127<br />
PIN retry counter : 3 3 3<br />
Signature counter : 2<br />
Signature key ....: 67E1 AAA2 46D7 9037 7671 BAD5 AEBA ADBE E208 E2DD<br />
created ....: 2016-02-04 10:56:03<br />
Encryption key....: 55A5 1FF1 F45A A846 EC12 A5D4 47B6 8B62 B62C 8F88<br />
created ....: 2016-02-04 10:26:52<br />
Authentication key: 93FE E3BA 0F4D 4461 19E8 1CBE E515 1B7F DCA9 5A14<br />
created ....: 2016-02-04 10:57:35<br />
General key info..: <br />
pub 2048R/0xAEBAADBEE208E2DD 2016-02-04 Philippe Teuwen <phil@teuwen.org><br />
sec# 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03<br />
ssb> 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
ssb> 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
ssb> 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
Changing default key in gpg.conf<br />
default-key 0xF14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
==Last check==<br />
$ sudo apt-get install hopenpgp-tools<br />
$ hkt export-pubkeys 'AEBAADBEE208E2DD' | hokey lint<br />
All green \o/<br />
==Using Yubikey on another machine==<br />
$ gpg --card-edit<br />
gpg/card> fetch<br />
<br />
==Signing new key with the old one==<br />
$ gpg --default-key 9ad7e3db --sign-key 9B554C36544C89BC<br />
Really sign all user IDs? (y/N) y<br />
(3) I have done very careful checking.<br />
Your selection? (enter `?' for more information): 3<br />
Really sign? (y/N) y<br />
<br />
$ gpg --send-key 9B554C36544C89BC<br />
<br />
As it's a pool I sent it 10x, rather than waiting them to all sync...<br />
<br />
And also for those still using pgp.mit.edu:<br />
$ gpg --keyserver pgp.mit.edu --send-key 9B554C36544C89BC<br />
==Transition==<br />
Now let's ask some helpful souls who signed my old key.<br />
<br />
Stealing and adapting key transition text from https://we.riseup.net/assets/176898/key%20transition<br />
<br />
Mass mailing to those who've signed the old one:<br />
$ gpg --list-sigs 9ad7e3db|grep ^sig|sed 's/.*<//;s/>.*//;/^sig/d'|sort|uniq|tr '\n' ','<br />
<br />
<pre><br />
Date: 2016-02-04<br />
<br />
For a number of reasons[0], I've recently set up a new OpenPGP key,<br />
and will be transitioning away from my old one.<br />
<br />
The old key will continue to be valid for some time, but I prefer all<br />
future correspondence to come to the new one. I would also like this<br />
new key to be re-integrated into the web of trust. This message is<br />
signed by both keys to certify the transition.<br />
<br />
The old key was:<br />
<br />
pub 1024D/0x7A135F579AD7E3DB 2002-05-05 [expires: 2017-08-13]<br />
sub 2048g/0x78FC60279A4A59B9 2002-05-05 [expires: 2017-08-13]<br />
sub 4096R/0xF2FD1762608F63B7 2007-08-16 [expires: 2017-08-13]<br />
fingerprint = 440A 3A9E 56E9 D90E 99D7 63A8 7A13 5F57 9AD7 E3DB<br />
<br />
And the new key is:<br />
pub 4096R/0x9B554C36544C89BC 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0x47B68B62B62C8F88 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0xAEBAADBEE208E2DD 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0xE5151B7FDCA95A14 2016-02-04 [expires: 2018-02-03]<br />
fingerprint = F148 8337 9E8D D09F 0328 0E1B 9B55 4C36 544C 89BC<br />
<br />
To fetch the full key from a public key server, you can simply do:<br />
<br />
gpg --keyserver pool.sks-keyservers.net --recv-key F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you already know my old key, you can now verify that the new key is<br />
signed by the old one:<br />
<br />
gpg --check-sigs F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you don't already know my old key, or you just want to be double<br />
extra paranoid, you can check the fingerprint against the one above:<br />
<br />
gpg --fingerprint F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you are satisfied that you've got the right key, and the UIDs match<br />
what you expect, I'd appreciate it if you would sign my key. You can<br />
do that by issuing the following command:<br />
<br />
**<br />
NOTE: if you have previously signed my key but did a local-only<br />
signature (lsign), you will not want to issue the following, instead<br />
you will want to use --lsign-key, and not send the signatures to the<br />
keyserver<br />
**<br />
<br />
gpg --sign-key F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
I'd like to receive your signatures on my key. You can either send me<br />
an e-mail with the new signatures (if you have a functional MTA on<br />
your system):<br />
<br />
gpg --export F14883379E8DD09F03280E1B9B554C36544C89BC | \<br />
gpg --encrypt -r F14883379E8DD09F03280E1B9B554C36544C89BC --armor | \<br />
mail -s 'OpenPGP Signatures' phil@teuwen.org<br />
<br />
Additionally, I highly recommend that you implement a mechanism to<br />
keep your key material up-to-date so that you obtain the latest<br />
revocations, and other updates in a timely manner. You can do regular<br />
key updates by using parcimonie[1] to refresh your keyring. Parcimonie<br />
is a daemon that slowly refreshes your keyring from a keyserver over<br />
Tor. It uses a randomized sleep, and fresh tor circuits for each key.<br />
The purpose is to make it hard for an attacker to correlate the key<br />
updates with your keyring.<br />
<br />
I also highly recommend checking out the excellent Riseup GPG best<br />
practices doc, from which I stole most of the text for this transition<br />
message ;-)<br />
<br />
https://we.riseup.net/debian/openpgp-best-practices<br />
<br />
Please let me know if you have any questions, or problems, and sorry<br />
for the inconvenience.<br />
<br />
If you're curious, I've briefly documented all the steps using a Yubikey on my wiki [2].<br />
<br />
Philippe Teuwen<br />
<br />
0. https://www.debian-administration.org/users/dkg/weblog/48<br />
1. https://gaffer.ptitcanardnoir.org/intrigeri/code/parcimonie/<br />
2. http://wiki.yobi.be/wiki/GnuPG<br />
</pre><br />
<br />
In an email signed with my old key...<br />
==Signing keys==<br />
To sign keys it requires the SD-Card.<br />
<br />
To enable it:<br />
cp -a ~/.gnupg/pubring.gpg /media/phil/GNUPG/<br />
cp -a ~/.gnupg/trustdb.gpg /media/phil/GNUPG/<br />
sudo mount --bind /media/phil/GNUPG ~/.gnupg<br />
To disable it:<br />
sudo umount ~/.gnupg<br />
cp -a /media/phil/GNUPG/pubring.gpg ~/.gnupg/<br />
cp -a /media/phil/GNUPG/trustdb.gpg ~/.gnupg/<br />
<br />
==Extending expiration time==<br />
<pre><br />
sudo service pcscd stop<br />
cp -a ~/.gnupg/pubring.gpg /media/phil/GNUPG/<br />
cp -a ~/.gnupg/trustdb.gpg /media/phil/GNUPG/<br />
sudo mount --bind /media/phil/GNUPG ~/.gnupg<br />
gpg --edit-key 9B554C36544C89BC<br />
key 47B68B62B62C8F88<br />
key C68777A356ACFA91<br />
key C83BE1071CDE1015<br />
expire<br />
3y<br />
save<br />
sudo umount ~/.gnupg<br />
cp -a /media/phil/GNUPG/pubring.gpg ~/.gnupg/<br />
cp -a /media/phil/GNUPG/trustdb.gpg ~/.gnupg/<br />
gpg --armor --export 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC.asc<br />
umount /media/phil/GNUPG<br />
sudo service pcscd start<br />
gpg --keyserver keys.gnupg.net --send-key 9B554C36544C89BC<br />
gpg --armor --export 9B554C36544C89BC > /tmp/9B554C36544C89BC.asc<br />
</pre><br />
<br />
And pushing it to http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
==OpenSSH==<br />
Using the OpenPGP key and the Yubikey for OpenSSH<br />
$ sudo apt-get install monkeysphere<br />
<br />
We need to specifying the authentication subkey here!<br />
$ gpgkey2ssh E5151B7FDCA95A14<br />
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeNXjx+2M1F7CuYRMkoHv6iUnXe93JatAjhmh1ciXIrTk/Agc4JEgb9uTxYA3pNe/qXVSrSdAqJu0cUENj30rLvKOliL0MH1TxGDnZ0JSxv0UA/skwapRwiTKgsHHng7gbq1/07eBl0luywLT1E/4sbeZ6cAK9e8JAO9GahiyYnrzt2nXzoVxGYl2AHkHFuCqHEMH/KQuQ8Tba+ZjqpRbjnreuI9tJQ8eWpMjLr2AYuWgAU5GtbWFHJi0WJI/2kYybT7co7Kldoxg8PRvBE/QQPdP811jc06pf4CVgfCGvCWZaslqG5pLy8LneqYciuQuXDCQMlAWniThTPjf5VLhx COMMENT<br />
<br />
<br />
== Paper backup of the secret keys ==<br />
If you don't trust SD-Card longevity...<br />
apt-get install paperkey<br />
gpg --export-secret-key key_id | paperkey<br />
==OpenPGP cards==<br />
See https://en.wikipedia.org/wiki/OpenPGP_card for existing cards.<br />
<br />
==OpenPGP card 3.x JavaCard Applets==<br />
* [https://github.com/ANSSI-FR/SmartPGP SmartPGP], an implementation of the OpenPGP card 3.x specification in JavaCard (>=3.0.4) by ANSSI, including elliptic curves and RSA-4096<br />
<br />
<source lang=bash><br />
sudo apt-get install ant<br />
git clone git@github.com:martinpaljak/oracle_javacard_sdks.git<br />
git clone git@github.com:ANSSI-FR/SmartPGP.git<br />
cd SmartPGP<br />
echo JAVACARD_HOME=$(pwd)/../oracle_javacard_sdks/jc304_kit > javacard.properties<br />
ant<br />
# => ./build/fr/anssi/smartpgp/javacard/smartpgp.cap<br />
</source><br />
<br />
This requires a JavaCard 3.0.4 compliant card but it might be used with JavaCard 3.0.1 cards without the ECC parts, see [https://github.com/ANSSI-FR/SmartPGP/issues/1 this issue] and the [https://github.com/ANSSI-FR/SmartPGP/tree/javacard-3.0.1 javacard-3.0.1] branch.<br />
<br />
==OpenPGP card 2.x JavaCard Applets==<br />
See also https://subgraph.com/sgos/documentation/smartcards/index.fr.html<br />
<br />
* [https://github.com/jderuiter/javacard-openpgpcard Joeri de Ruiter's implementation]<br />
* [https://github.com/Yubico/ykneo-openpgp Yubikey NEO implementation]<br />
** [https://www.yubico.com/support/knowledge-base/categories/articles/reset-applet-yubikey/ Resetting the OpenPGP Applet]<br />
* [https://github.com/FluffyKaon/OpenPGP-Card FluffyKaon implementation]<br />
<br />
Yubikey and FluffyKaon implementations can be easily compiled from https://github.com/martinpaljak/AppletPlayground:<br />
<br />
<source lang=bash><br />
git clone https://github.com/martinpaljak/AppletPlayground.git<br />
cd AppletPlayground<br />
ant<br />
</source><br />
<br />
The author has also a [https://github.com/martinpaljak/GlobalPlatformPro GlobalPlatform tool] to inject the CAP into the card.<br />
<br>To compile it you need openjdk-7-jdk which at the moment seems hard to get on my Debian (old dependencies problem), so I'll stick to openjdk-8 and fetch a pre-built version [https://github.com/martinpaljak/GlobalPlatformPro/releases here].<br />
<br>Usage:<br />
<source lang=bash><br />
java -jar gp.jar --help<br />
</source><br />
<br />
Or using JCOP's jcshell:<br />
<pre><br />
/card<br />
auth<br />
upload OpenPGPApplet.cap<br />
install D27600012401 D2760001240102000000000000010000<br />
ctrl^d<br />
</pre><br />
<br />
Testing the newly created OpenPGP card:<br />
<source lang=bash><br />
gpg --card-status<br />
</source><br />
<br />
==Adding an OpenPGP card==<br />
<br />
How to add a card (YubiKey or JavaCard) to an existing key, using our backup SDCard.<br />
<br />
First check that the card is accessible:<br />
<br />
<pre><br />
$ gpg --card-status<br />
Reader ...........: Yubico Yubikey 4 OTP U2F CCID 00 00<br />
Application ID ...: D2760001240102010006069331940000<br />
Version ..........: 2.1<br />
Manufacturer .....: Yubico<br />
Serial number ....: 06933194<br />
Name of cardholder: [not set]<br />
Language prefs ...: [not set]<br />
Sex ..............: unspecified<br />
URL of public key : [not set]<br />
Login data .......: [not set]<br />
Signature PIN ....: not forced<br />
Key attributes ...: rsa2048 rsa2048 rsa2048<br />
Max. PIN lengths .: 127 127 127<br />
PIN retry counter : 3 0 3<br />
Signature counter : 0<br />
Signature key ....: [none]<br />
Encryption key....: [none]<br />
Authentication key: [none]<br />
General key info..: [none]<br />
</pre><br />
<br />
You may have problems getting it detected, especially if another card was used before. Reboot.<br />
<br />
Map the SDCard:<br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
# mount --bind /media/phil/GNUPG ~/.gnupg <br />
</source><br />
Import again the keys (mainly the encryption key) moved to previous cards:<br />
<source lang=bash><br />
$ gpg --import < ~/.gnupg/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
</source><br />
<br />
Create new sub-keys:<br />
<source lang=bash><br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(1) Signature key<br />
# remember default PIN is 123456, default admin PIN is 12345678<br />
What keysize do you want for the Signature key? (2048) 4096<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
# wait for key to be generated and provide PINs if requested<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(3) Authentication key<br />
What keysize do you want for the Authentication key? (2048) 4096<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
gpg> save<br />
</source><br />
<br />
Btw the notation "sec#" or "ssb#" means the key or subkey is not accessible (it's on another keyring or card).<br />
<br>The notation "sec>" or "ssb>" means the card or subcard is stored on a card known to the system.<br />
<br>The same convention is used with gpg --list-secret-keys<br />
<br />
Now we can try to transfer the encryption key but it will probably fail because it's still associated with the previous card:<br />
<source lang=bash><br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
card-no: 0000 00000001 <= still previous card<br />
gpg> toggle<br />
gpg> key 1<br />
ssb* rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
card-no: 0000 00000001 <= still previous card<br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg: KEYTOCARD failed: Unusable secret key<br />
</source><br />
<br />
The only solution I found was to clean the secret keyring, import again and sync card again:<br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
$ mv .gnupg/private-keys-v1.d/ .gnupg/private-keys-v1.d.old<br />
$ gpg --import < ~/.gnupg/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
$ gpg --card-status<br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
Secret key is available.<br />
sec rsa4096/0x9B554C36544C89BC<br />
created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub rsa2048/0xAEBAADBEE208E2DD<br />
created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub rsa2048/0xE5151B7FDCA95A14<br />
created: 2016-02-04 expires: 2018-02-03 usage: A <br />
sub rsa2048/0xF7B61B5663205C74<br />
created: 2017-12-02 expires: 2019-12-02 usage: S <br />
sub rsa2048/0xBDBF13DADE186465<br />
created: 2017-12-02 expires: 2019-12-02 usage: A <br />
ssb rsa4096/0xC68777A356ACFA91<br />
created: 2017-12-07 expires: 2019-12-07 usage: S <br />
card-no: 0006 06933194<br />
ssb rsa4096/0xC83BE1071CDE1015<br />
created: 2017-12-07 expires: 2019-12-07 usage: A <br />
card-no: 0006 06933194<br />
</source><br />
We see the encryption is not bound to a card anymore and the two new subkeys are bound to our card. So we can try again:<br />
<br />
<source lang=bash><br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
gpg> toggle<br />
gpg> key 1<br />
ssb* rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg> save<br />
</source><br />
<br />
Export the public key and unmount the SDCard:<br />
<source lang=bash><br />
$ gpg --armor --export 9B554C36544C89BC > ~/.gnupg/9B554C36544C89BC_v3.asc<br />
</source><br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
$ sudo umount ~/.gnupg<br />
$ gpg --import < /media/phil/GNUPG/9B554C36544C89BC_v3.asc<br />
$ gpg --card-status<br />
$ gpg --edit-key 9B554C36544C89BC<br />
</source><br />
The encryption key is probably still linked to the previous card.<br />
<br>Again, I didn't see a clean way to do it.<br />
<br>Backup your secret keyring before messing up with it, then, try to find the file corresponding to the encryption key.<br />
It's a file smaller than the others, containing a string "shadowed-private-key". Compare it with the other gnupg secret keyring: /media/phil/GNUPG/private-keys-v1.d/ and replace it with the new copy (or just delete it, it should be synced again from the card).<br />
<br />
<source lang=bash><br />
cp /media/phil/GNUPG/private-keys-v1.d/AFE2DF0A021D08C752DE0ED0A8D020E8E57F4296.key ~/.gnupg/private-keys-v1.d <br />
</source><br />
<br />
Now edit the key again, the encryption subkey should be associated with the new card.<br />
<br />
Edit the card for the final adjustments:<br />
<br />
<pre><br />
$ gpg --card-edit<br />
gpg/card> admin<br />
gpg/card> passwd<br />
1 - change PIN<br />
Your selection? 1<br />
PIN changed.<br />
3 - change Admin PIN<br />
Your selection? 3<br />
PIN changed.<br />
Your selection? q<br />
gpg/card> forcesig<br />
gpg/card> name<br />
Cardholder's surname: Teuwen<br />
Cardholder's given name: Philippe<br />
gpg/card> url<br />
URL to retrieve public key: http://www.yobi.be/files/9B554C36544C89BC.asc<br />
gpg/card> fetch<br />
gpg: requesting key from 'http://www.yobi.be/files/9B554C36544C89BC.asc'<br />
gpg/card> quit<br />
</pre><br />
<br />
<br />
Push the updated key to various keyservers.<br />
<source lang=bash><br />
gpg --keyserver hkps.pool.sks-keyservers.net --send-key 9B554C36544C89BC<br />
</source><br />
<br />
==[[GnuPG signing parties]]==<br />
<br />
==[[Short GnuPG reference card]]==<br />
<br />
==[[GnuPG old notes]]==</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=GnuPG&diff=10514GnuPG2019-12-09T14:44:34Z<p>PhilippeTeuwen: /* Extending expiration time */</p>
<hr />
<div>Those are personal notes when I decided in 2016 to generate a new key as transition from my previous one (from 2002!).<br />
<br>Daily subkeys are stored on a Yubikey NEO-n and master key is stored offline.<br />
<br />
==Resources==<br />
The steps I followed and which I describe only very briefly here, more to remind how I combined them, came from those excellent resources:<br />
* https://help.riseup.net/en/security/message-security/openpgp/best-practices<br />
* http://ekaia.org/blog/2009/05/10/creating-new-gpgkey/<br />
* https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/<br />
<br />
==gpg.conf==<br />
First step was to refresh a little bit my gpg.conf.<br />
<br>See https://github.com/ioerror/duraconf/raw/master/configs/gnupg/gpg.conf for commented gpg.conf and https://help.riseup.net/en/security/message-security/openpgp/best-practices for the reasons behind.<br />
<pre><br />
no-emit-version<br />
no-comments<br />
keyid-format 0xlong<br />
with-fingerprint<br />
list-options show-uid-validity<br />
verify-options show-uid-validity<br />
use-agent<br />
keyserver hkps://hkps.pool.sks-keyservers.net<br />
keyserver-options ca-cert-file=/home/phil/.gnupg/keyservers/sks-keyservers.netCA.pem<br />
keyserver-options no-try-dns-srv<br />
keyserver-options no-honor-keyserver-url<br />
keyserver-options include-revoked<br />
personal-cipher-preferences AES256 AES192 AES CAST5<br />
personal-digest-preferences SHA512 SHA384 SHA256 SHA224<br />
cert-digest-algo SHA512<br />
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed<br />
</pre><br />
Some more of my own:<br />
<pre><br />
no-greeting<br />
keyserver-options auto-key-retrieve honor-http-proxy<br />
list-options show-policy-urls show-notations show-keyserver-urls show-uid-validity show-unusable-uids show-unusable-subkeys show-sig-expire<br />
verify-options show-photos show-policy-urls show-notations show-keyserver-urls show-uid-validity show-unusable-uids<br />
utf8-strings<br />
ask-cert-level<br />
</pre><br />
==Offline storage==<br />
Digressing a little bit...<br />
<br />
I chose an old SDCard to store the master key offline, but it required a little bit of maintenance because it wasn't mounting automatically:<br />
<br />
Making sude partition table was ok:<br />
$ sudo fdisk /dev/mmcblk0<br />
Checking FS signatures:<br />
$ sudo wipefs /dev/mmcblk0p1<br />
There was still a mix of FAT and ext2 signatures, so deleting the ext2 signature based on the returned offset:<br />
$ sudo wipefs -o 0x438 /dev/mmcblk0p1<br />
Formatting<br />
$ sudo mkfs.vfat /dev/mmcblk0p1<br />
$ sudo fatlabel /dev/mmcblk0p1 GNUPG<br />
Reinserting it to get it mounted automatically, then<br />
$ cp ~/.gnupg/gpg.conf /media/phil/GNUPG<br />
$ sudo mount --bind /media/phil/GNUPG ~/.gnupg <br />
==Entropy==<br />
Creating large keys require large entropy.<br />
<br>I like haveged for that:<br />
$ sudo apt-get install haveged<br />
==Creating main key==<br />
Idea following https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/ is to keep the main key completely offline so if yubikey is lost, there is still some hope.<br />
$ gpg --expert --gen-key<br />
Please select what kind of key you want:<br />
(8) RSA (set your own capabilities)<br />
Your selection? 8<br />
Current allowed actions: Sign Certify Encrypt <br />
Your selection? s<br />
Your selection? e<br />
Current allowed actions: Certify <br />
Your selection? q<br />
What keysize do you want? (2048) 4096<br />
Requested keysize is 4096 bits<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Real name: Philippe Teuwen<br />
Email address: phil@teuwen.org<br />
Comment: <br />
You selected this USER-ID:<br />
"Philippe Teuwen <phil@teuwen.org>"<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o<br />
gpg: key 0x9B554C36544C89BC marked as ultimately trusted<br />
public and secret key created and signed.<br />
==Creating revokation certificate==<br />
$ gpg --gen-revoke 9B554C36544C89BC > /media/phil/GNUPG/rev-phil_teuwen.org_2016<br />
sec 4096R/0x9B554C36544C89BC 2016-02-04 Philippe Teuwen <phil@teuwen.org><br />
Create a revocation certificate for this key? (y/N) y<br />
Please select the reason for the revocation:<br />
3 = Key is no longer used<br />
Your decision? 3<br />
Enter an optional description; end it with an empty line:<br />
>Using revocation certificate that was generated when key was created.<br />
>It is very likely that I have lost access to the private key.<br />
> <br />
Reason for revocation: Key is no longer used<br />
Using revocation certificate that was generated when key was created. It is very likely that I have lost access to the private key.<br />
Is this okay? (y/N) y<br />
Then printing it on paper<br />
==Creating Encryption subkey==<br />
Idea following https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/ is to create the encryption key out of yubikey and importing it so it can be imported on several yubikey's.<br />
<br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addkey<br />
Please select what kind of key you want:<br />
(6) RSA (encrypt only)<br />
Your selection? 6<br />
What keysize do you want? (2048) 2048<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
gpg> save<br />
==Backup the secret key==<br />
<br />
The "keytocard / save" operations that we will do later will also remove the secret key from your keyring, so better to backup it first!<br />
<br />
$ gpg --export-secret-key 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
$ gpg --delete-secret-key 9B554C36544C89BC<br />
$ gpg --import < /media/phil/GNUPG/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
<br />
==Yubikey== <br />
$ sudo apt-get install yubikey-personalization ykneomgr<br />
$ wget https://raw.githubusercontent.com/Yubico/yubikey-personalization/master/69-yubikey.rules <br />
$ wget https://raw.githubusercontent.com/Yubico/yubikey-personalization/master/70-yubikey.rules <br />
$ sudo mv *rules /etc/udev/rules.d/<br />
$ sudo chown root.root /etc/udev/rules.d/*yubikey.rules<br />
Insert yubikey NEO-n<br />
$ ykinfo -a<br />
On a Yubikey where HID has been deactivated, ykinfo will fail, use ykneomgr instead.<br />
<br>If ykneomgr fails, it may be because you used it for gpg via scdaemon.<br />
<br>Even with "card-timeout 1" in .gnupg/scdaemon.conf I experienced problems once I read some encrypted emails, I have to restart pcscd to free the Yubikey and be able to use ykneomgr.<br />
<br />
To keep possibility to use all modes simultaneously:<br />
$ ykpersonalize -m86<br />
Firmware version 3.3.0 Touch level 1285 Program sequence 1<br />
The USB mode will be set to: 0x86<br />
Commit? (y/n) [n]: y<br />
If ykpersonalize doesn't work (no HID), see ykneomgr<br />
<br />
I wanted to disable HID (as I don't use it but still touch accidentally the key now and then).<br />
<br>But switching to mode 5 (U2F+CCID) didn't disable HID so to get it working I had to switch to mode 1 (CCID) then 5 (U2F+CCID):<br />
ykneomgr -M1<br />
ykneomgr -M5<br />
<br />
==Creating Signature and Authentication subkeys==<br />
Yes default admin PIN is 12345678 and default user PIN is 123456.<br />
<br>We'll change them later.<br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(1) Signature key<br />
Your selection? 1<br />
Enter Admin PIN: 12345678<br />
Enter PIN: 123456<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(3) Authentication key<br />
Your selection? 3<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03 usage: A <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
==Ready to import Encryption subkey?==<br />
At this point we should import the encryption key to the yubikey but I got some error:<br />
gpg: error writing key to card: not supported<br />
Some say to use [https://github.com/Yubico/ykneo-openpgp/tree/master/util keyParser.py] but I found out gpg2 works. Gpg could work directly with the card (except for the keytocard obviously) but Gpg2 needs sdaemon for that: <br />
$ sudo apt-get install gnupg2 scdaemon<br />
Yet another quirk: gnupg gave some warnings about locking from FAT but gnupg2 just refuses using FAT, so I add to the gpg.conf of the SD-Card:<br />
# allow linux to write to FAT disks<br />
lock-never<br />
<br />
While this was working fine earlier, at some point I experiended:<br />
$ gpg2 --card-status<br />
gpg: OpenPGP card not available: Not supported<br />
<br />
The fix was to forbid scdaemon to use the CCID driver but to use PCSC instead. Edit .gnupg/scdaemon.conf:<br />
card-timeout 1<br />
disable-ccid<br />
<br />
The "card-timeout" is supposed to free the card when not in use, still I've typically to restart pcscd if scdaemon keeps locking it.<br />
<br />
==Encryption key to Yubikey==<br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
gpg> toggle<br />
gpg> key 1<br />
sec 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03<br />
ssb* 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: never <br />
ssb 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: never <br />
card-no: 0006 03037217<br />
ssb 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: never <br />
card-no: 0006 03037217<br />
(1) Philippe Teuwen <phil@teuwen.org><br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg> save<br />
==Adding UID and photo==<br />
Choose a 240x288 picture strongly compressed (I chose jpeg quality 20) to obtain a size < 5kb. <br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
gpg> adduid<br />
Real name: Philippe Teuwen<br />
Email address: pteuwen@quarkslab.com<br />
Comment: <br />
You selected this USER-ID:<br />
"Philippe Teuwen <pteuwen@quarkslab.com>"<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o<br />
<br />
gpg> addphoto<br />
Enter JPEG filename for photo ID: ~/phil20.jpg<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03 usage: A <br />
[ultimate] (1) Philippe Teuwen <phil@teuwen.org><br />
[ unknown] (2). Philippe Teuwen <pteuwen@quarkslab.com><br />
[ unknown] (3) [jpeg image of size 4266]<br />
<br />
gpg> uid 1<br />
gpg> primary<br />
gpg> save<br />
==Almost there==<br />
Exporting key<br />
$ gpg --armor --export 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC.asc<br />
And pushing it to http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
Back to the daily .gnupg<br />
$ sudo umount ~/.gnupg<br />
Changing default PINs<br />
$ gpg --card-edit<br />
gpg/card> admin<br />
Admin commands are allowed<br />
gpg/card> passwd<br />
gpg: OpenPGP card no. D2760001240102000006030372170000 detected<br />
1 - change PIN<br />
Your selection? 1<br />
Please enter the PIN<br />
123456<br />
New PIN<br />
... <br />
New PIN<br />
...<br />
PIN changed. <br />
<br />
3 - change Admin PIN<br />
Your selection? 3<br />
gpg: 3 Admin PIN attempts remaining before card is permanently locked<br />
Please enter the Admin PIN<br />
12345678 <br />
New Admin PIN<br />
... <br />
New Admin PIN<br />
...<br />
PIN changed. <br />
<br />
Q - quit<br />
Your selection? q<br />
<br />
gpg/card> forcesig<br />
gpg/card> url<br />
URL to retrieve public key: http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
gpg/card> fetch<br />
gpg: requesting key 0xAEBAADBEE208E2DD from http server www.yobi.be<br />
<br />
gpg/card> quit<br />
<br />
$ gpg --card-status<br />
Application ID ...: D2760001240102000006030372170000<br />
Version ..........: 2.0<br />
Manufacturer .....: unknown<br />
Serial number ....: xxxxxxxxx<br />
Name of cardholder: [not set]<br />
Language prefs ...: [not set]<br />
Sex ..............: unspecified<br />
URL of public key : http://www.yobi.be/files/9B554C36544C89BC.asc<br />
Login data .......: [not set]<br />
Signature PIN ....: not forced<br />
Key attributes ...: 2048R 2048R 2048R<br />
Max. PIN lengths .: 127 127 127<br />
PIN retry counter : 3 3 3<br />
Signature counter : 2<br />
Signature key ....: 67E1 AAA2 46D7 9037 7671 BAD5 AEBA ADBE E208 E2DD<br />
created ....: 2016-02-04 10:56:03<br />
Encryption key....: 55A5 1FF1 F45A A846 EC12 A5D4 47B6 8B62 B62C 8F88<br />
created ....: 2016-02-04 10:26:52<br />
Authentication key: 93FE E3BA 0F4D 4461 19E8 1CBE E515 1B7F DCA9 5A14<br />
created ....: 2016-02-04 10:57:35<br />
General key info..: <br />
pub 2048R/0xAEBAADBEE208E2DD 2016-02-04 Philippe Teuwen <phil@teuwen.org><br />
sec# 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03<br />
ssb> 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
ssb> 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
ssb> 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
Changing default key in gpg.conf<br />
default-key 0xF14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
==Last check==<br />
$ sudo apt-get install hopenpgp-tools<br />
$ hkt export-pubkeys 'AEBAADBEE208E2DD' | hokey lint<br />
All green \o/<br />
==Using Yubikey on another machine==<br />
$ gpg --card-edit<br />
gpg/card> fetch<br />
<br />
==Signing new key with the old one==<br />
$ gpg --default-key 9ad7e3db --sign-key 9B554C36544C89BC<br />
Really sign all user IDs? (y/N) y<br />
(3) I have done very careful checking.<br />
Your selection? (enter `?' for more information): 3<br />
Really sign? (y/N) y<br />
<br />
$ gpg --send-key 9B554C36544C89BC<br />
<br />
As it's a pool I sent it 10x, rather than waiting them to all sync...<br />
<br />
And also for those still using pgp.mit.edu:<br />
$ gpg --keyserver pgp.mit.edu --send-key 9B554C36544C89BC<br />
==Transition==<br />
Now let's ask some helpful souls who signed my old key.<br />
<br />
Stealing and adapting key transition text from https://we.riseup.net/assets/176898/key%20transition<br />
<br />
Mass mailing to those who've signed the old one:<br />
$ gpg --list-sigs 9ad7e3db|grep ^sig|sed 's/.*<//;s/>.*//;/^sig/d'|sort|uniq|tr '\n' ','<br />
<br />
<pre><br />
Date: 2016-02-04<br />
<br />
For a number of reasons[0], I've recently set up a new OpenPGP key,<br />
and will be transitioning away from my old one.<br />
<br />
The old key will continue to be valid for some time, but I prefer all<br />
future correspondence to come to the new one. I would also like this<br />
new key to be re-integrated into the web of trust. This message is<br />
signed by both keys to certify the transition.<br />
<br />
The old key was:<br />
<br />
pub 1024D/0x7A135F579AD7E3DB 2002-05-05 [expires: 2017-08-13]<br />
sub 2048g/0x78FC60279A4A59B9 2002-05-05 [expires: 2017-08-13]<br />
sub 4096R/0xF2FD1762608F63B7 2007-08-16 [expires: 2017-08-13]<br />
fingerprint = 440A 3A9E 56E9 D90E 99D7 63A8 7A13 5F57 9AD7 E3DB<br />
<br />
And the new key is:<br />
pub 4096R/0x9B554C36544C89BC 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0x47B68B62B62C8F88 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0xAEBAADBEE208E2DD 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0xE5151B7FDCA95A14 2016-02-04 [expires: 2018-02-03]<br />
fingerprint = F148 8337 9E8D D09F 0328 0E1B 9B55 4C36 544C 89BC<br />
<br />
To fetch the full key from a public key server, you can simply do:<br />
<br />
gpg --keyserver pool.sks-keyservers.net --recv-key F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you already know my old key, you can now verify that the new key is<br />
signed by the old one:<br />
<br />
gpg --check-sigs F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you don't already know my old key, or you just want to be double<br />
extra paranoid, you can check the fingerprint against the one above:<br />
<br />
gpg --fingerprint F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you are satisfied that you've got the right key, and the UIDs match<br />
what you expect, I'd appreciate it if you would sign my key. You can<br />
do that by issuing the following command:<br />
<br />
**<br />
NOTE: if you have previously signed my key but did a local-only<br />
signature (lsign), you will not want to issue the following, instead<br />
you will want to use --lsign-key, and not send the signatures to the<br />
keyserver<br />
**<br />
<br />
gpg --sign-key F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
I'd like to receive your signatures on my key. You can either send me<br />
an e-mail with the new signatures (if you have a functional MTA on<br />
your system):<br />
<br />
gpg --export F14883379E8DD09F03280E1B9B554C36544C89BC | \<br />
gpg --encrypt -r F14883379E8DD09F03280E1B9B554C36544C89BC --armor | \<br />
mail -s 'OpenPGP Signatures' phil@teuwen.org<br />
<br />
Additionally, I highly recommend that you implement a mechanism to<br />
keep your key material up-to-date so that you obtain the latest<br />
revocations, and other updates in a timely manner. You can do regular<br />
key updates by using parcimonie[1] to refresh your keyring. Parcimonie<br />
is a daemon that slowly refreshes your keyring from a keyserver over<br />
Tor. It uses a randomized sleep, and fresh tor circuits for each key.<br />
The purpose is to make it hard for an attacker to correlate the key<br />
updates with your keyring.<br />
<br />
I also highly recommend checking out the excellent Riseup GPG best<br />
practices doc, from which I stole most of the text for this transition<br />
message ;-)<br />
<br />
https://we.riseup.net/debian/openpgp-best-practices<br />
<br />
Please let me know if you have any questions, or problems, and sorry<br />
for the inconvenience.<br />
<br />
If you're curious, I've briefly documented all the steps using a Yubikey on my wiki [2].<br />
<br />
Philippe Teuwen<br />
<br />
0. https://www.debian-administration.org/users/dkg/weblog/48<br />
1. https://gaffer.ptitcanardnoir.org/intrigeri/code/parcimonie/<br />
2. http://wiki.yobi.be/wiki/GnuPG<br />
</pre><br />
<br />
In an email signed with my old key...<br />
==Signing keys==<br />
To sign keys it requires the SD-Card.<br />
<br />
To enable it:<br />
cp -a ~/.gnupg/pubring.gpg /media/phil/GNUPG/<br />
cp -a ~/.gnupg/trustdb.gpg /media/phil/GNUPG/<br />
sudo mount --bind /media/phil/GNUPG ~/.gnupg<br />
To disable it:<br />
sudo umount ~/.gnupg<br />
cp -a /media/phil/GNUPG/pubring.gpg ~/.gnupg/<br />
cp -a /media/phil/GNUPG/trustdb.gpg ~/.gnupg/<br />
<br />
==Extending expiration time==<br />
<pre><br />
sudo service pcscd stop<br />
cp -a ~/.gnupg/pubring.gpg /media/phil/GNUPG/<br />
cp -a ~/.gnupg/trustdb.gpg /media/phil/GNUPG/<br />
sudo mount --bind /media/phil/GNUPG ~/.gnupg<br />
gpg --edit-key 9B554C36544C89BC<br />
key 47B68B62B62C8F88<br />
key C68777A356ACFA91<br />
key C83BE1071CDE1015<br />
expire<br />
3y<br />
save<br />
sudo umount ~/.gnupg<br />
cp -a /media/phil/GNUPG/pubring.gpg ~/.gnupg/<br />
cp -a /media/phil/GNUPG/trustdb.gpg ~/.gnupg/<br />
umount /media/phil/GNUPG<br />
sudo service pcscd start<br />
gpg --keyserver keys.gnupg.net --send-key 9B554C36544C89BC<br />
</pre><br />
<br />
==OpenSSH==<br />
Using the OpenPGP key and the Yubikey for OpenSSH<br />
$ sudo apt-get install monkeysphere<br />
<br />
We need to specifying the authentication subkey here!<br />
$ gpgkey2ssh E5151B7FDCA95A14<br />
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeNXjx+2M1F7CuYRMkoHv6iUnXe93JatAjhmh1ciXIrTk/Agc4JEgb9uTxYA3pNe/qXVSrSdAqJu0cUENj30rLvKOliL0MH1TxGDnZ0JSxv0UA/skwapRwiTKgsHHng7gbq1/07eBl0luywLT1E/4sbeZ6cAK9e8JAO9GahiyYnrzt2nXzoVxGYl2AHkHFuCqHEMH/KQuQ8Tba+ZjqpRbjnreuI9tJQ8eWpMjLr2AYuWgAU5GtbWFHJi0WJI/2kYybT7co7Kldoxg8PRvBE/QQPdP811jc06pf4CVgfCGvCWZaslqG5pLy8LneqYciuQuXDCQMlAWniThTPjf5VLhx COMMENT<br />
<br />
<br />
== Paper backup of the secret keys ==<br />
If you don't trust SD-Card longevity...<br />
apt-get install paperkey<br />
gpg --export-secret-key key_id | paperkey<br />
==OpenPGP cards==<br />
See https://en.wikipedia.org/wiki/OpenPGP_card for existing cards.<br />
<br />
==OpenPGP card 3.x JavaCard Applets==<br />
* [https://github.com/ANSSI-FR/SmartPGP SmartPGP], an implementation of the OpenPGP card 3.x specification in JavaCard (>=3.0.4) by ANSSI, including elliptic curves and RSA-4096<br />
<br />
<source lang=bash><br />
sudo apt-get install ant<br />
git clone git@github.com:martinpaljak/oracle_javacard_sdks.git<br />
git clone git@github.com:ANSSI-FR/SmartPGP.git<br />
cd SmartPGP<br />
echo JAVACARD_HOME=$(pwd)/../oracle_javacard_sdks/jc304_kit > javacard.properties<br />
ant<br />
# => ./build/fr/anssi/smartpgp/javacard/smartpgp.cap<br />
</source><br />
<br />
This requires a JavaCard 3.0.4 compliant card but it might be used with JavaCard 3.0.1 cards without the ECC parts, see [https://github.com/ANSSI-FR/SmartPGP/issues/1 this issue] and the [https://github.com/ANSSI-FR/SmartPGP/tree/javacard-3.0.1 javacard-3.0.1] branch.<br />
<br />
==OpenPGP card 2.x JavaCard Applets==<br />
See also https://subgraph.com/sgos/documentation/smartcards/index.fr.html<br />
<br />
* [https://github.com/jderuiter/javacard-openpgpcard Joeri de Ruiter's implementation]<br />
* [https://github.com/Yubico/ykneo-openpgp Yubikey NEO implementation]<br />
** [https://www.yubico.com/support/knowledge-base/categories/articles/reset-applet-yubikey/ Resetting the OpenPGP Applet]<br />
* [https://github.com/FluffyKaon/OpenPGP-Card FluffyKaon implementation]<br />
<br />
Yubikey and FluffyKaon implementations can be easily compiled from https://github.com/martinpaljak/AppletPlayground:<br />
<br />
<source lang=bash><br />
git clone https://github.com/martinpaljak/AppletPlayground.git<br />
cd AppletPlayground<br />
ant<br />
</source><br />
<br />
The author has also a [https://github.com/martinpaljak/GlobalPlatformPro GlobalPlatform tool] to inject the CAP into the card.<br />
<br>To compile it you need openjdk-7-jdk which at the moment seems hard to get on my Debian (old dependencies problem), so I'll stick to openjdk-8 and fetch a pre-built version [https://github.com/martinpaljak/GlobalPlatformPro/releases here].<br />
<br>Usage:<br />
<source lang=bash><br />
java -jar gp.jar --help<br />
</source><br />
<br />
Or using JCOP's jcshell:<br />
<pre><br />
/card<br />
auth<br />
upload OpenPGPApplet.cap<br />
install D27600012401 D2760001240102000000000000010000<br />
ctrl^d<br />
</pre><br />
<br />
Testing the newly created OpenPGP card:<br />
<source lang=bash><br />
gpg --card-status<br />
</source><br />
<br />
==Adding an OpenPGP card==<br />
<br />
How to add a card (YubiKey or JavaCard) to an existing key, using our backup SDCard.<br />
<br />
First check that the card is accessible:<br />
<br />
<pre><br />
$ gpg --card-status<br />
Reader ...........: Yubico Yubikey 4 OTP U2F CCID 00 00<br />
Application ID ...: D2760001240102010006069331940000<br />
Version ..........: 2.1<br />
Manufacturer .....: Yubico<br />
Serial number ....: 06933194<br />
Name of cardholder: [not set]<br />
Language prefs ...: [not set]<br />
Sex ..............: unspecified<br />
URL of public key : [not set]<br />
Login data .......: [not set]<br />
Signature PIN ....: not forced<br />
Key attributes ...: rsa2048 rsa2048 rsa2048<br />
Max. PIN lengths .: 127 127 127<br />
PIN retry counter : 3 0 3<br />
Signature counter : 0<br />
Signature key ....: [none]<br />
Encryption key....: [none]<br />
Authentication key: [none]<br />
General key info..: [none]<br />
</pre><br />
<br />
You may have problems getting it detected, especially if another card was used before. Reboot.<br />
<br />
Map the SDCard:<br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
# mount --bind /media/phil/GNUPG ~/.gnupg <br />
</source><br />
Import again the keys (mainly the encryption key) moved to previous cards:<br />
<source lang=bash><br />
$ gpg --import < ~/.gnupg/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
</source><br />
<br />
Create new sub-keys:<br />
<source lang=bash><br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(1) Signature key<br />
# remember default PIN is 123456, default admin PIN is 12345678<br />
What keysize do you want for the Signature key? (2048) 4096<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
# wait for key to be generated and provide PINs if requested<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(3) Authentication key<br />
What keysize do you want for the Authentication key? (2048) 4096<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
gpg> save<br />
</source><br />
<br />
Btw the notation "sec#" or "ssb#" means the key or subkey is not accessible (it's on another keyring or card).<br />
<br>The notation "sec>" or "ssb>" means the card or subcard is stored on a card known to the system.<br />
<br>The same convention is used with gpg --list-secret-keys<br />
<br />
Now we can try to transfer the encryption key but it will probably fail because it's still associated with the previous card:<br />
<source lang=bash><br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
card-no: 0000 00000001 <= still previous card<br />
gpg> toggle<br />
gpg> key 1<br />
ssb* rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
card-no: 0000 00000001 <= still previous card<br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg: KEYTOCARD failed: Unusable secret key<br />
</source><br />
<br />
The only solution I found was to clean the secret keyring, import again and sync card again:<br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
$ mv .gnupg/private-keys-v1.d/ .gnupg/private-keys-v1.d.old<br />
$ gpg --import < ~/.gnupg/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
$ gpg --card-status<br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
Secret key is available.<br />
sec rsa4096/0x9B554C36544C89BC<br />
created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub rsa2048/0xAEBAADBEE208E2DD<br />
created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub rsa2048/0xE5151B7FDCA95A14<br />
created: 2016-02-04 expires: 2018-02-03 usage: A <br />
sub rsa2048/0xF7B61B5663205C74<br />
created: 2017-12-02 expires: 2019-12-02 usage: S <br />
sub rsa2048/0xBDBF13DADE186465<br />
created: 2017-12-02 expires: 2019-12-02 usage: A <br />
ssb rsa4096/0xC68777A356ACFA91<br />
created: 2017-12-07 expires: 2019-12-07 usage: S <br />
card-no: 0006 06933194<br />
ssb rsa4096/0xC83BE1071CDE1015<br />
created: 2017-12-07 expires: 2019-12-07 usage: A <br />
card-no: 0006 06933194<br />
</source><br />
We see the encryption is not bound to a card anymore and the two new subkeys are bound to our card. So we can try again:<br />
<br />
<source lang=bash><br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
gpg> toggle<br />
gpg> key 1<br />
ssb* rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg> save<br />
</source><br />
<br />
Export the public key and unmount the SDCard:<br />
<source lang=bash><br />
$ gpg --armor --export 9B554C36544C89BC > ~/.gnupg/9B554C36544C89BC_v3.asc<br />
</source><br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
$ sudo umount ~/.gnupg<br />
$ gpg --import < /media/phil/GNUPG/9B554C36544C89BC_v3.asc<br />
$ gpg --card-status<br />
$ gpg --edit-key 9B554C36544C89BC<br />
</source><br />
The encryption key is probably still linked to the previous card.<br />
<br>Again, I didn't see a clean way to do it.<br />
<br>Backup your secret keyring before messing up with it, then, try to find the file corresponding to the encryption key.<br />
It's a file smaller than the others, containing a string "shadowed-private-key". Compare it with the other gnupg secret keyring: /media/phil/GNUPG/private-keys-v1.d/ and replace it with the new copy (or just delete it, it should be synced again from the card).<br />
<br />
<source lang=bash><br />
cp /media/phil/GNUPG/private-keys-v1.d/AFE2DF0A021D08C752DE0ED0A8D020E8E57F4296.key ~/.gnupg/private-keys-v1.d <br />
</source><br />
<br />
Now edit the key again, the encryption subkey should be associated with the new card.<br />
<br />
Edit the card for the final adjustments:<br />
<br />
<pre><br />
$ gpg --card-edit<br />
gpg/card> admin<br />
gpg/card> passwd<br />
1 - change PIN<br />
Your selection? 1<br />
PIN changed.<br />
3 - change Admin PIN<br />
Your selection? 3<br />
PIN changed.<br />
Your selection? q<br />
gpg/card> forcesig<br />
gpg/card> name<br />
Cardholder's surname: Teuwen<br />
Cardholder's given name: Philippe<br />
gpg/card> url<br />
URL to retrieve public key: http://www.yobi.be/files/9B554C36544C89BC.asc<br />
gpg/card> fetch<br />
gpg: requesting key from 'http://www.yobi.be/files/9B554C36544C89BC.asc'<br />
gpg/card> quit<br />
</pre><br />
<br />
<br />
Push the updated key to various keyservers.<br />
<source lang=bash><br />
gpg --keyserver hkps.pool.sks-keyservers.net --send-key 9B554C36544C89BC<br />
</source><br />
<br />
==[[GnuPG signing parties]]==<br />
<br />
==[[Short GnuPG reference card]]==<br />
<br />
==[[GnuPG old notes]]==</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=GnuPG&diff=10513GnuPG2019-12-08T21:17:10Z<p>PhilippeTeuwen: /* Signing keys */</p>
<hr />
<div>Those are personal notes when I decided in 2016 to generate a new key as transition from my previous one (from 2002!).<br />
<br>Daily subkeys are stored on a Yubikey NEO-n and master key is stored offline.<br />
<br />
==Resources==<br />
The steps I followed and which I describe only very briefly here, more to remind how I combined them, came from those excellent resources:<br />
* https://help.riseup.net/en/security/message-security/openpgp/best-practices<br />
* http://ekaia.org/blog/2009/05/10/creating-new-gpgkey/<br />
* https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/<br />
<br />
==gpg.conf==<br />
First step was to refresh a little bit my gpg.conf.<br />
<br>See https://github.com/ioerror/duraconf/raw/master/configs/gnupg/gpg.conf for commented gpg.conf and https://help.riseup.net/en/security/message-security/openpgp/best-practices for the reasons behind.<br />
<pre><br />
no-emit-version<br />
no-comments<br />
keyid-format 0xlong<br />
with-fingerprint<br />
list-options show-uid-validity<br />
verify-options show-uid-validity<br />
use-agent<br />
keyserver hkps://hkps.pool.sks-keyservers.net<br />
keyserver-options ca-cert-file=/home/phil/.gnupg/keyservers/sks-keyservers.netCA.pem<br />
keyserver-options no-try-dns-srv<br />
keyserver-options no-honor-keyserver-url<br />
keyserver-options include-revoked<br />
personal-cipher-preferences AES256 AES192 AES CAST5<br />
personal-digest-preferences SHA512 SHA384 SHA256 SHA224<br />
cert-digest-algo SHA512<br />
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed<br />
</pre><br />
Some more of my own:<br />
<pre><br />
no-greeting<br />
keyserver-options auto-key-retrieve honor-http-proxy<br />
list-options show-policy-urls show-notations show-keyserver-urls show-uid-validity show-unusable-uids show-unusable-subkeys show-sig-expire<br />
verify-options show-photos show-policy-urls show-notations show-keyserver-urls show-uid-validity show-unusable-uids<br />
utf8-strings<br />
ask-cert-level<br />
</pre><br />
==Offline storage==<br />
Digressing a little bit...<br />
<br />
I chose an old SDCard to store the master key offline, but it required a little bit of maintenance because it wasn't mounting automatically:<br />
<br />
Making sude partition table was ok:<br />
$ sudo fdisk /dev/mmcblk0<br />
Checking FS signatures:<br />
$ sudo wipefs /dev/mmcblk0p1<br />
There was still a mix of FAT and ext2 signatures, so deleting the ext2 signature based on the returned offset:<br />
$ sudo wipefs -o 0x438 /dev/mmcblk0p1<br />
Formatting<br />
$ sudo mkfs.vfat /dev/mmcblk0p1<br />
$ sudo fatlabel /dev/mmcblk0p1 GNUPG<br />
Reinserting it to get it mounted automatically, then<br />
$ cp ~/.gnupg/gpg.conf /media/phil/GNUPG<br />
$ sudo mount --bind /media/phil/GNUPG ~/.gnupg <br />
==Entropy==<br />
Creating large keys require large entropy.<br />
<br>I like haveged for that:<br />
$ sudo apt-get install haveged<br />
==Creating main key==<br />
Idea following https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/ is to keep the main key completely offline so if yubikey is lost, there is still some hope.<br />
$ gpg --expert --gen-key<br />
Please select what kind of key you want:<br />
(8) RSA (set your own capabilities)<br />
Your selection? 8<br />
Current allowed actions: Sign Certify Encrypt <br />
Your selection? s<br />
Your selection? e<br />
Current allowed actions: Certify <br />
Your selection? q<br />
What keysize do you want? (2048) 4096<br />
Requested keysize is 4096 bits<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Real name: Philippe Teuwen<br />
Email address: phil@teuwen.org<br />
Comment: <br />
You selected this USER-ID:<br />
"Philippe Teuwen <phil@teuwen.org>"<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o<br />
gpg: key 0x9B554C36544C89BC marked as ultimately trusted<br />
public and secret key created and signed.<br />
==Creating revokation certificate==<br />
$ gpg --gen-revoke 9B554C36544C89BC > /media/phil/GNUPG/rev-phil_teuwen.org_2016<br />
sec 4096R/0x9B554C36544C89BC 2016-02-04 Philippe Teuwen <phil@teuwen.org><br />
Create a revocation certificate for this key? (y/N) y<br />
Please select the reason for the revocation:<br />
3 = Key is no longer used<br />
Your decision? 3<br />
Enter an optional description; end it with an empty line:<br />
>Using revocation certificate that was generated when key was created.<br />
>It is very likely that I have lost access to the private key.<br />
> <br />
Reason for revocation: Key is no longer used<br />
Using revocation certificate that was generated when key was created. It is very likely that I have lost access to the private key.<br />
Is this okay? (y/N) y<br />
Then printing it on paper<br />
==Creating Encryption subkey==<br />
Idea following https://www.esev.com/blog/post/2015-01-pgp-ssh-key-on-yubikey-neo/ is to create the encryption key out of yubikey and importing it so it can be imported on several yubikey's.<br />
<br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addkey<br />
Please select what kind of key you want:<br />
(6) RSA (encrypt only)<br />
Your selection? 6<br />
What keysize do you want? (2048) 2048<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
gpg> save<br />
==Backup the secret key==<br />
<br />
The "keytocard / save" operations that we will do later will also remove the secret key from your keyring, so better to backup it first!<br />
<br />
$ gpg --export-secret-key 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
$ gpg --delete-secret-key 9B554C36544C89BC<br />
$ gpg --import < /media/phil/GNUPG/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
<br />
==Yubikey== <br />
$ sudo apt-get install yubikey-personalization ykneomgr<br />
$ wget https://raw.githubusercontent.com/Yubico/yubikey-personalization/master/69-yubikey.rules <br />
$ wget https://raw.githubusercontent.com/Yubico/yubikey-personalization/master/70-yubikey.rules <br />
$ sudo mv *rules /etc/udev/rules.d/<br />
$ sudo chown root.root /etc/udev/rules.d/*yubikey.rules<br />
Insert yubikey NEO-n<br />
$ ykinfo -a<br />
On a Yubikey where HID has been deactivated, ykinfo will fail, use ykneomgr instead.<br />
<br>If ykneomgr fails, it may be because you used it for gpg via scdaemon.<br />
<br>Even with "card-timeout 1" in .gnupg/scdaemon.conf I experienced problems once I read some encrypted emails, I have to restart pcscd to free the Yubikey and be able to use ykneomgr.<br />
<br />
To keep possibility to use all modes simultaneously:<br />
$ ykpersonalize -m86<br />
Firmware version 3.3.0 Touch level 1285 Program sequence 1<br />
The USB mode will be set to: 0x86<br />
Commit? (y/n) [n]: y<br />
If ykpersonalize doesn't work (no HID), see ykneomgr<br />
<br />
I wanted to disable HID (as I don't use it but still touch accidentally the key now and then).<br />
<br>But switching to mode 5 (U2F+CCID) didn't disable HID so to get it working I had to switch to mode 1 (CCID) then 5 (U2F+CCID):<br />
ykneomgr -M1<br />
ykneomgr -M5<br />
<br />
==Creating Signature and Authentication subkeys==<br />
Yes default admin PIN is 12345678 and default user PIN is 123456.<br />
<br>We'll change them later.<br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(1) Signature key<br />
Your selection? 1<br />
Enter Admin PIN: 12345678<br />
Enter PIN: 123456<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(3) Authentication key<br />
Your selection? 3<br />
Please specify how long the key should be valid.<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03 usage: A <br />
[ultimate] (1). Philippe Teuwen <phil@teuwen.org><br />
==Ready to import Encryption subkey?==<br />
At this point we should import the encryption key to the yubikey but I got some error:<br />
gpg: error writing key to card: not supported<br />
Some say to use [https://github.com/Yubico/ykneo-openpgp/tree/master/util keyParser.py] but I found out gpg2 works. Gpg could work directly with the card (except for the keytocard obviously) but Gpg2 needs sdaemon for that: <br />
$ sudo apt-get install gnupg2 scdaemon<br />
Yet another quirk: gnupg gave some warnings about locking from FAT but gnupg2 just refuses using FAT, so I add to the gpg.conf of the SD-Card:<br />
# allow linux to write to FAT disks<br />
lock-never<br />
<br />
While this was working fine earlier, at some point I experiended:<br />
$ gpg2 --card-status<br />
gpg: OpenPGP card not available: Not supported<br />
<br />
The fix was to forbid scdaemon to use the CCID driver but to use PCSC instead. Edit .gnupg/scdaemon.conf:<br />
card-timeout 1<br />
disable-ccid<br />
<br />
The "card-timeout" is supposed to free the card when not in use, still I've typically to restart pcscd if scdaemon keeps locking it.<br />
<br />
==Encryption key to Yubikey==<br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
gpg> toggle<br />
gpg> key 1<br />
sec 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03<br />
ssb* 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: never <br />
ssb 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: never <br />
card-no: 0006 03037217<br />
ssb 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: never <br />
card-no: 0006 03037217<br />
(1) Philippe Teuwen <phil@teuwen.org><br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg> save<br />
==Adding UID and photo==<br />
Choose a 240x288 picture strongly compressed (I chose jpeg quality 20) to obtain a size < 5kb. <br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
gpg> adduid<br />
Real name: Philippe Teuwen<br />
Email address: pteuwen@quarkslab.com<br />
Comment: <br />
You selected this USER-ID:<br />
"Philippe Teuwen <pteuwen@quarkslab.com>"<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o<br />
<br />
gpg> addphoto<br />
Enter JPEG filename for photo ID: ~/phil20.jpg<br />
pub 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
sub 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03 usage: A <br />
[ultimate] (1) Philippe Teuwen <phil@teuwen.org><br />
[ unknown] (2). Philippe Teuwen <pteuwen@quarkslab.com><br />
[ unknown] (3) [jpeg image of size 4266]<br />
<br />
gpg> uid 1<br />
gpg> primary<br />
gpg> save<br />
==Almost there==<br />
Exporting key<br />
$ gpg --armor --export 9B554C36544C89BC > /media/phil/GNUPG/9B554C36544C89BC.asc<br />
And pushing it to http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
Back to the daily .gnupg<br />
$ sudo umount ~/.gnupg<br />
Changing default PINs<br />
$ gpg --card-edit<br />
gpg/card> admin<br />
Admin commands are allowed<br />
gpg/card> passwd<br />
gpg: OpenPGP card no. D2760001240102000006030372170000 detected<br />
1 - change PIN<br />
Your selection? 1<br />
Please enter the PIN<br />
123456<br />
New PIN<br />
... <br />
New PIN<br />
...<br />
PIN changed. <br />
<br />
3 - change Admin PIN<br />
Your selection? 3<br />
gpg: 3 Admin PIN attempts remaining before card is permanently locked<br />
Please enter the Admin PIN<br />
12345678 <br />
New Admin PIN<br />
... <br />
New Admin PIN<br />
...<br />
PIN changed. <br />
<br />
Q - quit<br />
Your selection? q<br />
<br />
gpg/card> forcesig<br />
gpg/card> url<br />
URL to retrieve public key: http://www.yobi.be/files/9B554C36544C89BC.asc<br />
<br />
gpg/card> fetch<br />
gpg: requesting key 0xAEBAADBEE208E2DD from http server www.yobi.be<br />
<br />
gpg/card> quit<br />
<br />
$ gpg --card-status<br />
Application ID ...: D2760001240102000006030372170000<br />
Version ..........: 2.0<br />
Manufacturer .....: unknown<br />
Serial number ....: xxxxxxxxx<br />
Name of cardholder: [not set]<br />
Language prefs ...: [not set]<br />
Sex ..............: unspecified<br />
URL of public key : http://www.yobi.be/files/9B554C36544C89BC.asc<br />
Login data .......: [not set]<br />
Signature PIN ....: not forced<br />
Key attributes ...: 2048R 2048R 2048R<br />
Max. PIN lengths .: 127 127 127<br />
PIN retry counter : 3 3 3<br />
Signature counter : 2<br />
Signature key ....: 67E1 AAA2 46D7 9037 7671 BAD5 AEBA ADBE E208 E2DD<br />
created ....: 2016-02-04 10:56:03<br />
Encryption key....: 55A5 1FF1 F45A A846 EC12 A5D4 47B6 8B62 B62C 8F88<br />
created ....: 2016-02-04 10:26:52<br />
Authentication key: 93FE E3BA 0F4D 4461 19E8 1CBE E515 1B7F DCA9 5A14<br />
created ....: 2016-02-04 10:57:35<br />
General key info..: <br />
pub 2048R/0xAEBAADBEE208E2DD 2016-02-04 Philippe Teuwen <phil@teuwen.org><br />
sec# 4096R/0x9B554C36544C89BC created: 2016-02-04 expires: 2018-02-03<br />
ssb> 2048R/0x47B68B62B62C8F88 created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
ssb> 2048R/0xAEBAADBEE208E2DD created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
ssb> 2048R/0xE5151B7FDCA95A14 created: 2016-02-04 expires: 2018-02-03<br />
card-no: 0006 03037217<br />
Changing default key in gpg.conf<br />
default-key 0xF14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
==Last check==<br />
$ sudo apt-get install hopenpgp-tools<br />
$ hkt export-pubkeys 'AEBAADBEE208E2DD' | hokey lint<br />
All green \o/<br />
==Using Yubikey on another machine==<br />
$ gpg --card-edit<br />
gpg/card> fetch<br />
<br />
==Signing new key with the old one==<br />
$ gpg --default-key 9ad7e3db --sign-key 9B554C36544C89BC<br />
Really sign all user IDs? (y/N) y<br />
(3) I have done very careful checking.<br />
Your selection? (enter `?' for more information): 3<br />
Really sign? (y/N) y<br />
<br />
$ gpg --send-key 9B554C36544C89BC<br />
<br />
As it's a pool I sent it 10x, rather than waiting them to all sync...<br />
<br />
And also for those still using pgp.mit.edu:<br />
$ gpg --keyserver pgp.mit.edu --send-key 9B554C36544C89BC<br />
==Transition==<br />
Now let's ask some helpful souls who signed my old key.<br />
<br />
Stealing and adapting key transition text from https://we.riseup.net/assets/176898/key%20transition<br />
<br />
Mass mailing to those who've signed the old one:<br />
$ gpg --list-sigs 9ad7e3db|grep ^sig|sed 's/.*<//;s/>.*//;/^sig/d'|sort|uniq|tr '\n' ','<br />
<br />
<pre><br />
Date: 2016-02-04<br />
<br />
For a number of reasons[0], I've recently set up a new OpenPGP key,<br />
and will be transitioning away from my old one.<br />
<br />
The old key will continue to be valid for some time, but I prefer all<br />
future correspondence to come to the new one. I would also like this<br />
new key to be re-integrated into the web of trust. This message is<br />
signed by both keys to certify the transition.<br />
<br />
The old key was:<br />
<br />
pub 1024D/0x7A135F579AD7E3DB 2002-05-05 [expires: 2017-08-13]<br />
sub 2048g/0x78FC60279A4A59B9 2002-05-05 [expires: 2017-08-13]<br />
sub 4096R/0xF2FD1762608F63B7 2007-08-16 [expires: 2017-08-13]<br />
fingerprint = 440A 3A9E 56E9 D90E 99D7 63A8 7A13 5F57 9AD7 E3DB<br />
<br />
And the new key is:<br />
pub 4096R/0x9B554C36544C89BC 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0x47B68B62B62C8F88 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0xAEBAADBEE208E2DD 2016-02-04 [expires: 2018-02-03]<br />
sub 2048R/0xE5151B7FDCA95A14 2016-02-04 [expires: 2018-02-03]<br />
fingerprint = F148 8337 9E8D D09F 0328 0E1B 9B55 4C36 544C 89BC<br />
<br />
To fetch the full key from a public key server, you can simply do:<br />
<br />
gpg --keyserver pool.sks-keyservers.net --recv-key F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you already know my old key, you can now verify that the new key is<br />
signed by the old one:<br />
<br />
gpg --check-sigs F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you don't already know my old key, or you just want to be double<br />
extra paranoid, you can check the fingerprint against the one above:<br />
<br />
gpg --fingerprint F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
If you are satisfied that you've got the right key, and the UIDs match<br />
what you expect, I'd appreciate it if you would sign my key. You can<br />
do that by issuing the following command:<br />
<br />
**<br />
NOTE: if you have previously signed my key but did a local-only<br />
signature (lsign), you will not want to issue the following, instead<br />
you will want to use --lsign-key, and not send the signatures to the<br />
keyserver<br />
**<br />
<br />
gpg --sign-key F14883379E8DD09F03280E1B9B554C36544C89BC<br />
<br />
I'd like to receive your signatures on my key. You can either send me<br />
an e-mail with the new signatures (if you have a functional MTA on<br />
your system):<br />
<br />
gpg --export F14883379E8DD09F03280E1B9B554C36544C89BC | \<br />
gpg --encrypt -r F14883379E8DD09F03280E1B9B554C36544C89BC --armor | \<br />
mail -s 'OpenPGP Signatures' phil@teuwen.org<br />
<br />
Additionally, I highly recommend that you implement a mechanism to<br />
keep your key material up-to-date so that you obtain the latest<br />
revocations, and other updates in a timely manner. You can do regular<br />
key updates by using parcimonie[1] to refresh your keyring. Parcimonie<br />
is a daemon that slowly refreshes your keyring from a keyserver over<br />
Tor. It uses a randomized sleep, and fresh tor circuits for each key.<br />
The purpose is to make it hard for an attacker to correlate the key<br />
updates with your keyring.<br />
<br />
I also highly recommend checking out the excellent Riseup GPG best<br />
practices doc, from which I stole most of the text for this transition<br />
message ;-)<br />
<br />
https://we.riseup.net/debian/openpgp-best-practices<br />
<br />
Please let me know if you have any questions, or problems, and sorry<br />
for the inconvenience.<br />
<br />
If you're curious, I've briefly documented all the steps using a Yubikey on my wiki [2].<br />
<br />
Philippe Teuwen<br />
<br />
0. https://www.debian-administration.org/users/dkg/weblog/48<br />
1. https://gaffer.ptitcanardnoir.org/intrigeri/code/parcimonie/<br />
2. http://wiki.yobi.be/wiki/GnuPG<br />
</pre><br />
<br />
In an email signed with my old key...<br />
==Signing keys==<br />
To sign keys it requires the SD-Card.<br />
<br />
To enable it:<br />
cp -a ~/.gnupg/pubring.gpg /media/phil/GNUPG/<br />
cp -a ~/.gnupg/trustdb.gpg /media/phil/GNUPG/<br />
sudo mount --bind /media/phil/GNUPG ~/.gnupg<br />
To disable it:<br />
sudo umount ~/.gnupg<br />
cp -a /media/phil/GNUPG/pubring.gpg ~/.gnupg/<br />
cp -a /media/phil/GNUPG/trustdb.gpg ~/.gnupg/<br />
<br />
==Extending expiration time==<br />
<pre><br />
sudo service pcscd stop<br />
cp -a ~/.gnupg/pubring.gpg /media/phil/GNUPG/<br />
cp -a ~/.gnupg/trustdb.gpg /media/phil/GNUPG/<br />
sudo mount --bind /media/phil/GNUPG ~/.gnupg<br />
gpg --edit-key 9B554C36544C89BC<br />
key 47B68B62B62C8F88<br />
key C68777A356ACFA91<br />
key C83BE1071CDE1015<br />
expire<br />
3y<br />
save<br />
sudo umount ~/.gnupg<br />
cp -a /media/phil/GNUPG/pubring.gpg ~/.gnupg/<br />
cp -a /media/phil/GNUPG/trustdb.gpg ~/.gnupg/<br />
umount /media/phil/GNUPG<br />
sudo service pcscd start<br />
gpg --keyserver keys.qb --send-key 9B554C36544C89BC<br />
gpg --keyserver keys.gnupg.net --send-key 9B554C36544C89BC<br />
</pre><br />
<br />
==OpenSSH==<br />
Using the OpenPGP key and the Yubikey for OpenSSH<br />
$ sudo apt-get install monkeysphere<br />
<br />
We need to specifying the authentication subkey here!<br />
$ gpgkey2ssh E5151B7FDCA95A14<br />
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeNXjx+2M1F7CuYRMkoHv6iUnXe93JatAjhmh1ciXIrTk/Agc4JEgb9uTxYA3pNe/qXVSrSdAqJu0cUENj30rLvKOliL0MH1TxGDnZ0JSxv0UA/skwapRwiTKgsHHng7gbq1/07eBl0luywLT1E/4sbeZ6cAK9e8JAO9GahiyYnrzt2nXzoVxGYl2AHkHFuCqHEMH/KQuQ8Tba+ZjqpRbjnreuI9tJQ8eWpMjLr2AYuWgAU5GtbWFHJi0WJI/2kYybT7co7Kldoxg8PRvBE/QQPdP811jc06pf4CVgfCGvCWZaslqG5pLy8LneqYciuQuXDCQMlAWniThTPjf5VLhx COMMENT<br />
<br />
<br />
== Paper backup of the secret keys ==<br />
If you don't trust SD-Card longevity...<br />
apt-get install paperkey<br />
gpg --export-secret-key key_id | paperkey<br />
==OpenPGP cards==<br />
See https://en.wikipedia.org/wiki/OpenPGP_card for existing cards.<br />
<br />
==OpenPGP card 3.x JavaCard Applets==<br />
* [https://github.com/ANSSI-FR/SmartPGP SmartPGP], an implementation of the OpenPGP card 3.x specification in JavaCard (>=3.0.4) by ANSSI, including elliptic curves and RSA-4096<br />
<br />
<source lang=bash><br />
sudo apt-get install ant<br />
git clone git@github.com:martinpaljak/oracle_javacard_sdks.git<br />
git clone git@github.com:ANSSI-FR/SmartPGP.git<br />
cd SmartPGP<br />
echo JAVACARD_HOME=$(pwd)/../oracle_javacard_sdks/jc304_kit > javacard.properties<br />
ant<br />
# => ./build/fr/anssi/smartpgp/javacard/smartpgp.cap<br />
</source><br />
<br />
This requires a JavaCard 3.0.4 compliant card but it might be used with JavaCard 3.0.1 cards without the ECC parts, see [https://github.com/ANSSI-FR/SmartPGP/issues/1 this issue] and the [https://github.com/ANSSI-FR/SmartPGP/tree/javacard-3.0.1 javacard-3.0.1] branch.<br />
<br />
==OpenPGP card 2.x JavaCard Applets==<br />
See also https://subgraph.com/sgos/documentation/smartcards/index.fr.html<br />
<br />
* [https://github.com/jderuiter/javacard-openpgpcard Joeri de Ruiter's implementation]<br />
* [https://github.com/Yubico/ykneo-openpgp Yubikey NEO implementation]<br />
** [https://www.yubico.com/support/knowledge-base/categories/articles/reset-applet-yubikey/ Resetting the OpenPGP Applet]<br />
* [https://github.com/FluffyKaon/OpenPGP-Card FluffyKaon implementation]<br />
<br />
Yubikey and FluffyKaon implementations can be easily compiled from https://github.com/martinpaljak/AppletPlayground:<br />
<br />
<source lang=bash><br />
git clone https://github.com/martinpaljak/AppletPlayground.git<br />
cd AppletPlayground<br />
ant<br />
</source><br />
<br />
The author has also a [https://github.com/martinpaljak/GlobalPlatformPro GlobalPlatform tool] to inject the CAP into the card.<br />
<br>To compile it you need openjdk-7-jdk which at the moment seems hard to get on my Debian (old dependencies problem), so I'll stick to openjdk-8 and fetch a pre-built version [https://github.com/martinpaljak/GlobalPlatformPro/releases here].<br />
<br>Usage:<br />
<source lang=bash><br />
java -jar gp.jar --help<br />
</source><br />
<br />
Or using JCOP's jcshell:<br />
<pre><br />
/card<br />
auth<br />
upload OpenPGPApplet.cap<br />
install D27600012401 D2760001240102000000000000010000<br />
ctrl^d<br />
</pre><br />
<br />
Testing the newly created OpenPGP card:<br />
<source lang=bash><br />
gpg --card-status<br />
</source><br />
<br />
==Adding an OpenPGP card==<br />
<br />
How to add a card (YubiKey or JavaCard) to an existing key, using our backup SDCard.<br />
<br />
First check that the card is accessible:<br />
<br />
<pre><br />
$ gpg --card-status<br />
Reader ...........: Yubico Yubikey 4 OTP U2F CCID 00 00<br />
Application ID ...: D2760001240102010006069331940000<br />
Version ..........: 2.1<br />
Manufacturer .....: Yubico<br />
Serial number ....: 06933194<br />
Name of cardholder: [not set]<br />
Language prefs ...: [not set]<br />
Sex ..............: unspecified<br />
URL of public key : [not set]<br />
Login data .......: [not set]<br />
Signature PIN ....: not forced<br />
Key attributes ...: rsa2048 rsa2048 rsa2048<br />
Max. PIN lengths .: 127 127 127<br />
PIN retry counter : 3 0 3<br />
Signature counter : 0<br />
Signature key ....: [none]<br />
Encryption key....: [none]<br />
Authentication key: [none]<br />
General key info..: [none]<br />
</pre><br />
<br />
You may have problems getting it detected, especially if another card was used before. Reboot.<br />
<br />
Map the SDCard:<br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
# mount --bind /media/phil/GNUPG ~/.gnupg <br />
</source><br />
Import again the keys (mainly the encryption key) moved to previous cards:<br />
<source lang=bash><br />
$ gpg --import < ~/.gnupg/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
</source><br />
<br />
Create new sub-keys:<br />
<source lang=bash><br />
$ gpg --edit-key 9B554C36544C89BC<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(1) Signature key<br />
# remember default PIN is 123456, default admin PIN is 12345678<br />
What keysize do you want for the Signature key? (2048) 4096<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
# wait for key to be generated and provide PINs if requested<br />
gpg> addcardkey<br />
Please select the type of key to generate:<br />
(3) Authentication key<br />
What keysize do you want for the Authentication key? (2048) 4096<br />
Key is valid for? (0) 2y<br />
Is this correct? (y/N) y<br />
Really create? (y/N) y<br />
gpg> save<br />
</source><br />
<br />
Btw the notation "sec#" or "ssb#" means the key or subkey is not accessible (it's on another keyring or card).<br />
<br>The notation "sec>" or "ssb>" means the card or subcard is stored on a card known to the system.<br />
<br>The same convention is used with gpg --list-secret-keys<br />
<br />
Now we can try to transfer the encryption key but it will probably fail because it's still associated with the previous card:<br />
<source lang=bash><br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
card-no: 0000 00000001 <= still previous card<br />
gpg> toggle<br />
gpg> key 1<br />
ssb* rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
card-no: 0000 00000001 <= still previous card<br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg: KEYTOCARD failed: Unusable secret key<br />
</source><br />
<br />
The only solution I found was to clean the secret keyring, import again and sync card again:<br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
$ mv .gnupg/private-keys-v1.d/ .gnupg/private-keys-v1.d.old<br />
$ gpg --import < ~/.gnupg/9B554C36544C89BC-2016-02-04-47B68B62B62C8F88-secret.pgp<br />
$ gpg --card-status<br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
Secret key is available.<br />
sec rsa4096/0x9B554C36544C89BC<br />
created: 2016-02-04 expires: 2018-02-03 usage: C <br />
trust: ultimate validity: ultimate<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
sub rsa2048/0xAEBAADBEE208E2DD<br />
created: 2016-02-04 expires: 2018-02-03 usage: S <br />
sub rsa2048/0xE5151B7FDCA95A14<br />
created: 2016-02-04 expires: 2018-02-03 usage: A <br />
sub rsa2048/0xF7B61B5663205C74<br />
created: 2017-12-02 expires: 2019-12-02 usage: S <br />
sub rsa2048/0xBDBF13DADE186465<br />
created: 2017-12-02 expires: 2019-12-02 usage: A <br />
ssb rsa4096/0xC68777A356ACFA91<br />
created: 2017-12-07 expires: 2019-12-07 usage: S <br />
card-no: 0006 06933194<br />
ssb rsa4096/0xC83BE1071CDE1015<br />
created: 2017-12-07 expires: 2019-12-07 usage: A <br />
card-no: 0006 06933194<br />
</source><br />
We see the encryption is not bound to a card anymore and the two new subkeys are bound to our card. So we can try again:<br />
<br />
<source lang=bash><br />
$ gpg2 --edit-key 9B554C36544C89BC<br />
ssb rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
gpg> toggle<br />
gpg> key 1<br />
ssb* rsa2048/0x47B68B62B62C8F88<br />
created: 2016-02-04 expires: 2018-02-03 usage: E <br />
gpg> keytocard<br />
Please select where to store the key:<br />
(2) Encryption key<br />
Your selection? 2<br />
gpg> save<br />
</source><br />
<br />
Export the public key and unmount the SDCard:<br />
<source lang=bash><br />
$ gpg --armor --export 9B554C36544C89BC > ~/.gnupg/9B554C36544C89BC_v3.asc<br />
</source><br />
<br />
<source lang=bash><br />
$ pkill gpg-agent<br />
$ sudo umount ~/.gnupg<br />
$ gpg --import < /media/phil/GNUPG/9B554C36544C89BC_v3.asc<br />
$ gpg --card-status<br />
$ gpg --edit-key 9B554C36544C89BC<br />
</source><br />
The encryption key is probably still linked to the previous card.<br />
<br>Again, I didn't see a clean way to do it.<br />
<br>Backup your secret keyring before messing up with it, then, try to find the file corresponding to the encryption key.<br />
It's a file smaller than the others, containing a string "shadowed-private-key". Compare it with the other gnupg secret keyring: /media/phil/GNUPG/private-keys-v1.d/ and replace it with the new copy (or just delete it, it should be synced again from the card).<br />
<br />
<source lang=bash><br />
cp /media/phil/GNUPG/private-keys-v1.d/AFE2DF0A021D08C752DE0ED0A8D020E8E57F4296.key ~/.gnupg/private-keys-v1.d <br />
</source><br />
<br />
Now edit the key again, the encryption subkey should be associated with the new card.<br />
<br />
Edit the card for the final adjustments:<br />
<br />
<pre><br />
$ gpg --card-edit<br />
gpg/card> admin<br />
gpg/card> passwd<br />
1 - change PIN<br />
Your selection? 1<br />
PIN changed.<br />
3 - change Admin PIN<br />
Your selection? 3<br />
PIN changed.<br />
Your selection? q<br />
gpg/card> forcesig<br />
gpg/card> name<br />
Cardholder's surname: Teuwen<br />
Cardholder's given name: Philippe<br />
gpg/card> url<br />
URL to retrieve public key: http://www.yobi.be/files/9B554C36544C89BC.asc<br />
gpg/card> fetch<br />
gpg: requesting key from 'http://www.yobi.be/files/9B554C36544C89BC.asc'<br />
gpg/card> quit<br />
</pre><br />
<br />
<br />
Push the updated key to various keyservers.<br />
<source lang=bash><br />
gpg --keyserver hkps.pool.sks-keyservers.net --send-key 9B554C36544C89BC<br />
</source><br />
<br />
==[[GnuPG signing parties]]==<br />
<br />
==[[Short GnuPG reference card]]==<br />
<br />
==[[GnuPG old notes]]==</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10512Laptop Dell XPS 152019-11-26T11:37:48Z<p>PhilippeTeuwen: /* HiDPI */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* Secure Boot: disable<br />
* SATA: switch from Raid to AHCI<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
* POST/Fastboot/Thorough<br />
* auto os recovery threshold off<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
'''xpra'''<br />
<br>cf https://xpra.org/trac/ticket/2492<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10511Laptop Dell XPS 152019-11-26T11:36:42Z<p>PhilippeTeuwen: /* HiDPI */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* Secure Boot: disable<br />
* SATA: switch from Raid to AHCI<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
* POST/Fastboot/Thorough<br />
* auto os recovery threshold off<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
Cinnamon / System Settings / Desktop Scaling has the same effect as `gsettings set org.cinnamon.desktop.interface scaling-factor 2`<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Laptop_Dell_XPS_15&diff=10510Laptop Dell XPS 152019-11-19T09:39:39Z<p>PhilippeTeuwen: /* Bios */</p>
<hr />
<div><br />
Notes about installing a Debian Stretch on a Dell XPS 15<br />
==Hardware==<br />
Dell XPS 15 model 9550 (variant with touchscreen & PCIe m.2 ssd)<br />
<br />
From the [http://www.dell.com/support/home/fr/fr/frdhs1/product-support/servicetag/DHVNH72/configuration configuration] list:<br />
* 6th Generation Intel(R) Core (TM) i7-6700HQ Quad Core (6M Cache, up to 3.5 GHz)<br />
* 16Go (2x8Go) DDR4 2133MHz<br />
* 15.6" 4K Ultra HD (3840 x 2160) InfinityEdge touch, Sliver<br />
* 1To PCIe Solid State<br />
* DW1830 3x3 802.11ac 2.4/5GHz + Bluetooth 4.1<br />
* Dell 84 WHr 6-Cell Lithium-Ion Battery<br />
* Internal US/International Qwerty Backlit Keyboard<br />
From the drivers list:<br />
* Realtek High Definition Audio ALC3266<br />
* Realtek RTS5242 PCIe Gen2 CardReader<br />
* Realtek USB GBE Ethernet Controller<br />
* ST Microlectronics LNG3DMTR Motion Sensor<br />
* Intel HD Graphics 530/P530<br />
* nVIDIA Geforce GTX 960M Graphics<br />
From dmesg (incomplete):<br />
* BCM20703A1 Bluetooth 4.1 (firmware brcm/BCM-0a5c-6410.hcd)<br />
From lspci -nn:<br />
<pre><br />
00:00.0 Host bridge [0600]: Intel Corporation Sky Lake Host Bridge/DRAM Registers [8086:1910] (rev 07)<br />
00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 07)<br />
00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:191b] (rev 06)<br />
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:1903] (rev 07)<br />
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br />
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br />
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #0 [8086:a160] (rev 31)<br />
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-H LPSS I2C Controller #1 [8086:a161] (rev 31)<br />
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br />
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] [8086:a103] (rev 31)<br />
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br />
00:1c.1 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #2 [8086:a111] (rev f1)<br />
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br />
00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br />
00:1d.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #15 [8086:a11e] (rev f1)<br />
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14e] (rev 31)<br />
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)<br />
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)<br />
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)<br />
01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 960M] [10de:139b] (rev ff)<br />
02:00.0 Network controller [0280]: Broadcom Corporation BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)<br />
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device [10ec:525a] (rev 01)<br />
04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a802] (rev 01)<br />
</pre><br />
From lsusb:<br />
<pre><br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 003: ID 04f3:21d5 Elan Microelectronics Corp. <= touchscreen<br />
Bus 001 Device 002: ID 0a5c:6410 Broadcom Corp. <= bluetooth<br />
Bus 001 Device 004: ID 0c45:6713 Microdia <= webcam<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
From lscpu:<br />
<pre><br />
Architecture: x86_64<br />
CPU op-mode(s): 32-bit, 64-bit<br />
Byte Order: Little Endian<br />
CPU(s): 8<br />
On-line CPU(s) list: 0-7<br />
Thread(s) per core: 2<br />
Core(s) per socket: 4<br />
Socket(s): 1<br />
NUMA node(s): 1<br />
Vendor ID: GenuineIntel<br />
CPU family: 6<br />
Model: 94<br />
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz<br />
Stepping: 3<br />
CPU MHz: 2847.812<br />
CPU max MHz: 3500.0000<br />
CPU min MHz: 800.0000<br />
BogoMIPS: 5183.88<br />
Virtualization: VT-x<br />
L1d cache: 32K<br />
L1i cache: 32K<br />
L2 cache: 256K<br />
L3 cache: 6144K<br />
NUMA node0 CPU(s): 0-7<br />
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush <br />
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts <br />
rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 <br />
ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx <br />
f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_notify hwp_act_window hwp_epp <br />
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid <br />
rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1<br />
</pre><br />
<br />
Dell Wireless 1830 = BCM43602 + BCM20703A1 (DW1830 Bluetooth 4.1 LE)<br />
<br />
BCM43602 PCI ID: 14e4:43ba<br />
<br />
<pre><br />
# smartctl -d scsi -i /dev/nvme0n1<br />
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.3.0-1-amd64] (local build)<br />
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org<br />
<br />
=== START OF INFORMATION SECTION ===<br />
Vendor: NVMe<br />
Product: PM951 NVMe SAMSU<br />
Revision: 7D0Q<br />
Compliance: SPC-4<br />
User Capacity: 1,024,209,543,168 bytes [1.02 TB]<br />
Logical block size: 512 bytes<br />
Rotation Rate: Solid State Device<br />
Logical Unit id: 0x0025384cf1b0fd29<br />
Serial number: S2FZNXAGC03824<br />
Device type: disk<br />
Local Time is: Sun Feb 14 22:02:03 2016 CET<br />
SMART support is: Unavailable - device lacks SMART capability.<br />
</pre><br />
<br />
==Resources==<br />
* http://topics-cdn.dell.com/pdf/xps-15-9550-laptop_Service%20Manual_en-us.pdf<br />
* https://wiki.archlinux.org/index.php/Dell_XPS_15<br />
* https://bbs.archlinux.org/viewtopic.php?id=204739<br />
* http://ubuntuforums.org/showthread.php?t=2301071<br />
* http://forthescience.org/blog/2015/03/20/installing_ubuntu_14_04_on_the_new_dell_xps_13/<br />
* https://wiki.debian.org/InstallingDebianOn/Dell/Dell%20XPS%2013<br />
* http://bartongeorge.net/2015/02/23/update-2-dell-xps-13-laptop-developer-edition-sputnik-gen-4/<br />
<br />
==General==<br />
I first tried to keep a dual-boot just in case, but once we disable Raid and put SATA in AHCI mode, Windows can't boot anymore. (later I read it could be possible to fix it by rebooting several times Windows till safe mode is kicked in, but it was too late for me.)<br />
<br />
Just in case again, one can boot Windows and create a USB recovery.<br />
==Bios==<br />
* Secure Boot: disable<br />
* SATA: switch from Raid to AHCI<br />
* Boot: not sure it's needed but I disabled Windows boot manager entry and kept the hdd UEFI entry: UEFI: PM951 NVMe SAMSUNG 1024GB, Partition 1<br />
* POST/Fastboot/Thorough<br />
* auto os recovery threshold off<br />
<br />
To update the BIOS:<br />
* put it on a USB stick<br />
* reboot<br />
* select BIOS flash update on the boot screen (F12).<br />
No need to put it on a bootable DOS, just give the exe to the BIOS update built-in util.<br />
<br>You can even drop the update on /boot/efi as it's also a FAT partition, no need for a USB memory stick.<br />
<br />
Versions:<br />
* 1.2.0 aka A6 [https://downloads.dell.com/FOLDER03659467M/1/XPS_9550_1.2.0.exe XPS_9550_1.2.0.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=KTR76 fixes]<br />
* 1.2.10 aka A10 [https://downloads.dell.com/FOLDER03800340M/1/XPS_9550_1.2.10.exe XPS_9550_1.2.10.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=96T2K fixes]<br />
* 1.2.14 aka A13 [https://downloads.dell.com/FOLDER03906323M/1/XPS_9550_1.2.14.exe XPS_9550_1.2.14.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=VNMDK fixes]<br />
* 1.2.16 [https://downloads.dell.com/FOLDER04030973M/1/XPS_9550_1.2.16.exe XPS_9550_1.2.16.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=J8GY6 fixes]<br />
* 1.2.18 aka A16 [https://downloads.dell.com/FOLDER04078627M/1/XPS_9550_1.2.18.exe XPS_9550_1.2.18.exe] [http://www.dell.com/support/home/us/en/4/Drivers/DriversDetails?driverId=KD0C7 fixes]<br />
* 1.2.21 [https://downloads.dell.com/FOLDER04190863M/1/XPS_9550_1.2.21.exe XPS_9550_1.2.21.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=6RV34 fixes]<br />
* 1.2.25 [https://downloads.dell.com/FOLDER04319442M/1/XPS_9550_1.2.25.exe XPS_9550_1.2.25.exe] [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=3W30W fixes]<br />
* 1.2.29 [https://downloads.dell.com/FOLDER04449988M/1/XPS_9550_1.2.29.exe XPS_9550_1.2.29.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=F7M6G fixes]<br />
* 1.3.0 [https://downloads.dell.com/FOLDER04481870M/1/XPS_9550_1.3.0.exe XPS_9550_1.3.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=NXVMP fixes]<br />
* 1.4.0 [https://downloads.dell.com/FOLDER04499656M/1/XPS_9550_1.4.0.exe XPS_9550_1.4.0.exe] [http://www.dell.com/support/Home/us/en/19/Drivers/DriversDetails?driverId=DR9N6 fixes]<br />
* 1.5.1 [https://downloads.dell.com/FOLDER04604618M/1/XPS_9550_1.5.1.exe XPS_9550_1.5.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=TWKFC fixes]<br />
* 1.6.1 [https://downloads.dell.com/FOLDER04717493M/1/XPS_9550_1.6.1.exe XPS_9550_1.6.1.exe] [http://www.dell.com/support/Home/en/us/bebsdt1/Drivers/DriversDetails?driverId=PFJ08 fixes]<br />
* 1.7.0 [https://downloads.dell.com/FOLDER04839266M/1/XPS_9550_1.7.0.exe XPS_9550_1.7.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=RYY62 fixes]<br />
* 1.8.0 [https://downloads.dell.com/FOLDER05099834M/1/XPS_9550_1.8.0.exe XPS_9550_1.8.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=4GDY8 fixes]<br />
* 1.9.0 [https://downloads.dell.com/FOLDER05256907M/1/XPS_9550_1.9.0.exe XPS_9550_1.9.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=xv1gp fixes]<br />
* 1.10.0 [https://downloads.dell.com/FOLDER05476993M/1/XPS_9550_1.10.0.exe XPS_9550_1.10.0.exe] [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=3N7TY fixes]<br />
* 1.11.2 [https://downloads.dell.com/FOLDER05770328M/1/XPS_9550_1.11.2.exe XPS_9550_1.11.2.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=gtm85 fixes]<br />
* 1.12.0 [https://downloads.dell.com/FOLDER05865451M/1/XPS_9550_1.12.0.exe XPS_9550_1.12.0.exe] [https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=7HTW2 fixes]<br />
<br />
Attention: with versions 1.2.10 through 1.2.16 and older Linux kernels, there is a serious bug that let the screen black after suspend/wake up. The workaround is to set the lightness to the maximum but it breaks further lightness tuning.<br />
<br />
Linux kernels 4.8 and below tend to work best with A6 BIOS (1.2.0), although there is a workaround that allows it to work with later versions. This workaround uses the intel_reg utility to reset the "pwm_granuality" setting of the onboard graphics. Solution discussed here: [http://en.community.dell.com/techcenter/os-applications/f/4613/t/19985320]. This issue is reportedly fixed in Linux 4.9, and also in recent Ubuntu 16.10 kernel updates. See the patch here [https://patchwork.freedesktop.org/patch/109407/].<br />
<br />
Even with the intel_reg workaround above, the screen brightness cannot be set to the lowest level without turning the screen off. This is fixed in 1.2.18.<br />
<br />
==Debian==<br />
I kept UEFI so we need a Debian netinstall because liveCD doesn't have UEFI support yet.<br />
<br>But Wi-Fi requires a proprietary firmware:<br />
https://github.com/OpenELEC/wlan-firmware/blob/master/firmware/brcm/brcmfmac43602-pcie.bin<br />
so the easiest is to take a Debian netinstall with proprietary firmwares included.<br />
<br>At time of writing Stretch is testing and last release is alpha5:<br />
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/stretch_di_alpha5/amd64/iso-cd/<br />
dd the image on a USB stick and boot it.<br />
<br>It will also complain for a missing brcmfmac43602-pcie.txt but we can safely ignore it. (well I think so, but Wi-Fi has troubles now and then under heavy load, see below)<br />
<!-- sysml eml ems --><br />
<br />
I chose a guided partitionning of the entire disk, with encrypted LVM containing /, /home and swap. But proposed / was a bit too small IMHO (10G) so I deleted and recreated / (50G) and /home.<br />
<br>Initially I tried to add the "discard" option for the partitions which should help on SSD but the kernel reported that "discard" wasn't supported by the disk.<br />
<br />
If you want to backup partition table and partitions before destroying everything, it's the right time!<br />
parted /dev/nvme0n1<br />
print<br />
sgdisk --backup=/some/safe/location/nvme0n1.gpt /dev/nvme0n1<br />
I installed Cinnamon. I don't know for the others but Cinnamon has a nice auto setting to double features on HiDPI screens.<br />
==First boot==<br />
Once installed, the Debian didn't boot up.<br />
<br>I tried many things but at the end the only thing that worked was to copy Debian EFI to the default one:<br />
<br />
Starting the netinstall again, in rescue mode, get a chroot shell, then<br />
mount /dev/nvme0n1p1 /boot/efi<br />
cd /boot/efi/EFI<br />
mkdir boot<br />
cp debian/grubx64.efi boot/bootx64.efi<br />
I also deleted the Windows files in EFI.<br />
<br />
Resource:<br />
* https://wiki.debian.org/GrubEFIReinstall<br />
* https://wiki.archlinux.org/index.php/GRUB#Create_an_ESP<br />
* https://help.ubuntu.com/community/UEFI<br />
* https://wiki.debian.org/UEFI<br />
* https://isalo.org/wiki.debian-fr/Debian_%26_UEFI <br />
<br />
FTR things that failed included:<br />
* [http://www.rodsbooks.com/refind/getting.html Refind] couldn't boot at all. Strange as the netinstall could boot...<br />
* tweaks with efibootmgr, update-grub etc<br />
<br />
'''UPDATE''': It might be possible to fix the issue from the BIOS itself, see http://www.dell.com/support/article/us/en/04/SLN297060/en<br />
<br />
==Status==<br />
===Working===<br />
* Screen<br />
* Touchscreen<br />
* Touchpad<br />
* Keyboard backlight and media buttons (volume, luminosity, backlight)<br />
* Wi-Fi (with the proprietary driver, cf installation above)<br />
* HDMI<br />
* SD-Card reader<br />
* Speakers, mic<br />
* Webcam<br />
<br />
===Working after manual steps===<br />
====i915====<br />
Screen was working but dmesg was complaining:<br />
i915 0000:00:02.0: firmware: failed to load i915/skl_dmc_ver1.bin<br />
So I installed that firmware, not sure what it's changed<br />
sudo apt-get install firmware-misc-nonfree<br />
====Optimus====<br />
Resources:<br />
* https://wiki.archlinux.org/index.php/Optimus<br />
* https://wiki.archlinux.org/index.php/Bumblebee<br />
apt-get install bumblebee-nvidia nvidia-libopencl1 nvidia-opencl-icd nvidia-opencl-icd:i386 libcuda1-i386 nvidia-smi clinfo<br />
reboot<br />
Example:<br />
apt-get install nvidia-settings<br />
optirun -b none nvidia-settings -c :8<br />
This also works for CUDA/OpenCL:<br />
optirun -b none ./hashcat64.bin -m 500 example500.hash example.dict<br />
<br />
Testing:<br />
optirun -vv glxgears<br />
optirun -vv clinfo<br />
optirun -b none ./hashcat64.bin -I<br />
optirun --no-xorg ./hashcat64.bin -I<br />
<br />
As bridge, primus or virtualgl can be used. Primus is available in the Debian repos while VirtualGL is [https://sourceforge.net/projects/virtualgl/?source=typ_redirect here]. Using primus currently.<br />
<br />
CUDA toolkit:<br />
apt-get install nvidia-cuda-toolkit<br />
It removed nvidia-libopencl1 but hashcat is still running fine...<br />
<br />
GPU load:<br />
optirun --no-xorg nvidia-smi<br />
<br />
====Touchpad====<br />
Nothing wrong with the touchpad but its default config is a bit painful especially because it's large and my right palm touches it often, even with the option to diable it when typing and because it's "soft" buttons.<br />
<br>I disabled the button area to limit somehow the problem but still you've to get used to first touch and hold before pressing a button to do a drag and drop and not the opposite.<br />
synclient AreaBottomEdge=4026<br />
To add a middle button:<br />
synclient RightButtonAreaLeft=3914<br />
synclient RightButtonAreaRight=0<br />
synclient RightButtonAreaTop=4026<br />
synclient RightButtonAreaBottom=0<br />
synclient MiddleButtonAreaLeft=3100<br />
synclient MiddleButtonAreaRight=3873<br />
synclient MiddleButtonAreaTop=4026<br />
synclient MiddleButtonAreaBottom=0<br />
And because I love it:<br />
synclient CircularScrolling=1<br />
Some doc [https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Buttonless_touchpads_.28aka_ClickPads.29 here] and the official one [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html here]<br />
<br />
If with some kernels you get troubles using Synaptics options, check dmesg, maybe Touchpad is detected by another driver too:<br />
DLL06E4:01 06CB:7A13 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-7/i2c-DLL06E4:01/0018:06CB:7A13.0003/input/input14<br />
hid-multitouch 0018:06CB:7A13.0003: input,hidraw2: I2C HID v1.00 Mouse [DLL06E4:01 06CB:7A13] on i2c-DLL06E4:01<br />
If this is so, add /etc/modprobe.d/synaptics.conf with this line, cf Kernel section below:<br />
blacklist i2c-designware-platform<br />
<br />
On recent kernels, i2c-designware-platform is directly in the kernel, not as module anymore.<br />
To manage to blacklist it, see https://unix.stackexchange.com/questions/423797/how-do-i-disable-i2c-designware-support-when-its-not-built-as-a-module#446913<br />
Edit /etc/default/grub and append the following blacklist invocation to the command line, then update-grub.<br />
GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"<br />
<br />
====Touchscreen====<br />
Touchscreen works well but when an external screen is connected, it spans over both screens so e.g. touching the middle of the laptop screen moves the mouse to some middle point of the virtual screen combining both screens.<br />
<br>To fix it, see https://wiki.archlinux.org/index.php/Calibrating_Touchscreen<br />
<br>This example is for an external screen mapped to the right of the laptop screen:<br />
# c0 = width of laptop screen / total width<br />
c0=$(bc -l <<< "scale=2; $(xrandr|grep -A1 eDP1|sed '1d;s/x.*//')/$(xrandr|grep '^Screen 0'|sed 's/.*current //;s/ x.*//')")<br />
xinput set-prop "ELAN Touchscreen" --type=float "Coordinate Transformation Matrix" \<br />
c0 0 0 \<br />
0 1 0 \<br />
0 0 1<br />
<br />
====Bluetooth====<br />
Kernel complains about a missing file.<br />
<br>Apparently we can get it from Windows drivers but I don't know where to find them, so I took [https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0 this one] and copied it into /lib/firmware/brcm<br />
<br />
Then Bluetooth was recognized but I couldn't pair my WM615 mouse.<br />
<br>After restarting the Bt adaptor, I could finally pair:<br />
bluetoothctl<br />
power off<br />
power on<br />
<br />
References:<br />
* https://wiki.debian.org/BluetoothUser<br />
* https://wiki.archlinux.org/index.php/bluetooth<br />
There is also a possibility to pair directly from bluetoothctl, see https://wiki.archlinux.org/index.php/bluetooth#Bluetoothctl<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see [[#Hardware_changes]]<br />
<br />
====HiDPI====<br />
Cinnamon handles it nicely but some applications don't such as Gimp and you end up with a microscopic tools ribbon.<br />
<br>See https://wiki.archlinux.org/index.php/HiDPI for some useful tips<br />
<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (1016x572 millimeters)<br />
resolution: 96x96 dots per inch<br />
I've no ruler at hand but if it's 15.6'' in diagonal and pixels are square, this gives 293.4 dpi for screen dimensions of 332x187mm.<br />
<br>So closest hit with common DPI is 96*3=288dpi<br />
xrandr --dpi 288<br />
xdpyinfo | grep -B2 resolution<br />
screen #0:<br />
dimensions: 3840x2160 pixels (338x190 millimeters)<br />
resolution: 289x289 dots per inch<br />
Let's document those fictive dimensions for next boots by creating /etc/X11/xorg.conf.d/90-monitor.conf with<br />
Section "Monitor"<br />
Identifier "<default monitor>"<br />
DisplaySize 338 190 # In millimeters<br />
EndSection<br />
<br />
'''QT5 and GTK+ 3'''<br />
<br>To enable better scaling of QT5 and GTK+ 3, add to .bashrc (not to .xsessionrc otherwise Cinnamon taskbar is messed up!):<br />
QT_DEVICE_PIXEL_RATIO=3<br />
GDK_SCALE=3<br />
GDK_DPI_SCALE=0.4<br />
<br />
'''QT4'''<br />
<br>E.g. Skype<br />
sudo apt-get install qt4-qtconfig<br />
qtconfig-qt4<br />
=> one can change font size<br />
<br />
'''Gimp 2.8'''<br />
<br>E.g. copy /usr/share/gimp/2.0/themes/Default as ~/.gimp-2.8/themes/HiDPI and change a few options:<br />
<source lang=diff><br />
--- gtkrc<br />
+++ gtkrc<br />
- GimpToolPalette::tool-icon-size = button<br />
+ GimpToolPalette::tool-icon-size = dialog<br />
- GimpEditor::button-icon-size = menu<br />
+ GimpEditor::button-icon-size = button<br />
</source><br />
<br />
'''Wine'''<br />
winecfg<br />
Change "dpi" in "Graphics" tab<br />
'''Virtualbox''':<br />
<br>View/Scale Factor is helpful...<br />
<br />
'''Chromium'''<br />
<br>Chrome works fine but ''Chromium'' broke at some point, so I've to launch it with:<br />
<br />
GDK_SCALE=2 exec chromium<br />
<br />
'''Small console font''':<br />
<br>I don't care but if that's an issue for you, from [https://github.com/mpalourdio/xps13/blob/master/HiDPI/tty.md here]:<br />
sudo dpkg-reconfigure console-setup<br />
* Choose UTF-8<br />
* Choose the default Combined - Latin, ... option ("Latin" includes the English alphabet)<br />
* Select the terminus font<br />
* Select 16x32<br />
* OK<br />
To apply immediately, open a TTY and run setupcon, else just reboot<br />
<br />
'''Multiple displays'''<br />
<br>Combining HiDPI screen with external non-HiDPI? See https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays<br />
<br />
====Sensors====<br />
apt-get install lm-sensors<br />
sensors-detect<br />
Sensors-detect found coretemp which is now loaded via /etc/modules:<br />
coretemp<br />
<br />
<br />
====External microphone====<br />
The sole jack is a TRRS, combining output and mic.<br />
<br>Soundcard is a Realtek ALC3266<br />
grep -r Realtek /proc/asound/card*<br />
/proc/asound/card0/codec#0:Codec: Realtek ALC3266<br />
<br>With Debian+Cinnamon, the system detects the mic, we can see it in the sound properties and select it, but still the internal mic is used.<br />
<br>When using pavucontrol, selecting the "headset microphone" works fine (it still needs some level boosting).<br />
<br />
====DA200====<br />
[http://accessories.euro.dell.com/sna/products/Station_daccueil/productdetail.aspx?c=fr&l=fr&s=dhs&cs=frdhs1&sku=470-ABRY DA200] used to be recognized only if it was plugged at boot.<br />
<br>With kernel 4.6 the device is properly detected dynamically.<br />
<br>The adapter is actually using DisplayPort. <br />
<br>VGA output works.<br />
<br />
HDMI output is limited to some modes (max 1920x1080, cf [http://www.dell.com/support/article/us/en/19/SLN303466 Dell support]) and by default xrandr will try an unsupported mode.<br />
<br>Even "xrandr --output DP-1 --mode 1920x1080" fails by default.<br />
<br />
Some supported modes: 800x600, 1024x768, 1280x720, 1920x1080i<br />
<br>1920x1080i is interlaced and awful to look at.<br />
<br>Reducing the rate allows a non-interlaced 1920x1080 mode, you can test it with:<br />
xrandr --output DP-1 --mode 1920x1080 -r 30<br />
If this works for you, you can create a new mode, using cvt to find the proper parameters:<br />
cvt 1920 1080 30<br />
# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz<br />
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
Creating and adding the new mode:<br />
xrandr --newmode "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync<br />
xrandr --addmode DP-1 "1920x1080_30.00"<br />
Now you can choose this new mode:<br />
xrandr --output DP-1 --mode "1920x1080_30.00"<br />
<br />
When plugged the following hardware gets detected:<br />
<br />
lsusb:<br />
<pre><br />
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp.. <= Ethernet<br />
Bus 004 Device 002: ID 05e3:0617 Genesys Logic, Inc..<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 003: ID 0835:2a01 Action Star Enterprise Co., Ltd. <= Billboard<br />
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
''The USB Billboard Device Class definition describes the methods used to communicate the Alternate Modes supported by a device container to a host system. More details on Billboard Devices are available in the USB Billboard Device Class specification at the following link: http://www.usb.org/developers/docs/devclass_docs/.''<br />
<br />
lspci:<br />
<pre><br />
06:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:00.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:01.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
07:02.0 PCI bridge: Intel Corporation Device 1576 (prog-if 00 [Normal decode])<br />
0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])<br />
</pre><br />
<br />
lsmod:<br />
<pre><br />
r8152 49152 0<br />
cdc_ether 16384 0<br />
usbnet 40960 1 cdc_ether<br />
mii 16384 2 r8152,usbnet<br />
</pre><br />
<br />
===Solved issues===<br />
====i915 and blank screen====<br />
There were numerous issues with the video card. Now with latest kernels (>=4.8) most issues are gone, still some occasional blank screen or freeze when plugging an external HDMI.<br />
====Bluetooth====<br />
WM615 mouse used to act erratically, the cursor stopping now and then. Now with latest kernels and an Intel Wi-Fi+BT card it's fine.<br />
====Wi-Fi====<br />
Wi-Fi tends to disassociate under heavy load, switching to other SSIDs or frequencies (5Ghz<>2.4GHz) and coming back seems to help.<br />
<br />
I finally changed the Wi-Fi+BT card for an Intel one, see #Hardware_changes<br />
<br />
===Issues===<br />
====rfkill button====<br />
Rfkill button of the keyboard (Fn+PrtScr) doesn't seem to work, no big deal.<br />
<br />
==Kernels==<br />
initramfs complains about lvmetad and I'm not sure it's that useful on SSD, so just disabling it:<br />
<br>Edit /etc/lvm/lvm.conf<br />
use_lvmetad=0<br />
Then stop it<br />
systemctl stop lvm2-lvmetad<br />
===Debian===<br />
Debian kernel 4.8 works quite well<br />
===Compilation notes===<br />
'''Warning''', to compile >=4.4, one needs at least initramfs-tools v0.122 to get the nvme.ko properly loaded and therefore the SSD properly seen.<br />
<br />
To compile a vanilla kernel, cf http://www.cyberciti.biz/faq/debian-ubuntu-building-installing-a-custom-linux-kernel/<br />
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc<br />
sudo apt-get install kernel-package<br />
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz<br />
tar xf linux-4.4.tar.xz<br />
cd linux-4.4<br />
cp /boot/config-$(uname -r) .config<br />
make menuconfig<br />
make-kpkg clean<br />
make-kpkg --rootcmd fakeroot --initrd --append_to_version=9-doegox kernel_image kernel_headers -j 7<br />
<br />
==Hardware changes==<br />
Replacing Broadcom Wi-Fi+BT by an [https://wikidevi.com/wiki/Intel Intel one]:<br />
* Intel 7265 Dual Band Wireless-AC 7265NGW Card 802.11ac 867Mbps WIFI BT4.0 UK<br />
** http://www.befr.ebay.be/itm/262049756966?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT<br />
** https://downloadcenter.intel.com/download/17045<br />
** This requires installing package firmware-iwlwifi<br />
** Seems to have less Wi-Fi issues, but still the same BT problems pairing the Dell mouse<br />
<br />
iwlwifi 0000:02:00.0: firmware: direct-loading firmware iwlwifi-7265-17.ucode<br />
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x184<br />
<br />
Alternatives to DA200:<br />
* HDMI Male To VGA Female Converter<br />
** http://www.aliexpress.com/item/1pc-HDMI-Male-To-VGA-Female-Converter-Box-Adapter-With-Audio-Cable-For-PC-HDTVHot-New/32448171552.html<br />
* USB 3.0 10/100/1000Mbps Gigabit Ethernet RJ45<br />
** http://www.aliexpress.com/item/Hot-selling-New-USB-3-0-10-100-1000Mbps-Gigabit-Ethernet-RJ45-External-Network-Card-LAN/32546613204.html<br />
* 4-Port Ultra-Slim USB 3.0 Hub<br />
** https://www.anker.com/products/A7516011<br />
** http://www.amazon.de/Anker-Datenhub-Ultrabooks-weiteren-kompatiblen/dp/B00Y211AFM/<br />
<br />
==Misc hardware==<br />
Smartcard reader<br />
* ACS ACR38U PocketMate Smart Card Reader<br />
** http://www.acs.com.hk/en/products/160/acr38u-pocketmate-smart-card-reader/<br />
** http://www.befr.ebay.be/itm/EU-SHIPPING-Smart-Card-USB-ACS-ACR38U-National-ID-Tachograph-Reader-Writer-/121899037557</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Modem_BBox-2&diff=10509Modem BBox-22019-11-18T22:56:29Z<p>PhilippeTeuwen: /* Misc info */</p>
<hr />
<div>==Description & versions==<br />
This is the default modem coming with Belgacom internet solutions in Belgium.<br />
<br>It allows SIP and IPTV.<br />
<br />
It's a [http://www.sagem-communications.com/index.php?id=1226&L=1 Sagem F@st 3464] (even if the box looks different), running a customized version of [http://www.jungo.com/products/openrg-uniform-gateway-middleware/ Jungo Openrg].<br />
<br />
Version information, as visible on the web interface:<br />
Runtime Code Version 6001GR-6000GR <br />
Hardware Version 1<br />
Serial Num LK12345DP123456 <br />
VDSL Version Firmware-VTU-R:1.0.7r57bIK105012 Time Dec 27 2007, 18:50:21<br />
<br />
VDSL sync:<br />
Downstream line rate 21648 kbps<br />
Upstream line rate 2848 kbps<br />
Downstream Training Margin 19.1 dB<br />
<br />
test Speedtest.nl:<br />
Downstream line rate 11Mbps<br />
Upstream line rate 1Mbps<br />
<br />
'''2010-11-20 update''': I've finally reset the box as it never received any firmware upgrade automatically, despite letters from Belgacom inviting me to restart the modem & even a call to the technical service...<br />
<br>Now:<br />
Runtime Code Version 60R109-60A022 <br />
Hardware Version 1<br />
Serial Num LK12345DP123456 <br />
VDSL Version Firmware-VTU-R:5.5.1.2IK105012 Time Oct 1 2009, 14:04:47 <br />
<br />
VDSL sync:<br />
Downstream line rate 16536 kbps<br />
Upstream line rate 2056 kbps <br />
Downstream Training Margin 18.5 dB<br />
<br />
From shell:<br />
[admin @ home]$ ver<br />
Version: 4.0.21.3.3.1.32.1.1.1.6.Fast3464.60.A0.22<br />
Platform: Sagem F@ST346X<br />
Compilation Time: 09-Apr-10 17:13:27<br />
[admin @ home]$ shell<br />
BusyBox v1.01 (2009.02.19-21:18+0100) Built-in shell (ash)<br />
# cat /proc/version<br />
Linux version 2.6.15 #66 Fri Apr 9 17:18:12 CEST 2010<br />
<br />
Automatic firmware upgrades:<br />
* VLAN20 (Wan eth1.20 VoIP) must be activated (they use port 8085? for tr69)<br />
* tr98 process must be running<br />
I could never get their firmware upgrades transparently, I had to reset the box to get them<br />
<br />
Some versions:<br />
* 6001GR-6000GR old<br />
* 60I118-60I918 24-Dec-09 11:47:40<br />
* 60I11U-60I01U 26-Jan-10 12:31:27<br />
* 60R109-60A022 09-Apr-10 17:13:27 (to allow the 17Mhz profile for 30 Mbps?)<br />
<br />
==Exploration==<br />
A number of services & ports are available:<br />
===web interface===<br />
You can reach it via any of those addresses:<br />
* http://192.168.1.1<br />
* http://192.168.1.1:8080<br />
* https://192.168.1.1<br />
* https://192.168.1.1:8443<br />
HTTPS offers a OpenRG SSL certificate, to be explicitly accepted by your browser to go further...<br />
<br />
'''Admin settings menu:'''<br />
<br>If you're logging as admin rather than user as default, you'll get an extra menu:<br />
* http://192.168.1.1/index.cgi?user_name=admin&password=BGCVDSL2<br />
This allows to save and restore the whole configuration and to upload new firmwares, if any.<br />
<br>Once you get a dump of the configuration you can try manipulating it, there is a guide [http://wildcat.espix.org/doc/bbox2/openrg_configuration_guide.pdf here(pdf)] or [ftp://ftp.on4hu.be/Sagem-B-box2/openrg_configuration_guide.pdf here(pdf)], or better, use telnet and rg_conf commands (help rg_conf)<br />
<br />
Other pages might be accessible, cf [http://forum.adsl-bc.org/viewtopic.php?t=55015 this thread (french)] or [http://liveboxsagem11.centerblog.net/6178850-Les-pages-de-configuration-cachees- this page (french)] for the LiveBox.<br />
<br />
For the BBox2, here is a list of pages which work properly, inspired from [http://www.ripperjack.info/b-boxandco/spip.php?article41 here]<br />
* 730 advanced control panel<br />
** 40 about openrg<br />
** 70 configuration file<br />
** 140 restart<br />
** 150 restore defaults<br />
** 1220 diagnostics<br />
** 1210 mac cloning<br />
** 120 system settings<br />
** 900 Universal Plug and Play<br />
** 1410 scheduler rules<br />
** 110 date and time<br />
** 100 users<br />
** 810 route (same as from user menu)<br />
** 1430 network objects<br />
** 9037 dynamic DNS (9035 on old fw)<br />
** 9030 IP address distribution<br />
** 9027 DNS server<br />
** 9008 remote administration<br />
** 9024 protocols<br />
* logs<br />
** 750 system (uptime)<br />
** 752 connections<br />
** 753 traffic<br />
** 754 system logs<br />
* others<br />
** 50 network map<br />
** 60 network list view<br />
** 910 SNMP<br />
** 1040 connection wizard<br />
** 1280 RADIUS<br />
** 1450 IPv6<br />
** 9042 change Admin password<br />
** 9079 Web server<br />
<br />
Usage: log first as admin as explained before, then enter the pseudo-URL<br />
javascript:mimic_button('goto: **..')<br />
where ** represents the page number.<br />
<br />
<br />
About page (#40):<br />
<br />
* About OpenRG<br />
* Version: 4.0.21.3.3.1.32.1.1.1.6.Fast3464.60.00.GR<br />
* Release Date: Mar 2 2009<br />
* Platform: Sagem F@ST346X<br />
* Tag: NRC_belgacom-multimode-fast346x_openrg_orig_3-3-1-32-1-1-1-6_4-2-1_0-0-88<br />
* Compilation Flags: CONFIG_SAGEM_PPPOE_PASSTHRU=y CONFIG_BELGACOM_BBOX=y CONFIG_BELGACOM=y CONFIG_AUTOSENSING_PAGE=y CONFIG_HW_USB_HOST_OHCI=y CONFIG_HW_USB_HOST_EHCI=y CONFIG_USB_PRINTER=y CONFIG_HW_USB_STORAGE=y CONFIG_USB=y CONFIG_RG_FW_CONN_PRIO=y CONFIG_RG_WATCHDOG_OPENRG=y CONFIG_SAGEM_WIFI_MODE_11N=y CONFIG_LIVEBOX_VOIP=y CONFIG_CSS_STANDARD=y CONFIG_SAGEM_MANAGE_CONFIG=y CONFIG_GUI_STANDARD=y CONFIG_GUI_LIVEBOX1=y CONFIG_SAGEM_CONSOLE_BAUDRATE=57600 CONFIG_MRA_SEC_SIZE=0x120000 CONFIG_JFFS2_FS_SIZE=0x100000 CONFIG_BOOTLDR_UBOOT_SECURE=y CONFIG_SOUCHE_RECONF=y CONFIG_SOUCHE_TR69=y CONFIG_SOUCHE_START_AUTOMATE=y CONFIG_SOUCHE_USE_EXTERNAL_OPENSSL=y CONFIG_DHCPS_VS=y CONFIG_DHCPS_FORCE_SEND_NTP=y CONFIG_DHCPS_NTP=y CONFIG_DHCPS_ROOT_PATH=y CONFIG_DHCPS_DOMAIN_NAME=y CONFIG_DHCPS_DNS=y CONFIG_DHCPS_SUBNET_MASK=y CONFIG_DHCPS_MULTIRANGE_BYDEVICEGROUP=y CONFIG_BOOTLDR_UBOOT_COMP=gzip CONFIG_FLASH_SIZE=16 CONFIG_SDRAM_SIZE=64 DIST=SAGEM_346X LIC=../jpkg_fast3202.lic<br />
* Hardware Version: 1<br />
* Hardware Serial Number: LK09194DP270257<br />
* Supported Features: NetFilter Linux Firewall, Ethernet over ATM (RFC2684), Classical IP, PVC Scan, WBM Evaluation License Agreement, Internet Protocol Security, PPTP Server, PPP Over ATM, PPP Over Ethernet, PPTP Client, L2TP Client, ICMP ALG, Port trigger (TFTP) ALG, FTP/FTPS ALG, QuickTime/RealAudio/RealPlayer (RTSP) ALG, H323 ALG (Netmeeting, CuSeeMe ...), SIP ALG, MGCP ALG, PPTP Client (multiuser) ALG, Microsoft Network Messenger/Windows Messenger ALG, IPSec (multiuser) ALG, L2TP ALG, AOL Instant Messenger ALG, DNS ALG, DHCP ALG, Bridge, VLAN 802.1Q bridge, VLAN 802.1Q interfaces management, PPPoE Relay, GDB Server, IGMP Proxy, Jungo Firewall, NAT, Secure HTTP (SSL), Permanent Storage, RIP V1/V2, Reverse NAT, SNMP v1/v2, SNMP v3, Universal Plug & Play, DNS, Concurrent DNS query, DNS Router. Add route rules according to which dns server answare queries, Domain routing. Route according to domains listed on a device, Dynamic DNS, Email Notification, HTTP Proxy, Generic Proxy, Mail filter, URL Keyword Filtering, SurfControl, DHCP Server, DHCP Client, DHCP Relay Agent, Static HTML Management, Web Based Management, TimeZone support, HTTP Server, Telnet Server, SysLog, Command Line Interface, TOD Client, USB RNDIS, File Server, Posix Access Control Lists (ACLs), RAID, OAM F4/F5 Loopback, Print Server, Internet Printing, Voice Over IP, SIP Signalling, H.323 Signalling, MGCP Signalling, Remote Update Management, Remote Management Server, Event Logging, WINS Server, FTP Server, Mail Server, Web Server, File System Backup and Restore, OpenRG QOS support, Bluetooth support<br />
<br />
===memory sharing===<br />
Apparently you may connect a USB harddrive to the BBox-2 and share its content as with a NAS.<br />
<br>-> /mnt/usb internally<br />
A webserver (lighttpd) would then expose the content via:<br />
* http://192.168.1.1:8888<br />
Or if via the admin menu, you enable memory sharing, we get the same via a WAN (accessible outside too!) https:<br />
* https://192.168.1.1:631<br />
HTTPS offers a Sagem certificate<br />
<br />
===telnet===<br />
''If you wish to use telnet to view and edit the router settings, then you can use a dedicated tool in Java by Waterflames<!--Wouter De Keersmaecker-->, available [https://dl.dropboxusercontent.com/u/35774053/RouterSettingsEditor.zip here]. <br>This tool provides an easy GUI over rg_conf_print/rg_conf_set calls to login to the router and view and edit the settings.''<br />
* telnet on 192.168.1.1 port 23 and port 8023<br />
* telnet SSL on port 992<br />
* login admin password BGCVDSL2 or for recent fw, ther serial number of your box: LK... .<br />
* (TODO: try user/user)<br />
<br />
If you type the command "shell" you'll get a shell prompt and a busybox environment ;-)<br />
<pre><br />
[admin @ home]$ ver<br />
Version: 4.0.21.3.3.1.32.1.1.1.6.Fast3464.60.00.GR<br />
Platform: Sagem F@ST346X<br />
Compilation Time: 02-Mar-09 17:18:02<br />
<br />
[admin @ home]$ shell<br />
<br />
<br />
BusyBox v1.01 (2009.02.19-21:18+0100) Built-in shell (ash)<br />
Enter 'help' for a list of built-in commands.<br />
<br />
# cat /proc/version <br />
Linux version 2.6.15 #24 Mon Mar 2 18:21:25 CET 2009<br />
# <br />
# cat /proc/cpuinfo<br />
system type : ADI Fusiv Core<br />
processor : 0<br />
cpu model : Lexra LX4189 V0.0<br />
BogoMIPS : 199.47<br />
wait instruction : no<br />
microsecond timers : no<br />
tlb_entries : 64<br />
extra interrupt vector : no<br />
hardware watchpoint : no<br />
ASEs implemented :<br />
VCED exceptions : not available<br />
VCEI exceptions : not available<br />
<br />
# ps<br />
PID Uid VmSize Stat Command<br />
1 0 652 S /bin/init <br />
2 0 SWN [ksoftirqd/0]<br />
3 0 SW< [events/0]<br />
4 0 SW< [khelper]<br />
5 0 SW< [kthread]<br />
8 0 SW< [kblockd/0]<br />
11 0 SW< [khubd]<br />
35 0 SW [pdflush]<br />
36 0 SW [pdflush]<br />
38 0 SW< [aio/0]<br />
37 0 SW [kswapd0]<br />
559 0 SW [mtdblockd]<br />
574 0 4436 S /bin/openrg <br />
629 0 SWN [jffs2_gcd_mtd1]<br />
677 0 348 S /bin/sh /etc/vdsl.sh <br />
680 0 2208 S vdsld <br />
686 0 560 S /bin/main_autom /etc/process_list.dat 2 9 <br />
687 0 560 S /bin/main_autom /etc/process_list.dat 2 9 <br />
688 0 560 S /bin/main_autom /etc/process_list.dat 2 9 <br />
689 0 2208 S vdsld <br />
690 0 2208 S vdsld <br />
691 0 2208 S vdsld <br />
692 0 2208 S vdsld <br />
693 0 2208 S vdsld <br />
694 0 2208 S vdsld <br />
695 0 2208 S vdsld <br />
696 0 2208 S vdsld <br />
697 0 2208 S vdsld <br />
753 0 4436 D /bin/openrg <br />
752 0 SW [idmaThread]<br />
754 0 424 S hostapd /etc/hostapd.conf.eth2 <br />
757 0 764 S /bin/watchdog <br />
758 0 560 S /bin/main_autom /etc/process_list.dat 2 9 <br />
772 0 228 S /usr/local/bin/syncloop <br />
777 0 644 S /usr/local/sbin/lighttpd -f /mnt/ffs/A/lighttpd.conf <br />
781 0 388 S /bin/igmpsnoop -i eth0 -l 30 -c 0x10080 -v -t <br />
782 0 380 S /bin/oam start 5 <br />
783 0 688 S /bin/prod_autom /etc/process_list.dat 5 5 <br />
786 0 296 S /bin/syslogd-sa -b <br />
787 0 380 S /bin/oam start 5 <br />
788 0 688 S /bin/prod_autom /etc/process_list.dat 5 5 <br />
789 0 380 S /bin/oam start 5 <br />
790 0 688 S /bin/prod_autom /etc/process_list.dat 5 5 <br />
791 0 688 S /bin/prod_autom /etc/process_list.dat 5 5 <br />
792 0 800 S /bin/tr98 5 5 <br />
795 0 1804 S /bin/tr69 --debug 5 <br />
797 0 1804 S /bin/tr69 --debug 5 <br />
798 0 1804 S /bin/tr69 --debug 5 <br />
799 0 800 S /bin/tr98 5 5 <br />
800 0 800 S /bin/tr98 5 5 <br />
801 0 1804 S /bin/tr69 --debug 5 <br />
802 0 1804 S /bin/tr69 --debug 5 <br />
803 0 800 R /bin/tr98 5 5 <br />
806 0 2424 S /bin/sipd /etc/process_list.dat 5 5 <br />
807 0 2424 S /bin/sipd /etc/process_list.dat 5 5 <br />
808 0 2424 S /bin/sipd /etc/process_list.dat 5 5 <br />
809 0 2424 S /bin/sipd /etc/process_list.dat 5 5 <br />
810 0 2424 S /bin/sipd /etc/process_list.dat 5 5 <br />
815 0 2424 S /bin/sipd /etc/process_list.dat 5 5 <br />
816 0 2424 S /bin/sipd /etc/process_list.dat 5 5 <br />
817 0 2424 S /bin/sipd /etc/process_list.dat 5 5 <br />
818 0 1804 S /bin/tr69 --debug 5 <br />
862 0 688 S /bin/prod_autom /etc/process_list.dat 5 5 <br />
1318 0 444 S /bin/sh <br />
1327 0 320 R ps ax <br />
# <br />
# df<br />
Filesystem 1k-blocks Used Available Use% Mounted on<br />
cramfs 2560 2560 0 100% /mnt/cramfs<br />
<br />
# cat /etc/mtab<br />
rootfs / rootfs rw 0 0<br />
cramfs /mnt/cramfs cramfs_mainfs ro 0 0<br />
/proc /proc proc rw,nodiratime 0 0<br />
usbfs /proc/bus/usb usbfs rw 0 0<br />
/sys /sys sysfs rw 0 0<br />
<br />
# cat /proc/mounts <br />
rootfs / rootfs rw 0 0<br />
cramfs /mnt/cramfs cramfs_mainfs ro 0 0<br />
/proc /proc proc rw,nodiratime 0 0<br />
usbfs /proc/bus/usb usbfs rw 0 0<br />
/dev/mtdblock1 /mnt/ffs/A jffs2 rw,sync,noatime 0 0<br />
/sys /sys sysfs rw 0 0<br />
</pre><br />
I got also /mnt/ffs mounted once, should check again...<br />
<br />
Website files are in /mnt/cramfs/home/httpd/html<br />
<br />
Trying to change the theme (this didn't bring extra menu, to the contrary)<br />
[admin @ home]$ rg_conf_print wbm/theme <br />
(theme(Sagem))<br />
[admin @ home]$ rg_conf_set wbm/theme OpenRG<br />
[admin @ home]$ rg_conf_print wbm/theme <br />
(theme(OpenRG))<br />
To revert:<br />
[admin @ home]$ rg_conf_set wbm/theme Sagem<br />
<br />
To learn the commands to manipulate the configuration, see [http://liveboxsagem11.centerblog.net/6178144-Fichier-de-configuration here (french)]<br />
<br />
===others===<br />
* 2555/tcp open UPnP Internet Gateway Device implementing some serious commands such as GetPassword ...<br />
* 7020/tcp open Apparently for Incoming Jnet (Jungo.net) requests for Remote Upgrade Server (see [http://www.jungo.com/openrg/doc/4.8/user_guide/html/html_openrg_user_manual/sect_management.html#sect_remote_admin here]<br />
* 7021/tcp open Same, in SSL<br />
* 8085/tcp open unknown gSOAP_Web_Service???<br />
<br />
The modem is also running [http://en.wikipedia.org/wiki/TR-069 a TR-069 process]:<br />
* TR-069 TR-069 is a WAN management protocol intended for communication between Customer Premise Equipment (CPE) and an Auto-Configuration Server (ACS). It defines a mechanism that encompasses secure auto configuration of a CPE, and also incorporates other CPE management functions into a common framework.<br />
* it's supposed to poll an ACS server on port 7547<br />
and a TR-098 process, referring to the Internet Gateway Device data model<br />
<br />
===accessible from WAN===<br />
* pings seem to be blocked<br />
* TCP port 631 (if ?)<br />
* TCP port 2555 (openrg)<br />
* TCP port 7020 (openrg)<br />
* TCP port 7021 (openrg)<br />
* TCP port 8085 (tr69)<br />
* TCP port 8888 (lighttpd)<br />
* UDP port 1024 (openrg)<br />
* UDP port 1025 (hostapd)<br />
* UDP port 3000 (openrg, vdsld...)<br />
* RAW port 2 (openrg)<br />
<br />
===ss===<br />
Easier to get direct;y the info from the box: there is no netstat but ss does the job:<br />
<pre><br />
# #TCP<br />
# ss -lnp<br />
Recv-Q Send-Q Local Address:Port Peer Address:Port <br />
0 0 217.136.xx.xx:992 *:* users:(("openrg",574,47),("openrg",753,47))<br />
0 0 10.179.xx.xx:992 *:* users:(("openrg",574,34),("openrg",753,34))<br />
0 0 192.168.1.1:992 *:* users:(("openrg",574,20),("openrg",753,20))<br />
0 0 127.0.0.1:7019 *:* users:(("openrg",574,9),("openrg",753,9))<br />
0 0 217.136.xx.xx:7020 *:* users:(("openrg",574,49),("openrg",753,49))<br />
0 0 10.179.xx.xx:7020 *:* users:(("openrg",574,36),("openrg",753,36))<br />
0 0 192.168.1.1:7020 *:* users:(("openrg",574,22),("openrg",753,22))<br />
0 0 217.136.xx.xx:7021 *:* users:(("openrg",574,48),("openrg",753,48))<br />
0 0 10.179.xx.xx:7021 *:* users:(("openrg",574,35),("openrg",753,35))<br />
0 0 192.168.1.1:7021 *:* users:(("openrg",574,21),("openrg",753,21))<br />
0 0 217.136.xx.xx:8080 *:* users:(("openrg",574,61),("openrg",753,61))<br />
0 0 217.136.xx.xx:80 *:* users:(("openrg",574,50),("openrg",753,50))<br />
0 0 10.179.xx.xx:8080 *:* users:(("openrg",574,38),("openrg",753,38))<br />
0 0 10.179.xx.xx:80 *:* users:(("openrg",574,37),("openrg",753,37))<br />
0 0 192.168.1.1:8080 *:* users:(("openrg",574,26),("openrg",753,26))<br />
0 0 192.168.1.1:80 *:* users:(("openrg",574,25),("openrg",753,25))<br />
0 0 *:8085 *:* users:(("tr69",790,9),("tr69",794,9),("tr69",795,9),("tr69",798,9),("tr69",799,9),("tr69",817,9))<br />
0 0 217.136.xx.xx:8023 *:* users:(("openrg",574,45),("openrg",753,45))<br />
0 0 217.136.xx.xx:23 *:* users:(("openrg",574,44),("openrg",753,44))<br />
0 0 10.179.xx.xx:8023 *:* users:(("openrg",574,33),("openrg",753,33))<br />
0 0 10.179.xx.xx:23 *:* users:(("openrg",574,32),("openrg",753,32))<br />
0 0 192.168.1.1:8023 *:* users:(("openrg",574,19),("openrg",753,19))<br />
0 0 192.168.1.1:23 *:* users:(("openrg",574,18),("openrg",753,18))<br />
0 0 *:8888 *:* users:(("lighttpd",774,6))<br />
0 0 127.0.0.1:7000 *:* users:(("openrg",574,6),("vdsl.sh",677,6),("vdsld",680,6),("vdsld",689,6),("vdsld",690,6),("vdsld",691,6),("vdsld",692,6),("vdsld",693,6),("vdsld",694,6),("vdsld",695,6),("vdsld",696,6),("vdsld",697,6),("openrg",753,6))<br />
0 0 217.136.xx.xx:8443 *:* users:(("openrg",574,66),("openrg",753,66))<br />
<br />
# #UDP<br />
# ss -naup<br />
State Recv-Q Send-Q Local Address:Port Peer Address:Port <br />
UNCONN 0 0 *:1024 *:* users:(("openrg",574,8),("openrg",753,8))<br />
UNCONN 0 0 *:1025 *:* users:(("hostapd",754,6))<br />
UNCONN 0 0 192.168.1.1:53 *:* users:(("openrg",574,17),("openrg",753,17))<br />
UNCONN 0 0 127.0.0.1:53 *:* users:(("openrg",574,7),("openrg",753,7))<br />
UNCONN 0 0 *:3000 *:* users:(("openrg",574,5),("vdsl.sh",677,5),("vdsld",680,5),("vdsld",689,5),("vdsld",690,5),("vdsld",691,5),("vdsld",692,5),("vdsld",693,5),("vdsld",694,5),("vdsld",695,5),("vdsld",696,5),("vdsld",697,5),("openrg",753,5))<br />
UNCONN 0 0 10.179.xx.xx:5060 *:* users:(("sipd",803,14),("sipd",804,14),("sipd",805,14),("sipd",806,14),("sipd",807,14),("sipd",812,14),("sipd",813,14),("sipd",814,14))<br />
UNCONN 0 0 192.168.1.1:1900 *:* users:(("openrg",574,24),("openrg",753,24))<br />
UNCONN 0 0 239.255.255.250:1900 *:* users:(("openrg",574,23),("openrg",753,23))<br />
<br />
# #RAW<br />
# ss -nawp<br />
State Recv-Q Send-Q Local Address:Port Peer Address:Port <br />
UNCONN 0 0 *:2 *:* users:(("openrg",574,15),("openrg",753,15))<br />
<br />
</pre><br />
<br />
==UPnP==<br />
By default the modem has a UPnP IGD profile and I don't see how to disable it.<br />
<br>'''EDIT''': actually it's possible by logging first as admin then entering the pseudo-URL "javascript:mimic_button('goto: 900..')"<br />
<br>If you use Skype this means Skype will tell the modem to open some ports and Skype will be reachable directly from Internet which means you become a relay-node and this can generate a lot of traffic!<br />
<br>One way to avoid it is to locally block the UPnP discovery multicast packets of Skype, e.g.:<br />
iptables -A OUTPUT -d 239.255.255.250 -p udp -m string --algo bm --string "urn:schemas-upnp-org:service:WAN" -j DROP<br />
By filtering on that string this allows other applications to send their M-SEARCH packet if they don't look for services:WANIP/WANPPP...<br />
<br>One can install that netfilter rule on Debian by following [http://www.debian-administration.org/articles/615 this howto]<br />
<br><br><br />
If you are using Windows, you can [http://www.mydigitallife.info/2009/08/27/how-to-disable-upnp-in-skype-to-remove-open-tcp-and-udp-ports-in-firewall/ disable UPnP directly in Skype] from version 4.0<br />
==Wi-Fi==<br />
I had stability problems when trying to communicate between two wireless clients while wireless to wired or vice versa was working properly.<br />
<br>I forced the access point to mode 802.11g only and since then it works much better:<br />
<br>telnet to the box then:<br />
rg_conf_set dev/eth2/wl_ap/wl_dot11_mode "g_only"<br />
<br />
==Getting greener?==<br />
From [http://patrick.vande-walle.eu/bbox-2/belgacoms-bbox2-wastes-resources/ here]: I also chose to shut down the tr98 service as anyway fw upgrades went never properly for me and tr98 process is eating all available CPU (see "top").<br />
killall tr98<br />
==IPs attribution by DHCP==<br />
Just a short note because it's so well hidden in the configuration that I never find it back...<br />
* Advanced Settings/Network Interfaces/LAN Bridge/IP Address Distribution/Connection List<br />
You can create a new static entry or change an existing dynamic entry into a static one then edit it.<br />
<br>Better to allocate static entries out of the dynamic DHCP pool, which you can constrain via<br />
* Advanced Settings/Network Interfaces/LAN Bridge/IP Address Distribution/LAN Bridge<br />
What is stupid is that names given there are not reflected by the DNS server<br />
<br />
==Misc info==<br />
* http://www.ripperjack.info/b-boxandco/ (french)<br />
* https://web.archive.org/web/20150115115640/http://patrick.vande-walle.eu/bbox-2/<br />
* http://www.zoobab.com/bbox2<br />
<br />
==Belgacom & Fon==<br />
* http://www.belgacomfon.be<br />
* http://wiki.fon.com/wiki/Belgacom<br />
* http://forum.adsl-bc.org/viewtopic.php?t=74970<br />
** http://forum.adsl-bc.org/viewtopic.php?p=1137752#1137752<br />
To get access to the hotspot page if it doesn't appear in the side bar:<br />
Got to 192.168.1.1 then enter URL:<br />
javascript:mimic_button('sidebar:%20lb_sidebar_advanced_hotspot..',%200)<br />
Note that to work I had to enable in about:config of Firefox:<br />
noscript.allowURLBarJS = true<br />
Mine says<br />
Hotspot: Disabled<br />
probably because I'm still with a 16/2 connection<br />
<br>Note that actual firmware is 60R10A-60A05G<br />
<br>'''Edit''': now it's activated with SSID FON_BELGACOM<br />
* Belgacon-fon IDs work fine on Fonera boxes<br />
* Belgacom-fon IDs fail on [http://corp.fon.com/fr/login/ Fon website]<br />
* [https://market.android.com/details?id=com.belgacom.fon Belgacom-fon app] work fine on Fonera boxes (so any FON_* ssid)<br />
* Belgacom-fon app '''fails''' on Belgacom-fon BBoxes<br />
* Manual usage of Belgacon-fon IDs work fine on Belgacom-fon BBox portal<br />
* There is [https://market.android.com/details?id=com.oakley.fon another Fon application] on the Market. Seems the Belgacom one is just a rebranding. Original app seems banned in Belgium, [http://androiddev.orkitra.com/download/apps/?appid=-6579170461419207784&download=com.oakley.fon_v1.2.3 here] is a link to the apk</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=CTF&diff=10508CTF2019-11-18T01:04:55Z<p>PhilippeTeuwen: /* GreHack CTF 2019 */</p>
<hr />
<div><!--<br />
* @vhutsebaut Vincent Hutsebaut<br />
* @MasureMarc Marc Masure<br />
* @y0ug Hugo Caron<br />
* @doegox Philippe Teuwen<br />
* @haxelion Charles Hubain<br />
* @tlk___ Jeremie Boutoille<br />
* @macteca Matthieu Kaczmarek // tecamac<br />
* @Karion_ Vincent Fargues<br />
* @polymorf34 David Berard<br />
* @0xf4b Fabien Perigaud<br />
* Rocky De Wiest // weasel86<br />
* @jybu Jean-Yves Burlett<br />
* @lorenzo2472 Laurent Clévy<br />
<br />
* @dummys1337 Jonathan Borgeaud<br />
* @Baldanos Nicolas Oberli<br />
* @P3b7_ Charles Guillemet<br />
=Hacknowledge-Contest 2014-2017? Finale=<br />
TBD<br />
<br>pollypocket representing Belgium<br />
--><br />
<br />
=GreHack CTF 2019=<br />
* [https://ctftime.org/event/922 ctftime]<br />
== #1 with GreHax0r ==<br />
<!-- Team: @doegox @Baldanos @Pelissier_S @bvernoux xx xx xx xx --><br />
<br>[[Image:GreHack2019.jpg|300px]]<br />
==[https://github.com/SideChannelMarvels/Deadpool/blob/master/wbs_aes_grehack2019 GreHack 2019 AES WB Writeup]==<br />
<br />
=GreHack CTF 2018=<br />
* [https://ctftime.org/event/679 ctftime]<br />
== #2 with donjon-qsec ==<br />
<!-- Team: @papazours @doegox guiton jbb gab victor camille @P3b7_ --><br />
<br>[[Image:GreHack2018.jpg|300px]]<br />
==[[GreHack 2018 Writeups|Writeups]]==<br />
<br />
=Hack.lu 2018 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/699 ctftime]<br />
== #34 (#3 local) with pollypocket ==<br />
<!-- Team: doegox mortis adrien/geekou panda tecamac zours? GoFish? plcp? --><br />
<br>[[Image:Hacklu2018ctf.png|300px]]<br />
<br />
=GreHack CTF 2017=<br />
* [https://ctftime.org/event/426 ctftime]<br />
== #1 with qsec ==<br />
<!-- Team: @papazours @doegox kylma+ robin jbb guiton adrien --><br />
<br>[[Image:GreHack2017.jpg|300px]]<br />
<br />
=Hack.lu 2017 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/525 ctftime]<br />
== #17 (#3 local) with pollypocket ==<br />
==[[Hack.lu 2017 Writeups|Writeups]]==<br />
<br />
=GreHack CTF 2016=<br />
* [https://ctftime.org/event/301 ctftime]<br />
== #1 with qsec ==<br />
<!-- Team: @haxe @doegox @newsoft jbb guiton gheilles sebrummerlhardt xmehrenberger --><br />
<br>[[Image:GreHack2016.jpg|300px]]<br />
<br />
=Hack.lu 2016 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/380 ctftime]<br />
== #13 (#4 local) with pollypocket ==<br />
<br />
=Y-not-CTF at CybSec15=<br />
== #2 with team1 ==<br />
<!-- Team: @dummys1337 @Baldanos kralor @doegox --><br />
<br />
=Hack.lu 2015 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/244 ctftime]<br />
== #10 (#3 local) with pollypocket ==<br />
<br>[[Image:Hacklu2015ctf2.png|300px]]<br />
==[[Hack.lu 2015 Writeups|Writeups]]==<br />
<br />
=Brucon 2015 MWR challenges=<br />
There were three challenges proposed by MWR during Brucon 2015.<br />
<br>pollypocket won two of them, cf tweets [https://twitter.com/mwrlabs/status/652120505877680128 here] and [https://twitter.com/mwrlabs/status/652474013743251456 there]<br />
<br>[[Image:Brucon2015MRW1.jpg|300px]] [[Image:Brucon2015MRW3.png|390px]] [[Image:Brucon2015MRW2.jpg|220px]]<br />
<br />
=CHES2015 CTF=<br />
Philippe Teuwen<br />
== #2 under pseudo yobibe ==<br />
<br>[[Image:Ches2015timefinal.png|300px]]<br />
<br>[[Image:Ches2015rump1.png|300px]]<br />
<br><br>And BTW [https://twitter.com/doegox/status/615463104214863872 first to solve them all after 5.5 days]<br />
<br>[[Image:Ches2015time.png|300px]]<br />
<br />
==[[CHES2015 Writeup|Writeups]]==<br />
[[Image:Ches2015rump2.png|300px]]<br />
<br />
=Nuit du Hack CTF Finals 2015 by Hackerzvoice=<br />
== #3 with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Charles Hubain, Jeremie Boutoille, Philippe Teuwen<br />
<br>(#3 of the 10 CTF finalists, #4 including the public wargame participants)<br />
<br>[[Image:Ndh2015final.png|300px]]<br />
<br />
=[http://communaute.sstic.org/ChallengeSSTIC2015 SSTIC Challenge 2015]=<br />
Philippe Teuwen [http://static.sstic.org/challenge2015/solutions/philippe_teuwen.pdf write-up (pdf)] (FR)<br />
== #2 classement qualité ==<br />
[[Image:Sstic2015topqual.png|300px]]<br />
== #9 classement vitesse ==<br />
[[Image:Sstic2015topspeed.png|300px]]<br />
<br />
=Nuit du Hack CTF Quals 2015 by Hackerzvoice=<br />
* [https://ctftime.org/event/196 ctftime]<br />
== #1 with pollypocket ==<br />
Team: Vincent Hutsebaut, Philippe Teuwen, Charles Hubain, Marc Masure, Jeremie Boutoille, Matthieu Kaczmarek<br />
<br>[[Image:Ndh2015quals.png|300px]][[Image:NdhTop10.png|300px]]<br />
<br />
==[[NDH Writeups#2015 Nuit du Hack CTF Quals by Hackerzvoice|Writeups]]==<br />
=Codegate CTF preliminary 2015=<br />
* [https://ctftime.org/event/201 ctftime]<br />
== #22 with pollypocket ==<br />
<!-- @MasureMarc @haxelion @doegox @tlk___ @polymorf? @karion? --><br />
[[Image:Codegate2015ctf.png|300px]]<br />
=Hack.lu 2014 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/154 ctftime]<br />
== #6 (#1 local) with pollypocket ==<br />
<br>[[Image:Hacklu2014ctf.png|300px]]<br />
<br />
=Brucon 2014 CTF by Facebook=<br />
== #2 (local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Charles Hubain, Philippe Teuwen<br />
<br>[[Image:Brucon2014ctf0.png|300px]][[Image:Brucon2014ctf1.png|300px]][[Image:Brucon2014ctf2.png|300px]]<br />
<br>#1 in Base points and in Bonus points ;-)<br />
<br>[[Image:Brucon2014ctf3.png|300px]]<br />
<br />
=Nuit du Hack CTF Finals 2014 by Hackerzvoice=<br />
* [https://ctftime.org/event/149 ctftime]<br />
== #6 with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Philippe Teuwen, Charles Hubain<br />
==[[NDH Writeups#2014 Nuit du Hack CTF by Hackerzvoice|Writeups]]==<br />
=Hacknowledge-Contest 2014-2015 selections for Belgium=<br />
In the news: [http://www.zataz.com/news/23372/zataz.html Zataz], [http://www.tvlux.be/video/des-hackers-au-wex-_16188.html TV Lux] <br />
<!-- ([http://www.tvlux.be/videos/2014/140428-marche-wex-hakingknowlege-contest-hakers-securite-informa.mp4 video]) --><br />
<!-- https://www.facebook.com/hacknowledge.contest.belgium/photos_stream --><br />
== #1 with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Hugo Caron, Philippe Teuwen, Charles Hubain, Jeremie Boutoille<br />
<br>[[Image:Hacknowledge_quals_2.png|300px]]<br />
[[Image:Hacknowledge_quals_1.png|300px]]<br />
[[Image:Hacknowledge_quals_winner.png|300px]]<br />
<br />
=Nuit du Hack CTF Quals 2014 by Hackerzvoice=<br />
* [https://ctftime.org/event/142 ctftime]<br />
== #2 with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Philippe Teuwen, Charles Hubain, Jeremie Boutoille<br />
<br>[[Image:Ndh2014quals.png|300px]]<br />
[[Image:Stega-expert.png|300px]]<br />
[[Image:Forensics expert.png|300px]]<br />
[[Image:Web expert.png|300px]]<br />
<br />
==[[NDH Writeups#2014 Nuit du Hack CTF Quals by Hackerzvoice|Writeups]]==<br />
<br />
=Brucon 2013 CTF by Facebook=<br />
== #1 (local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Bert Veldeman, Guy Brismée, Philippe Teuwen<br />
<br>[[Image:Brucon2013ctf1.png|300px]]<br />
<br>[[Image:Brucon2013ctf2.png|300px]]<br />
<!-- https://www.youtube.com/watch?v=w2fdPqlHLOU --><br />
<br />
=Hack.lu 2013 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/97 ctftime]<br />
== #5 (#2 local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Charles Hubain, Philippe Teuwen<br />
<br>[[Image:Hacklu2013ctf.png|300px]]<br />
<br />
=Troopers 2013 CTF by PacketWars=<br />
== #1 (local) with Living Dead anti-Defamation League ==<br />
<br>[[Image:Troopers2013pw.png|300px]]<br />
<br />
=Hack.lu 2012 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/38 ctftime]<br />
== #15 (#2 local) with woyouyizhixiaomaol ==<br />
Team: Cédric Bonhomme, William Robinet, Guy Brismée, Raphaël Vinot, Philippe Teuwen, Christophe Kyvrakidis<br />
<br>[[Image:Hacklu2012ctf.png|300px]]<br />
==T-Shirt challenge==<br />
I designed the Hack.lu 2012 T-Shirt backside, and a more visual version for online teams, see [[Hack.lu Writeups#2012 T-Shirt contest|writeup]]<br />
<br>[[Image:Hacklu2012_IMG_4924.png|300px]]<br />
<br>[[Image:Hacklu2012_Noclue.png|300px]]<br />
==[[Hack.lu 2012 Writeups#2012 T-Shirt contest|Writeups]]==<br />
<br />
=Brucon 2012 CTF by The Hex Factor=<br />
== #3(?) (local) with xflame_doegox(?) ==<br />
Team: Guy Brismée, Philippe Teuwen<br />
<br>I don't remember exactly but we got a prize ;-)<br />
<br />
=BeNeLux OWASP Day 2012 CTF by Martin Knobloch, OWASP CTF Project=<br />
== #2 (local) individual ==<br />
<br>[[Image:Owaspbnl2012ctf.jpg|300px]]<br />
<!-- https://twitter.com/knoblochmartin/status/274562724049063938 --><br />
<br />
=Hack.lu 2011 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/13 ctftime]<br />
* [http://2011.hack.lu/index.php?title=CaptureTheFlag Hack.lu CTF]<br />
== #2 at pre-con crypto challenge ==<br />
<!-- https://twitter.com/fluxfingers/status/113888231195549696 --><br />
== #21 (#5 local) with letmein ==<br />
[[Image:Hacklu2011ctf.png]]<br />
<br />
=Brucon 2011 CTF by The Hex Factor=<br />
==Member of The Hex Factor==<br />
That year I was part of The Hex Factor team to design "physical" challenges:<br />
<br> RFID, visual crypto & QR, Knock knock box<br />
<br><br>[[Image:Brucon2011ctfbox.png|300px]]<br />
[[Image:Brucon2011ctfrfid.png|300px]]<br />
<br>[[Image:Brucon2011ctfqr.png|300px]]<br />
[[Image:Brucon2011ctfqr.gif]]<br />
<br />
=Hack.lu 2010 CTF by Fluxfingers=<br />
== #2 at pre-con crypto challenge ==<br />
== #12 (#3 local) with xflame_doegox ==<br />
Team: Guy Brismée, Philippe Teuwen<br />
<br>[[Image:Hacklu2010ctf.png]]<br />
<br />
=Brucon 2010 CTF by The Hex Factor=<br />
== #1 at pre-con stegano challenge ==<br />
<!-- http://blog.brucon.org/2010/08/winner-and-solution-of-thehexfactor.html --><br />
== #2 (local) with xflame_doegox ==<br />
Team: Guy Brismée, Philippe Teuwen, ...<br />
<!-- http://www.thehexfactor.org/conferences/brucon/2010 --></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=CTF&diff=10507CTF2019-11-18T01:04:14Z<p>PhilippeTeuwen: /* GreHack CTF 2019 */</p>
<hr />
<div><!--<br />
* @vhutsebaut Vincent Hutsebaut<br />
* @MasureMarc Marc Masure<br />
* @y0ug Hugo Caron<br />
* @doegox Philippe Teuwen<br />
* @haxelion Charles Hubain<br />
* @tlk___ Jeremie Boutoille<br />
* @macteca Matthieu Kaczmarek // tecamac<br />
* @Karion_ Vincent Fargues<br />
* @polymorf34 David Berard<br />
* @0xf4b Fabien Perigaud<br />
* Rocky De Wiest // weasel86<br />
* @jybu Jean-Yves Burlett<br />
* @lorenzo2472 Laurent Clévy<br />
<br />
* @dummys1337 Jonathan Borgeaud<br />
* @Baldanos Nicolas Oberli<br />
* @P3b7_ Charles Guillemet<br />
=Hacknowledge-Contest 2014-2017? Finale=<br />
TBD<br />
<br>pollypocket representing Belgium<br />
--><br />
<br />
=GreHack CTF 2019=<br />
* [https://ctftime.org/event/922 ctftime]<br />
== #1 with GreHax0r ==<br />
<!-- Team: @doegox @Baldanos @Pelissier_S @bvernoux xx xx xx xx --><br />
<br>[[Image:GreHack2019.jpg|300px]]<br />
==[GreHack 2019 AES WB Writeup https://github.com/SideChannelMarvels/Deadpool/blob/master/wbs_aes_grehack2019]==<br />
<br />
=GreHack CTF 2018=<br />
* [https://ctftime.org/event/679 ctftime]<br />
== #2 with donjon-qsec ==<br />
<!-- Team: @papazours @doegox guiton jbb gab victor camille @P3b7_ --><br />
<br>[[Image:GreHack2018.jpg|300px]]<br />
==[[GreHack 2018 Writeups|Writeups]]==<br />
<br />
=Hack.lu 2018 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/699 ctftime]<br />
== #34 (#3 local) with pollypocket ==<br />
<!-- Team: doegox mortis adrien/geekou panda tecamac zours? GoFish? plcp? --><br />
<br>[[Image:Hacklu2018ctf.png|300px]]<br />
<br />
=GreHack CTF 2017=<br />
* [https://ctftime.org/event/426 ctftime]<br />
== #1 with qsec ==<br />
<!-- Team: @papazours @doegox kylma+ robin jbb guiton adrien --><br />
<br>[[Image:GreHack2017.jpg|300px]]<br />
<br />
=Hack.lu 2017 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/525 ctftime]<br />
== #17 (#3 local) with pollypocket ==<br />
==[[Hack.lu 2017 Writeups|Writeups]]==<br />
<br />
=GreHack CTF 2016=<br />
* [https://ctftime.org/event/301 ctftime]<br />
== #1 with qsec ==<br />
<!-- Team: @haxe @doegox @newsoft jbb guiton gheilles sebrummerlhardt xmehrenberger --><br />
<br>[[Image:GreHack2016.jpg|300px]]<br />
<br />
=Hack.lu 2016 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/380 ctftime]<br />
== #13 (#4 local) with pollypocket ==<br />
<br />
=Y-not-CTF at CybSec15=<br />
== #2 with team1 ==<br />
<!-- Team: @dummys1337 @Baldanos kralor @doegox --><br />
<br />
=Hack.lu 2015 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/244 ctftime]<br />
== #10 (#3 local) with pollypocket ==<br />
<br>[[Image:Hacklu2015ctf2.png|300px]]<br />
==[[Hack.lu 2015 Writeups|Writeups]]==<br />
<br />
=Brucon 2015 MWR challenges=<br />
There were three challenges proposed by MWR during Brucon 2015.<br />
<br>pollypocket won two of them, cf tweets [https://twitter.com/mwrlabs/status/652120505877680128 here] and [https://twitter.com/mwrlabs/status/652474013743251456 there]<br />
<br>[[Image:Brucon2015MRW1.jpg|300px]] [[Image:Brucon2015MRW3.png|390px]] [[Image:Brucon2015MRW2.jpg|220px]]<br />
<br />
=CHES2015 CTF=<br />
Philippe Teuwen<br />
== #2 under pseudo yobibe ==<br />
<br>[[Image:Ches2015timefinal.png|300px]]<br />
<br>[[Image:Ches2015rump1.png|300px]]<br />
<br><br>And BTW [https://twitter.com/doegox/status/615463104214863872 first to solve them all after 5.5 days]<br />
<br>[[Image:Ches2015time.png|300px]]<br />
<br />
==[[CHES2015 Writeup|Writeups]]==<br />
[[Image:Ches2015rump2.png|300px]]<br />
<br />
=Nuit du Hack CTF Finals 2015 by Hackerzvoice=<br />
== #3 with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Charles Hubain, Jeremie Boutoille, Philippe Teuwen<br />
<br>(#3 of the 10 CTF finalists, #4 including the public wargame participants)<br />
<br>[[Image:Ndh2015final.png|300px]]<br />
<br />
=[http://communaute.sstic.org/ChallengeSSTIC2015 SSTIC Challenge 2015]=<br />
Philippe Teuwen [http://static.sstic.org/challenge2015/solutions/philippe_teuwen.pdf write-up (pdf)] (FR)<br />
== #2 classement qualité ==<br />
[[Image:Sstic2015topqual.png|300px]]<br />
== #9 classement vitesse ==<br />
[[Image:Sstic2015topspeed.png|300px]]<br />
<br />
=Nuit du Hack CTF Quals 2015 by Hackerzvoice=<br />
* [https://ctftime.org/event/196 ctftime]<br />
== #1 with pollypocket ==<br />
Team: Vincent Hutsebaut, Philippe Teuwen, Charles Hubain, Marc Masure, Jeremie Boutoille, Matthieu Kaczmarek<br />
<br>[[Image:Ndh2015quals.png|300px]][[Image:NdhTop10.png|300px]]<br />
<br />
==[[NDH Writeups#2015 Nuit du Hack CTF Quals by Hackerzvoice|Writeups]]==<br />
=Codegate CTF preliminary 2015=<br />
* [https://ctftime.org/event/201 ctftime]<br />
== #22 with pollypocket ==<br />
<!-- @MasureMarc @haxelion @doegox @tlk___ @polymorf? @karion? --><br />
[[Image:Codegate2015ctf.png|300px]]<br />
=Hack.lu 2014 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/154 ctftime]<br />
== #6 (#1 local) with pollypocket ==<br />
<br>[[Image:Hacklu2014ctf.png|300px]]<br />
<br />
=Brucon 2014 CTF by Facebook=<br />
== #2 (local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Charles Hubain, Philippe Teuwen<br />
<br>[[Image:Brucon2014ctf0.png|300px]][[Image:Brucon2014ctf1.png|300px]][[Image:Brucon2014ctf2.png|300px]]<br />
<br>#1 in Base points and in Bonus points ;-)<br />
<br>[[Image:Brucon2014ctf3.png|300px]]<br />
<br />
=Nuit du Hack CTF Finals 2014 by Hackerzvoice=<br />
* [https://ctftime.org/event/149 ctftime]<br />
== #6 with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Philippe Teuwen, Charles Hubain<br />
==[[NDH Writeups#2014 Nuit du Hack CTF by Hackerzvoice|Writeups]]==<br />
=Hacknowledge-Contest 2014-2015 selections for Belgium=<br />
In the news: [http://www.zataz.com/news/23372/zataz.html Zataz], [http://www.tvlux.be/video/des-hackers-au-wex-_16188.html TV Lux] <br />
<!-- ([http://www.tvlux.be/videos/2014/140428-marche-wex-hakingknowlege-contest-hakers-securite-informa.mp4 video]) --><br />
<!-- https://www.facebook.com/hacknowledge.contest.belgium/photos_stream --><br />
== #1 with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Hugo Caron, Philippe Teuwen, Charles Hubain, Jeremie Boutoille<br />
<br>[[Image:Hacknowledge_quals_2.png|300px]]<br />
[[Image:Hacknowledge_quals_1.png|300px]]<br />
[[Image:Hacknowledge_quals_winner.png|300px]]<br />
<br />
=Nuit du Hack CTF Quals 2014 by Hackerzvoice=<br />
* [https://ctftime.org/event/142 ctftime]<br />
== #2 with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Philippe Teuwen, Charles Hubain, Jeremie Boutoille<br />
<br>[[Image:Ndh2014quals.png|300px]]<br />
[[Image:Stega-expert.png|300px]]<br />
[[Image:Forensics expert.png|300px]]<br />
[[Image:Web expert.png|300px]]<br />
<br />
==[[NDH Writeups#2014 Nuit du Hack CTF Quals by Hackerzvoice|Writeups]]==<br />
<br />
=Brucon 2013 CTF by Facebook=<br />
== #1 (local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Bert Veldeman, Guy Brismée, Philippe Teuwen<br />
<br>[[Image:Brucon2013ctf1.png|300px]]<br />
<br>[[Image:Brucon2013ctf2.png|300px]]<br />
<!-- https://www.youtube.com/watch?v=w2fdPqlHLOU --><br />
<br />
=Hack.lu 2013 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/97 ctftime]<br />
== #5 (#2 local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Charles Hubain, Philippe Teuwen<br />
<br>[[Image:Hacklu2013ctf.png|300px]]<br />
<br />
=Troopers 2013 CTF by PacketWars=<br />
== #1 (local) with Living Dead anti-Defamation League ==<br />
<br>[[Image:Troopers2013pw.png|300px]]<br />
<br />
=Hack.lu 2012 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/38 ctftime]<br />
== #15 (#2 local) with woyouyizhixiaomaol ==<br />
Team: Cédric Bonhomme, William Robinet, Guy Brismée, Raphaël Vinot, Philippe Teuwen, Christophe Kyvrakidis<br />
<br>[[Image:Hacklu2012ctf.png|300px]]<br />
==T-Shirt challenge==<br />
I designed the Hack.lu 2012 T-Shirt backside, and a more visual version for online teams, see [[Hack.lu Writeups#2012 T-Shirt contest|writeup]]<br />
<br>[[Image:Hacklu2012_IMG_4924.png|300px]]<br />
<br>[[Image:Hacklu2012_Noclue.png|300px]]<br />
==[[Hack.lu 2012 Writeups#2012 T-Shirt contest|Writeups]]==<br />
<br />
=Brucon 2012 CTF by The Hex Factor=<br />
== #3(?) (local) with xflame_doegox(?) ==<br />
Team: Guy Brismée, Philippe Teuwen<br />
<br>I don't remember exactly but we got a prize ;-)<br />
<br />
=BeNeLux OWASP Day 2012 CTF by Martin Knobloch, OWASP CTF Project=<br />
== #2 (local) individual ==<br />
<br>[[Image:Owaspbnl2012ctf.jpg|300px]]<br />
<!-- https://twitter.com/knoblochmartin/status/274562724049063938 --><br />
<br />
=Hack.lu 2011 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/13 ctftime]<br />
* [http://2011.hack.lu/index.php?title=CaptureTheFlag Hack.lu CTF]<br />
== #2 at pre-con crypto challenge ==<br />
<!-- https://twitter.com/fluxfingers/status/113888231195549696 --><br />
== #21 (#5 local) with letmein ==<br />
[[Image:Hacklu2011ctf.png]]<br />
<br />
=Brucon 2011 CTF by The Hex Factor=<br />
==Member of The Hex Factor==<br />
That year I was part of The Hex Factor team to design "physical" challenges:<br />
<br> RFID, visual crypto & QR, Knock knock box<br />
<br><br>[[Image:Brucon2011ctfbox.png|300px]]<br />
[[Image:Brucon2011ctfrfid.png|300px]]<br />
<br>[[Image:Brucon2011ctfqr.png|300px]]<br />
[[Image:Brucon2011ctfqr.gif]]<br />
<br />
=Hack.lu 2010 CTF by Fluxfingers=<br />
== #2 at pre-con crypto challenge ==<br />
== #12 (#3 local) with xflame_doegox ==<br />
Team: Guy Brismée, Philippe Teuwen<br />
<br>[[Image:Hacklu2010ctf.png]]<br />
<br />
=Brucon 2010 CTF by The Hex Factor=<br />
== #1 at pre-con stegano challenge ==<br />
<!-- http://blog.brucon.org/2010/08/winner-and-solution-of-thehexfactor.html --><br />
== #2 (local) with xflame_doegox ==<br />
Team: Guy Brismée, Philippe Teuwen, ...<br />
<!-- http://www.thehexfactor.org/conferences/brucon/2010 --></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=CTF&diff=10506CTF2019-11-18T01:04:04Z<p>PhilippeTeuwen: /* GreHack CTF 2019 */</p>
<hr />
<div><!--<br />
* @vhutsebaut Vincent Hutsebaut<br />
* @MasureMarc Marc Masure<br />
* @y0ug Hugo Caron<br />
* @doegox Philippe Teuwen<br />
* @haxelion Charles Hubain<br />
* @tlk___ Jeremie Boutoille<br />
* @macteca Matthieu Kaczmarek // tecamac<br />
* @Karion_ Vincent Fargues<br />
* @polymorf34 David Berard<br />
* @0xf4b Fabien Perigaud<br />
* Rocky De Wiest // weasel86<br />
* @jybu Jean-Yves Burlett<br />
* @lorenzo2472 Laurent Clévy<br />
<br />
* @dummys1337 Jonathan Borgeaud<br />
* @Baldanos Nicolas Oberli<br />
* @P3b7_ Charles Guillemet<br />
=Hacknowledge-Contest 2014-2017? Finale=<br />
TBD<br />
<br>pollypocket representing Belgium<br />
--><br />
<br />
=GreHack CTF 2019=<br />
* [https://ctftime.org/event/922 ctftime]<br />
== #2 with GreHax0r ==<br />
<!-- Team: @doegox @Baldanos @Pelissier_S @bvernoux xx xx xx xx --><br />
<br>[[Image:GreHack2019.jpg|300px]]<br />
==[GreHack 2019 AES WB Writeup https://github.com/SideChannelMarvels/Deadpool/blob/master/wbs_aes_grehack2019]==<br />
<br />
=GreHack CTF 2018=<br />
* [https://ctftime.org/event/679 ctftime]<br />
== #2 with donjon-qsec ==<br />
<!-- Team: @papazours @doegox guiton jbb gab victor camille @P3b7_ --><br />
<br>[[Image:GreHack2018.jpg|300px]]<br />
==[[GreHack 2018 Writeups|Writeups]]==<br />
<br />
=Hack.lu 2018 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/699 ctftime]<br />
== #34 (#3 local) with pollypocket ==<br />
<!-- Team: doegox mortis adrien/geekou panda tecamac zours? GoFish? plcp? --><br />
<br>[[Image:Hacklu2018ctf.png|300px]]<br />
<br />
=GreHack CTF 2017=<br />
* [https://ctftime.org/event/426 ctftime]<br />
== #1 with qsec ==<br />
<!-- Team: @papazours @doegox kylma+ robin jbb guiton adrien --><br />
<br>[[Image:GreHack2017.jpg|300px]]<br />
<br />
=Hack.lu 2017 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/525 ctftime]<br />
== #17 (#3 local) with pollypocket ==<br />
==[[Hack.lu 2017 Writeups|Writeups]]==<br />
<br />
=GreHack CTF 2016=<br />
* [https://ctftime.org/event/301 ctftime]<br />
== #1 with qsec ==<br />
<!-- Team: @haxe @doegox @newsoft jbb guiton gheilles sebrummerlhardt xmehrenberger --><br />
<br>[[Image:GreHack2016.jpg|300px]]<br />
<br />
=Hack.lu 2016 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/380 ctftime]<br />
== #13 (#4 local) with pollypocket ==<br />
<br />
=Y-not-CTF at CybSec15=<br />
== #2 with team1 ==<br />
<!-- Team: @dummys1337 @Baldanos kralor @doegox --><br />
<br />
=Hack.lu 2015 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/244 ctftime]<br />
== #10 (#3 local) with pollypocket ==<br />
<br>[[Image:Hacklu2015ctf2.png|300px]]<br />
==[[Hack.lu 2015 Writeups|Writeups]]==<br />
<br />
=Brucon 2015 MWR challenges=<br />
There were three challenges proposed by MWR during Brucon 2015.<br />
<br>pollypocket won two of them, cf tweets [https://twitter.com/mwrlabs/status/652120505877680128 here] and [https://twitter.com/mwrlabs/status/652474013743251456 there]<br />
<br>[[Image:Brucon2015MRW1.jpg|300px]] [[Image:Brucon2015MRW3.png|390px]] [[Image:Brucon2015MRW2.jpg|220px]]<br />
<br />
=CHES2015 CTF=<br />
Philippe Teuwen<br />
== #2 under pseudo yobibe ==<br />
<br>[[Image:Ches2015timefinal.png|300px]]<br />
<br>[[Image:Ches2015rump1.png|300px]]<br />
<br><br>And BTW [https://twitter.com/doegox/status/615463104214863872 first to solve them all after 5.5 days]<br />
<br>[[Image:Ches2015time.png|300px]]<br />
<br />
==[[CHES2015 Writeup|Writeups]]==<br />
[[Image:Ches2015rump2.png|300px]]<br />
<br />
=Nuit du Hack CTF Finals 2015 by Hackerzvoice=<br />
== #3 with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Charles Hubain, Jeremie Boutoille, Philippe Teuwen<br />
<br>(#3 of the 10 CTF finalists, #4 including the public wargame participants)<br />
<br>[[Image:Ndh2015final.png|300px]]<br />
<br />
=[http://communaute.sstic.org/ChallengeSSTIC2015 SSTIC Challenge 2015]=<br />
Philippe Teuwen [http://static.sstic.org/challenge2015/solutions/philippe_teuwen.pdf write-up (pdf)] (FR)<br />
== #2 classement qualité ==<br />
[[Image:Sstic2015topqual.png|300px]]<br />
== #9 classement vitesse ==<br />
[[Image:Sstic2015topspeed.png|300px]]<br />
<br />
=Nuit du Hack CTF Quals 2015 by Hackerzvoice=<br />
* [https://ctftime.org/event/196 ctftime]<br />
== #1 with pollypocket ==<br />
Team: Vincent Hutsebaut, Philippe Teuwen, Charles Hubain, Marc Masure, Jeremie Boutoille, Matthieu Kaczmarek<br />
<br>[[Image:Ndh2015quals.png|300px]][[Image:NdhTop10.png|300px]]<br />
<br />
==[[NDH Writeups#2015 Nuit du Hack CTF Quals by Hackerzvoice|Writeups]]==<br />
=Codegate CTF preliminary 2015=<br />
* [https://ctftime.org/event/201 ctftime]<br />
== #22 with pollypocket ==<br />
<!-- @MasureMarc @haxelion @doegox @tlk___ @polymorf? @karion? --><br />
[[Image:Codegate2015ctf.png|300px]]<br />
=Hack.lu 2014 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/154 ctftime]<br />
== #6 (#1 local) with pollypocket ==<br />
<br>[[Image:Hacklu2014ctf.png|300px]]<br />
<br />
=Brucon 2014 CTF by Facebook=<br />
== #2 (local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Charles Hubain, Philippe Teuwen<br />
<br>[[Image:Brucon2014ctf0.png|300px]][[Image:Brucon2014ctf1.png|300px]][[Image:Brucon2014ctf2.png|300px]]<br />
<br>#1 in Base points and in Bonus points ;-)<br />
<br>[[Image:Brucon2014ctf3.png|300px]]<br />
<br />
=Nuit du Hack CTF Finals 2014 by Hackerzvoice=<br />
* [https://ctftime.org/event/149 ctftime]<br />
== #6 with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Philippe Teuwen, Charles Hubain<br />
==[[NDH Writeups#2014 Nuit du Hack CTF by Hackerzvoice|Writeups]]==<br />
=Hacknowledge-Contest 2014-2015 selections for Belgium=<br />
In the news: [http://www.zataz.com/news/23372/zataz.html Zataz], [http://www.tvlux.be/video/des-hackers-au-wex-_16188.html TV Lux] <br />
<!-- ([http://www.tvlux.be/videos/2014/140428-marche-wex-hakingknowlege-contest-hakers-securite-informa.mp4 video]) --><br />
<!-- https://www.facebook.com/hacknowledge.contest.belgium/photos_stream --><br />
== #1 with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Hugo Caron, Philippe Teuwen, Charles Hubain, Jeremie Boutoille<br />
<br>[[Image:Hacknowledge_quals_2.png|300px]]<br />
[[Image:Hacknowledge_quals_1.png|300px]]<br />
[[Image:Hacknowledge_quals_winner.png|300px]]<br />
<br />
=Nuit du Hack CTF Quals 2014 by Hackerzvoice=<br />
* [https://ctftime.org/event/142 ctftime]<br />
== #2 with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Philippe Teuwen, Charles Hubain, Jeremie Boutoille<br />
<br>[[Image:Ndh2014quals.png|300px]]<br />
[[Image:Stega-expert.png|300px]]<br />
[[Image:Forensics expert.png|300px]]<br />
[[Image:Web expert.png|300px]]<br />
<br />
==[[NDH Writeups#2014 Nuit du Hack CTF Quals by Hackerzvoice|Writeups]]==<br />
<br />
=Brucon 2013 CTF by Facebook=<br />
== #1 (local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Bert Veldeman, Guy Brismée, Philippe Teuwen<br />
<br>[[Image:Brucon2013ctf1.png|300px]]<br />
<br>[[Image:Brucon2013ctf2.png|300px]]<br />
<!-- https://www.youtube.com/watch?v=w2fdPqlHLOU --><br />
<br />
=Hack.lu 2013 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/97 ctftime]<br />
== #5 (#2 local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Charles Hubain, Philippe Teuwen<br />
<br>[[Image:Hacklu2013ctf.png|300px]]<br />
<br />
=Troopers 2013 CTF by PacketWars=<br />
== #1 (local) with Living Dead anti-Defamation League ==<br />
<br>[[Image:Troopers2013pw.png|300px]]<br />
<br />
=Hack.lu 2012 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/38 ctftime]<br />
== #15 (#2 local) with woyouyizhixiaomaol ==<br />
Team: Cédric Bonhomme, William Robinet, Guy Brismée, Raphaël Vinot, Philippe Teuwen, Christophe Kyvrakidis<br />
<br>[[Image:Hacklu2012ctf.png|300px]]<br />
==T-Shirt challenge==<br />
I designed the Hack.lu 2012 T-Shirt backside, and a more visual version for online teams, see [[Hack.lu Writeups#2012 T-Shirt contest|writeup]]<br />
<br>[[Image:Hacklu2012_IMG_4924.png|300px]]<br />
<br>[[Image:Hacklu2012_Noclue.png|300px]]<br />
==[[Hack.lu 2012 Writeups#2012 T-Shirt contest|Writeups]]==<br />
<br />
=Brucon 2012 CTF by The Hex Factor=<br />
== #3(?) (local) with xflame_doegox(?) ==<br />
Team: Guy Brismée, Philippe Teuwen<br />
<br>I don't remember exactly but we got a prize ;-)<br />
<br />
=BeNeLux OWASP Day 2012 CTF by Martin Knobloch, OWASP CTF Project=<br />
== #2 (local) individual ==<br />
<br>[[Image:Owaspbnl2012ctf.jpg|300px]]<br />
<!-- https://twitter.com/knoblochmartin/status/274562724049063938 --><br />
<br />
=Hack.lu 2011 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/13 ctftime]<br />
* [http://2011.hack.lu/index.php?title=CaptureTheFlag Hack.lu CTF]<br />
== #2 at pre-con crypto challenge ==<br />
<!-- https://twitter.com/fluxfingers/status/113888231195549696 --><br />
== #21 (#5 local) with letmein ==<br />
[[Image:Hacklu2011ctf.png]]<br />
<br />
=Brucon 2011 CTF by The Hex Factor=<br />
==Member of The Hex Factor==<br />
That year I was part of The Hex Factor team to design "physical" challenges:<br />
<br> RFID, visual crypto & QR, Knock knock box<br />
<br><br>[[Image:Brucon2011ctfbox.png|300px]]<br />
[[Image:Brucon2011ctfrfid.png|300px]]<br />
<br>[[Image:Brucon2011ctfqr.png|300px]]<br />
[[Image:Brucon2011ctfqr.gif]]<br />
<br />
=Hack.lu 2010 CTF by Fluxfingers=<br />
== #2 at pre-con crypto challenge ==<br />
== #12 (#3 local) with xflame_doegox ==<br />
Team: Guy Brismée, Philippe Teuwen<br />
<br>[[Image:Hacklu2010ctf.png]]<br />
<br />
=Brucon 2010 CTF by The Hex Factor=<br />
== #1 at pre-con stegano challenge ==<br />
<!-- http://blog.brucon.org/2010/08/winner-and-solution-of-thehexfactor.html --><br />
== #2 (local) with xflame_doegox ==<br />
Team: Guy Brismée, Philippe Teuwen, ...<br />
<!-- http://www.thehexfactor.org/conferences/brucon/2010 --></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=File:GreHack2019.jpg&diff=10505File:GreHack2019.jpg2019-11-18T01:03:25Z<p>PhilippeTeuwen: </p>
<hr />
<div></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=CTF&diff=10504CTF2019-11-18T01:02:25Z<p>PhilippeTeuwen: /* GreHack CTF 2018 */</p>
<hr />
<div><!--<br />
* @vhutsebaut Vincent Hutsebaut<br />
* @MasureMarc Marc Masure<br />
* @y0ug Hugo Caron<br />
* @doegox Philippe Teuwen<br />
* @haxelion Charles Hubain<br />
* @tlk___ Jeremie Boutoille<br />
* @macteca Matthieu Kaczmarek // tecamac<br />
* @Karion_ Vincent Fargues<br />
* @polymorf34 David Berard<br />
* @0xf4b Fabien Perigaud<br />
* Rocky De Wiest // weasel86<br />
* @jybu Jean-Yves Burlett<br />
* @lorenzo2472 Laurent Clévy<br />
<br />
* @dummys1337 Jonathan Borgeaud<br />
* @Baldanos Nicolas Oberli<br />
* @P3b7_ Charles Guillemet<br />
=Hacknowledge-Contest 2014-2017? Finale=<br />
TBD<br />
<br>pollypocket representing Belgium<br />
--><br />
<br />
=GreHack CTF 2019=<br />
* [https://ctftime.org/event/922 ctftime]<br />
== #2 with donjon-qsec ==<br />
<!-- Team: @doegox @Baldanos @Pelissier_S @bvernoux xx xx xx xx --><br />
<br>[[Image:GreHack2019.jpg|300px]]<br />
==[GreHack 2019 AES WB Writeup https://github.com/SideChannelMarvels/Deadpool/blob/master/wbs_aes_grehack2019]==<br />
<br />
=GreHack CTF 2018=<br />
* [https://ctftime.org/event/679 ctftime]<br />
== #2 with donjon-qsec ==<br />
<!-- Team: @papazours @doegox guiton jbb gab victor camille @P3b7_ --><br />
<br>[[Image:GreHack2018.jpg|300px]]<br />
==[[GreHack 2018 Writeups|Writeups]]==<br />
<br />
=Hack.lu 2018 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/699 ctftime]<br />
== #34 (#3 local) with pollypocket ==<br />
<!-- Team: doegox mortis adrien/geekou panda tecamac zours? GoFish? plcp? --><br />
<br>[[Image:Hacklu2018ctf.png|300px]]<br />
<br />
=GreHack CTF 2017=<br />
* [https://ctftime.org/event/426 ctftime]<br />
== #1 with qsec ==<br />
<!-- Team: @papazours @doegox kylma+ robin jbb guiton adrien --><br />
<br>[[Image:GreHack2017.jpg|300px]]<br />
<br />
=Hack.lu 2017 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/525 ctftime]<br />
== #17 (#3 local) with pollypocket ==<br />
==[[Hack.lu 2017 Writeups|Writeups]]==<br />
<br />
=GreHack CTF 2016=<br />
* [https://ctftime.org/event/301 ctftime]<br />
== #1 with qsec ==<br />
<!-- Team: @haxe @doegox @newsoft jbb guiton gheilles sebrummerlhardt xmehrenberger --><br />
<br>[[Image:GreHack2016.jpg|300px]]<br />
<br />
=Hack.lu 2016 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/380 ctftime]<br />
== #13 (#4 local) with pollypocket ==<br />
<br />
=Y-not-CTF at CybSec15=<br />
== #2 with team1 ==<br />
<!-- Team: @dummys1337 @Baldanos kralor @doegox --><br />
<br />
=Hack.lu 2015 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/244 ctftime]<br />
== #10 (#3 local) with pollypocket ==<br />
<br>[[Image:Hacklu2015ctf2.png|300px]]<br />
==[[Hack.lu 2015 Writeups|Writeups]]==<br />
<br />
=Brucon 2015 MWR challenges=<br />
There were three challenges proposed by MWR during Brucon 2015.<br />
<br>pollypocket won two of them, cf tweets [https://twitter.com/mwrlabs/status/652120505877680128 here] and [https://twitter.com/mwrlabs/status/652474013743251456 there]<br />
<br>[[Image:Brucon2015MRW1.jpg|300px]] [[Image:Brucon2015MRW3.png|390px]] [[Image:Brucon2015MRW2.jpg|220px]]<br />
<br />
=CHES2015 CTF=<br />
Philippe Teuwen<br />
== #2 under pseudo yobibe ==<br />
<br>[[Image:Ches2015timefinal.png|300px]]<br />
<br>[[Image:Ches2015rump1.png|300px]]<br />
<br><br>And BTW [https://twitter.com/doegox/status/615463104214863872 first to solve them all after 5.5 days]<br />
<br>[[Image:Ches2015time.png|300px]]<br />
<br />
==[[CHES2015 Writeup|Writeups]]==<br />
[[Image:Ches2015rump2.png|300px]]<br />
<br />
=Nuit du Hack CTF Finals 2015 by Hackerzvoice=<br />
== #3 with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Charles Hubain, Jeremie Boutoille, Philippe Teuwen<br />
<br>(#3 of the 10 CTF finalists, #4 including the public wargame participants)<br />
<br>[[Image:Ndh2015final.png|300px]]<br />
<br />
=[http://communaute.sstic.org/ChallengeSSTIC2015 SSTIC Challenge 2015]=<br />
Philippe Teuwen [http://static.sstic.org/challenge2015/solutions/philippe_teuwen.pdf write-up (pdf)] (FR)<br />
== #2 classement qualité ==<br />
[[Image:Sstic2015topqual.png|300px]]<br />
== #9 classement vitesse ==<br />
[[Image:Sstic2015topspeed.png|300px]]<br />
<br />
=Nuit du Hack CTF Quals 2015 by Hackerzvoice=<br />
* [https://ctftime.org/event/196 ctftime]<br />
== #1 with pollypocket ==<br />
Team: Vincent Hutsebaut, Philippe Teuwen, Charles Hubain, Marc Masure, Jeremie Boutoille, Matthieu Kaczmarek<br />
<br>[[Image:Ndh2015quals.png|300px]][[Image:NdhTop10.png|300px]]<br />
<br />
==[[NDH Writeups#2015 Nuit du Hack CTF Quals by Hackerzvoice|Writeups]]==<br />
=Codegate CTF preliminary 2015=<br />
* [https://ctftime.org/event/201 ctftime]<br />
== #22 with pollypocket ==<br />
<!-- @MasureMarc @haxelion @doegox @tlk___ @polymorf? @karion? --><br />
[[Image:Codegate2015ctf.png|300px]]<br />
=Hack.lu 2014 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/154 ctftime]<br />
== #6 (#1 local) with pollypocket ==<br />
<br>[[Image:Hacklu2014ctf.png|300px]]<br />
<br />
=Brucon 2014 CTF by Facebook=<br />
== #2 (local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Charles Hubain, Philippe Teuwen<br />
<br>[[Image:Brucon2014ctf0.png|300px]][[Image:Brucon2014ctf1.png|300px]][[Image:Brucon2014ctf2.png|300px]]<br />
<br>#1 in Base points and in Bonus points ;-)<br />
<br>[[Image:Brucon2014ctf3.png|300px]]<br />
<br />
=Nuit du Hack CTF Finals 2014 by Hackerzvoice=<br />
* [https://ctftime.org/event/149 ctftime]<br />
== #6 with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Philippe Teuwen, Charles Hubain<br />
==[[NDH Writeups#2014 Nuit du Hack CTF by Hackerzvoice|Writeups]]==<br />
=Hacknowledge-Contest 2014-2015 selections for Belgium=<br />
In the news: [http://www.zataz.com/news/23372/zataz.html Zataz], [http://www.tvlux.be/video/des-hackers-au-wex-_16188.html TV Lux] <br />
<!-- ([http://www.tvlux.be/videos/2014/140428-marche-wex-hakingknowlege-contest-hakers-securite-informa.mp4 video]) --><br />
<!-- https://www.facebook.com/hacknowledge.contest.belgium/photos_stream --><br />
== #1 with pollypocket ==<br />
Team: Vincent Hutsebaut, Marc Masure, Hugo Caron, Philippe Teuwen, Charles Hubain, Jeremie Boutoille<br />
<br>[[Image:Hacknowledge_quals_2.png|300px]]<br />
[[Image:Hacknowledge_quals_1.png|300px]]<br />
[[Image:Hacknowledge_quals_winner.png|300px]]<br />
<br />
=Nuit du Hack CTF Quals 2014 by Hackerzvoice=<br />
* [https://ctftime.org/event/142 ctftime]<br />
== #2 with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Philippe Teuwen, Charles Hubain, Jeremie Boutoille<br />
<br>[[Image:Ndh2014quals.png|300px]]<br />
[[Image:Stega-expert.png|300px]]<br />
[[Image:Forensics expert.png|300px]]<br />
[[Image:Web expert.png|300px]]<br />
<br />
==[[NDH Writeups#2014 Nuit du Hack CTF Quals by Hackerzvoice|Writeups]]==<br />
<br />
=Brucon 2013 CTF by Facebook=<br />
== #1 (local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Bert Veldeman, Guy Brismée, Philippe Teuwen<br />
<br>[[Image:Brucon2013ctf1.png|300px]]<br />
<br>[[Image:Brucon2013ctf2.png|300px]]<br />
<!-- https://www.youtube.com/watch?v=w2fdPqlHLOU --><br />
<br />
=Hack.lu 2013 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/97 ctftime]<br />
== #5 (#2 local) with pollypocket ==<br />
Team: Vincent Hutsebaut, Matthieu Kaczmarek, Hugo Caron, Charles Hubain, Philippe Teuwen<br />
<br>[[Image:Hacklu2013ctf.png|300px]]<br />
<br />
=Troopers 2013 CTF by PacketWars=<br />
== #1 (local) with Living Dead anti-Defamation League ==<br />
<br>[[Image:Troopers2013pw.png|300px]]<br />
<br />
=Hack.lu 2012 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/38 ctftime]<br />
== #15 (#2 local) with woyouyizhixiaomaol ==<br />
Team: Cédric Bonhomme, William Robinet, Guy Brismée, Raphaël Vinot, Philippe Teuwen, Christophe Kyvrakidis<br />
<br>[[Image:Hacklu2012ctf.png|300px]]<br />
==T-Shirt challenge==<br />
I designed the Hack.lu 2012 T-Shirt backside, and a more visual version for online teams, see [[Hack.lu Writeups#2012 T-Shirt contest|writeup]]<br />
<br>[[Image:Hacklu2012_IMG_4924.png|300px]]<br />
<br>[[Image:Hacklu2012_Noclue.png|300px]]<br />
==[[Hack.lu 2012 Writeups#2012 T-Shirt contest|Writeups]]==<br />
<br />
=Brucon 2012 CTF by The Hex Factor=<br />
== #3(?) (local) with xflame_doegox(?) ==<br />
Team: Guy Brismée, Philippe Teuwen<br />
<br>I don't remember exactly but we got a prize ;-)<br />
<br />
=BeNeLux OWASP Day 2012 CTF by Martin Knobloch, OWASP CTF Project=<br />
== #2 (local) individual ==<br />
<br>[[Image:Owaspbnl2012ctf.jpg|300px]]<br />
<!-- https://twitter.com/knoblochmartin/status/274562724049063938 --><br />
<br />
=Hack.lu 2011 CTF by Fluxfingers=<br />
* [https://ctftime.org/event/13 ctftime]<br />
* [http://2011.hack.lu/index.php?title=CaptureTheFlag Hack.lu CTF]<br />
== #2 at pre-con crypto challenge ==<br />
<!-- https://twitter.com/fluxfingers/status/113888231195549696 --><br />
== #21 (#5 local) with letmein ==<br />
[[Image:Hacklu2011ctf.png]]<br />
<br />
=Brucon 2011 CTF by The Hex Factor=<br />
==Member of The Hex Factor==<br />
That year I was part of The Hex Factor team to design "physical" challenges:<br />
<br> RFID, visual crypto & QR, Knock knock box<br />
<br><br>[[Image:Brucon2011ctfbox.png|300px]]<br />
[[Image:Brucon2011ctfrfid.png|300px]]<br />
<br>[[Image:Brucon2011ctfqr.png|300px]]<br />
[[Image:Brucon2011ctfqr.gif]]<br />
<br />
=Hack.lu 2010 CTF by Fluxfingers=<br />
== #2 at pre-con crypto challenge ==<br />
== #12 (#3 local) with xflame_doegox ==<br />
Team: Guy Brismée, Philippe Teuwen<br />
<br>[[Image:Hacklu2010ctf.png]]<br />
<br />
=Brucon 2010 CTF by The Hex Factor=<br />
== #1 at pre-con stegano challenge ==<br />
<!-- http://blog.brucon.org/2010/08/winner-and-solution-of-thehexfactor.html --><br />
== #2 (local) with xflame_doegox ==<br />
Team: Guy Brismée, Philippe Teuwen, ...<br />
<!-- http://www.thehexfactor.org/conferences/brucon/2010 --></div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=LaCie_5big_Network_2&diff=10503LaCie 5big Network 22019-10-13T14:27:48Z<p>PhilippeTeuwen: /* Custom capsule */</p>
<hr />
<div>==Lacie 5big network 2 10To==<br />
* CPU armv5tel (Feroceon 88FR131 rev 1 (v5l))<br />
* RAM 512mb<br />
* Flash ROM<br />
* NIC 2x Marvell Ethernet Gigabit Ethernet 10/100/1000 Base-TX<br />
* USB <br />
* internal HDD supports BASIC (1 drive), RAID 0 or 1 (2 drives), RAID 0 or 5 (3 drives), RAID 0, 5 or 6 (4 or 5 drives)<br />
* SATA Controller <br />
* Drive Capacity 0, 5, 10, and 15 TB capacities available<br />
* Fan Ultra-quiet cooling system with self-stabilizing oil-pressure bearing technology<br />
* Initial firmware v2.0.5, upgraded to v2.2.8<br />
===cat /proc/mdstat===<br />
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] <br />
md4 : active raid5 sda2[0] sde2[4] sdd2[3] sdc2[2] sdb2[1]<br />
7805956096 blocks super 1.0 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]<br />
<br />
md3 : active raid1 sda5[0] sde5[4] sdd5[3] sdc5[2] sdb5[1]<br />
255936 blocks [5/5] [UUUUU]<br />
<br />
md2 : active raid1 sda9[0] sde9[4] sdd9[3] sdc9[2] sdb9[1]<br />
875456 blocks [5/5] [UUUUU]<br />
<br />
md1 : active raid1 sda8[0] sde8[4] sdd8[3] sdc8[2] sdb8[1]<br />
843328 blocks [5/5] [UUUUU]<br />
<br />
md0 : active raid1 sde7[3] sdd7[4] sdc7[2] sdb7[1] sda7[0]<br />
16000 blocks [5/5] [UUUUU]<br />
<br />
==Links==<br />
===[http://lacie.nas-central.org/wiki/Main_Page Unofficial wiki]===<br />
Most of the info here comes from that wiki<br />
<br />
* [http://lacie.nas-central.org/wiki/Category:2big_Network_2 Section for Lacie 2big network 2]<br />
* [http://lacie.nas-central.org/wiki/Category:5big_Network_2 Section for Lacie 5big network 2] contains much less info but most info of the 2big are applicable to the 5big<br />
==Root==<br />
===Custom capsule===<br />
I created [http://lacie.nas-central.org/wiki/Category:2big_Network_2#Custom_capsule a custom capsule], a custom firmware which is very easy to do thanks to the provided script.<br />
<br>'''update:''' the website seems to have disappeared, see the original [https://web.archive.org/web/20190308170346/http://lacie.nas-central.org/wiki/Category:2big_Network_2#Custom_capsule page] and [https://web.archive.org/web/20150904135824/http://downloads.lacie.nas-central.org/Users/andreus/scripts/lacieos/create_capsule.sh_v7.txt script] on Archive.org.<br />
<br>Not much to say, just execute the script and answer to a few questions.<br />
<br>Then to flash it, you can use the LaCieNetworkAssistant or this method which I prefer, less dependent on network operations:<br />
* In the dashboard, create a share named "Share"<br />
* Create a folder in that share named "Update"<br />
* Drop the capsule file into the share Share/Update <br />
* Reboot the NAS<br />
Note that if you use LaCieNetworkAssistant and it fails updating the fw, they tell to disable IPConf support. To do that on linux, once the assistant is launched, right click on its icon in the task bar => preferences.<br />
<br>Example:<br />
New capsule built: '/home/phil/Downloads/lacie/capsule/lacie/5bignetwork2_2.2.8.1.capsule'<br />
After upgrading you can:<br />
- use SSH/SFTP with root privileges with your Lacie NAS with login 'root' (login: root | password: [same as admin password] | Port: 2222)<br />
- use Transmission Web Interface (url: http://YOUR.LACIE.NAS.IP:9091/transmission/web/)<br />
Don't forget to change the transmission download path.<br />
- access, after configuring port forwarding in your router, from a external network:<br />
- Lacie Dashboard: http://YOUR.NETWORK.EXTERNAL.IP/<br />
- Transmission Web Interface: http://YOUR.NETWORK.EXTERNAL.IP:9091/transmission/web/<br />
The script has been reported to work with capsule 2.2.10.1 producing a rooted capsule 2.2.10.1.1<br />
<br />
===Authentication===<br />
root password can be permanently changed by editing /usr/lib/python2.6/site-packages/unicorn/authentication/local/user.py & looking for 'root:$1...'<br />
<br>This step is automated when you create a custom capsule, see [http://downloads.lacie.nas-central.org/Users/andreus/scripts/lacieos/sshd.i.txt sshd.i.txt]<br />
<br>SSH runs on port 2222 and you can make use of /root/ssh/authorised_keys as usual<br />
<br>Note that direct edition of user.py may be reverted back by a firmware update unless you customize directly the new capsule.<br />
<br>Note that some (all?) firmwares have an extra user called "partner" with the same rights as root.<br />
<br>Default passwords for root and partner are unknown AFAIK.<br />
<br>Their respective md5crypt hashes are:<br />
$1$$1RDUuTsVHjre9juUvuICX.<br />
$1$AhmQ/2rZ$1cYuUexBvzYmM.Zk4R/6y.<br />
We can remove partner account by editing /usr/lib/python2.6/site-packages/unicorn/authentication/local/user.py (search partner) and deluser partner<br />
or changing ExecMode in /usr/lib/python2.6/site-packages/exec_mode/exec_mode.py?<br />
<br />
==Misc==<br />
===Serial port===<br />
There is probably [http://lacie.nas-central.org/wiki/Serial_port_%282Big_2%29 a serial port on board] giving access to uboot console<br />
===New disks===<br />
In case we need to play with new disks, keep in mind their UUID must be injected in th eEEPROM, see [http://lacie.nas-central.org/wiki/Installing_firmware_on_fresh_disks_(2Big_2) here]<br />
<br />
===LaCieNetworkAssistant===<br />
These are the tools provided on the cdrom. A linux version comes, even with several packagings: auto extractible, tar.gz, rpm and deb<br />
<br>But they are only for i386 and won't work as such on an amd64 system.<br />
<br>Note that I think we can live without them, everything can be done via the web interface and the shared drive.<br />
<br />
To try with the deb, we've to force a bit the things (probably it would be better to repackage it)<br />
sudo dpkg -i --force-architecture --force-depends /media/cdrom/Linux/LaCieNetworkAssistant-1.4.1-Linux.deb<br />
It provides a few binaries:<br />
/usr/bin/LaCieNetworkAssistant<br />
/usr/bin/zsudo<br />
/usr/bin/tarTine<br />
/usr/bin/LCtftpd<br />
Installing the existing ia32 libraries is not enough, some are missing:<br />
$ ldd LaCieNetworkAssistant |grep "not found"<br />
libsmbclient.so.0 => not found<br />
To solve it, you can download the i386 version and copy libsmbclient.so.0 to /usr/lib32<br />
<br>But this one has its own dependencies:<br />
$ ldd libsmbclient.so.0 |grep "not found"<br />
libtalloc.so.2 => not found<br />
libwbclient.so.0 => not found<br />
So, same thing, download & copy libsmbclient.so.0 libtalloc.so.2 libtalloc.so.2.0.7 libwbclient.so.0 to /usr/lib32<br />
<br>I got also an error linked to libtdb1 which is in the is32-libs, so again, get it & cp libtdb.so.1 libtdb.so.1.2.9 /usr/lib32<br />
<br>And now:<br />
export GTK_PATH='/usr/lib32/gtk-2.0'<br />
LaCieNetworkAssistant<br />
===Reset===<br />
See [http://manuals.lacie.com/en/manuals/d2-2big-5big-network2/reset#reset-to-factory LaCie website], it's possible to reset default fw, with or without data loss<br />
<br>Reset without data loss will move all data into /Share and will make it accessible only to the admin.<br />
<br>Admin password gets reset in the process.<br />
<br />
====Reset Without Data Loss====<br />
Caution: Following these steps will erase all Dashboard data such as users, groups, shares, and settings. It will also reset the machine name to the default and reset the network settings to DHCP.<br />
<br>Caution: After following these steps, all files will be moved to a folder called Recovery in Share and so by default will be available only to the administrator.<br />
* Make sure the product is turned OFF.<br />
* Press and hold down the front button. Without releasing the front button, turn the product on by pressing the power switch on the rear of the product.<br />
* Keep the front button pressed until the front LED becomes solid red, then release it. (The LED should become solid red about 10 seconds after you turn on the product.)<br />
* The front LED will blink blue. When it becomes static blue, press the front button once within 5 seconds to confirm reset.<br />
If any of the steps are omitted, the product will boot normally without resetting.<br />
<br />
===Transmission===<br />
I restored a vanilla transmission via the custom capsule to get the web interface.<br />
<br>'''NEVER''' launch or stop transmission daemon via the LaCie web nterface, it would restore settings.json to its defaults. Note that it might be permanently changed by mangling /etc/initng/transmission.i and /usr/lib/python2.6/site-packages/unicorn/download/torrent.py<br />
<br>There should be a way to disable the LaCie interface, see /usr/lib/unicorn/webapp2/controller/download.py /usr/lib/unicorn/updaterapp/modules/download.py /usr/lib/unicorn/webapp/modules/neko/download.py and /usr/lib/unicorn/unicorn.conf<br />
<br><br>Once the web interface is active, you can also activate the remote control interface:<br />
* Stop the daemon<br />
ngc --stop transmission<br />
* Edit /lacie/torrent_dir/transmission/settings.json<br />
<br />
"rpc-enabled": true,<br />
"rpc-password": "your_password", # note that it will be encrypted next time automatically<br />
"rpc-port": 9091,<br />
"rpc-username": "your_name",<br />
"rpc-whitelist-enabled": "false",<br />
"rpc-authentication-required": "true",<br />
<br />
Options are explained [https://trac.transmissionbt.com/wiki/ConfigurationParameters here]<br />
ngc --start transmission<br />
<br>Now you can use a remote client:<br />
apt-get install transgui<br />
And edit the other settings, amongst others the download-dir to some /shares/...<br />
===HTTP server===<br />
There is already a HTTP server running on ports 80 and 443.<br />
<br>To add one:<br />
<br />
/etc/lighttpd/lighttpd-dune.conf <br />
<pre><br />
server.modules = (<br />
"mod_expire",<br />
"mod_compress",<br />
"mod_rewrite",<br />
"mod_setenv",<br />
)<br />
<br />
server.document-root = "/shares/Share/@dune/@yamj/Jukebox"<br />
server.port = 8000<br />
server.errorlog = "/var/log/lighttpd-dune-error.log"<br />
server.pid-file = "/var/run/lighttpd-dune.pid"<br />
server.upload-dirs = ( "/lacie/tmp" )<br />
<br />
compress.allowed-encodings = ("gzip", "deflate")<br />
compress.cache-dir = "/var/cache/lighttpd-dune"<br />
compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css", "text/xml")<br />
<br />
index-file.names = (<br />
"index.html", "index.php"<br />
)<br />
<br />
<br />
$HTTP["url"] =~ "index\.html"{<br />
setenv.add-response-header = ( "Cache-Control" => "no-cache, no-store" )<br />
}<br />
<br />
$HTTP["url"] =~ "(gif|png|jpg|css)$"{<br />
expire.url = ( "" => "access 1 months" )<br />
setenv.add-response-header = ( "Cache-Control" => "public" )<br />
}<br />
<br />
mimetype.assign = (<br />
".gif" => "image/gif",<br />
".jpg" => "image/jpeg",<br />
".jpeg" => "image/jpeg",<br />
".png" => "image/png",<br />
".css" => "text/css",<br />
".html" => "text/html",<br />
".htm" => "text/html",<br />
".js" => "text/javascript",<br />
# default mime type<br />
"" => "application/octet-stream",<br />
)<br />
</pre><br />
/etc/initng/httpdune.i <br />
<pre><br />
#!/sbin/itype<br />
# This is a i file, used by initng parsed by install_service<br />
<br />
daemon httpdune {<br />
need = virtual/net;<br />
exec daemon = /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd-dune.conf;<br />
respawn;<br />
}<br />
</pre><br />
ngc --start httpdune<br />
Install service: edit /etc/initng/runlevel/default.runlevel and add httpdune<br />
<br />
==Two faulty disks on a 5-disk RAID5==<br />
===Situation===<br />
That's pretty shitty.<br />
<br>One drive failed and the box sent me an email to tell the array was degraded.<br />
<br>That's the second time it happens while the LaCie 5big is barely one year old.<br />
<br>So I wrote again to the support and they sent me a new drive upfront, good.<br />
<br>But during the addition of the new drive and the reconstruction, this implied obviously a thorough read of all the other drives and... yet another drive gave hardware read errors and the array collapsed completely.<br />
<br>I got a laconic email telling "array is inactive" and on the web interface all data seemed to have disappeared.<br />
<br />
Hopefully I had rooted my box so I could ssh and look in the logs.<br />
<br>/var/log/messages looked like this (excerpts):<br />
<pre><br />
ata1.15: exception Emask 0x1 SAct 0x0 SErr 0x0 action 0x6<br />
ata1.15: edma_err_cause=00000084 pp_flags=00000001, dev error, EDMA self-disable<br />
ata1.01: status: { DRDY ERR }<br />
ata1.01: error: { UNC }<br />
end_request: I/O error, dev sdc, sector 2107042224<br />
raid5:md4: read error not correctable (sector 2102993328 on sdc2).<br />
raid5: Disk failure on sdc2, disabling device.<br />
raid5: Operation continuing on 3 devices.<br />
I/O error in filesystem ("md4") meta-data dev md4 block 0x0 ("xfs_unmountfs_writesb") error 5 buf count 4096<br />
I/O error in filesystem ("md4") meta-data dev md4 block 0x1d171d2b8 ("xlog_iodone") error 5 buf count 4096<br />
Filesystem "md4": Log I/O Error Detected. Shutting down filesystem: md4<br />
LaCie-5big hald: unmounted /dev/md4 from '/media/internal_1' on behalf of uid 0<br />
</pre><br />
<br />
Structure of the array is the following:<br />
<pre><br />
[root@LaCie-5big /]# cat /proc/mdstat <br />
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] <br />
md3 : active raid1 sdd5[3] sda5[0] sde5[4] sdc5[2] sdb5[1]<br />
255936 blocks [5/5] [UUUUU]<br />
<br />
md2 : active raid1 sdd9[3] sda9[0] sde9[4] sdc9[2] sdb9[1]<br />
875456 blocks [5/5] [UUUUU]<br />
<br />
md1 : active raid1 sdd8[3] sda8[0] sde8[4] sdc8[2] sdb8[1]<br />
843328 blocks [5/5] [UUUUU]<br />
<br />
md0 : active raid1 sdd7[4] sde7[3] sdc7[2] sdb7[1] sda7[0]<br />
16000 blocks [5/5] [UUUUU]<br />
</pre><br />
And /dev/md4 is missing, normally constructed from /dev/sd[abcde]2<br />
<br>A page I found with some useful tips: https://raid.wiki.kernel.org/index.php/RAID_Recovery<br />
<br>Getting some more info:<br />
<pre><br />
mdadm --examine /dev/sda2 >> raid_sdx2.status<br />
mdadm --examine /dev/sdb2 >> raid_sdx2.status<br />
mdadm --examine /dev/sdc2 >> raid_sdx2.status<br />
mdadm --examine /dev/sdd2 >> raid_sdx2.status<br />
mdadm --examine /dev/sde2 >> raid_sdx2.status<br />
<br />
$ cat raid_sdx2.status |egrep 'Event|/dev/sd'<br />
/dev/sda2:<br />
Events : 1306184<br />
/dev/sdb2:<br />
Events : 1306184<br />
/dev/sdc2:<br />
Events : 1306177<br />
/dev/sdd2:<br />
Events : 1306184<br />
/dev/sde2:<br />
Events : 1306184<br />
<br />
[root@LaCie-5big ~]# cat raid_sdx2.status |grep Role<br />
Device Role : Active device 0<br />
Device Role : Active device 1<br />
Device Role : Active device 2<br />
Device Role : spare<br />
Device Role : Active device 4<br />
<br />
[root@LaCie-5big ~]# cat raid_sdx2.status |grep State<br />
State : clean<br />
Array State : AA..A ('A' == active, '.' == missing)<br />
State : clean<br />
Array State : AA..A ('A' == active, '.' == missing)<br />
State : clean<br />
Array State : AAAAA ('A' == active, '.' == missing)<br />
State : clean<br />
Array State : AA..A ('A' == active, '.' == missing)<br />
State : clean<br />
Array State : AA..A ('A' == active, '.' == missing)<br />
</pre><br />
So /dev/sdc2 had dropped and is out-of-sync.<br />
===Getting data back===<br />
Before messing up with it, better to shut down the Transmission server:<br />
ngc --stop transmission<br />
<br />
As a first attempt I tried to force reassembling the array:<br />
<pre><br />
mdadm --assemble --force /dev/md4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2<br />
mdadm: forcing event count in /dev/sdc2(2) from 1306177 upto 1306184<br />
mdadm: clearing FAULTY flag for device 2 in /dev/md4 for /dev/sdc2<br />
mdadm: /dev/md4 has been started with 4 drives (out of 5) and 1 spare.<br />
</pre><br />
As soon as the array appears again, the box mounts the corresponding shares which become accessible again.<br />
<br>It also starts trying to resync the new drive (/dev/sdd2) and... it crashes again after a few hours when it hits the hw errors on /dev/sdc2<br />
<pre><br />
[root@LaCie-5big ~]# cat /proc/mdstat <br />
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] <br />
md4 : active raid5 sda2[0] sdd2[6] sde2[5] sdc2[2] sdb2[1]<br />
7805956096 blocks super 1.0 level 5, 512k chunk, algorithm 2 [5/4] [UUU_U]<br />
[>....................] recovery = 0.0% (306560/1951489024) finish=30321.4min speed=1072K/sec<br />
</pre><br />
So better to start the array without the new drive, so at least we've a chance to save as much data as possible:<br />
mdadm --stop /dev/md4<br />
mdadm --assemble --force /dev/md4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sde2<br />
If the array refused to be stopped, that's because it's in use:<br />
<br>You need to unmount any share mounted over the network, including the one by the media box<br />
<pre><br />
tango3[~]# umount /tmp/mnt/smb/0<br />
umount /dev/md4<br />
umount /dev/md4<br />
umount /dev/md4<br />
umount /dev/md4<br />
umount /dev/md4<br />
umount /dev/md4<br />
mdadm --stop /dev/md4<br />
mdadm --assemble --force /dev/md4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sde2<br />
</pre><br />
===Fixing with ddrescue===<br />
At this point I could save a number of data but once I try to access files mapped on the faulty area, the array collapsed again.<br />
<br>So I tried a different approach:<br />
<br>Stop the array.<br />
<pre><br />
tango3[~]# umount /tmp/mnt/smb/0<br />
umount /dev/md4<br />
umount /dev/md4<br />
umount /dev/md4<br />
umount /dev/md4<br />
umount /dev/md4<br />
umount /dev/md4<br />
mdadm --stop /dev/md4<br />
</pre><br />
Run ddrescue to copy /dev/sdc2 (the faulty) to /dev/sdd2 (the new)<br />
<br>But ddrescue is not available on the box, neither screen which would be useful...<br />
<br>So I took them from Debian squeeze (oldstable).<br />
<br>Newer versions require newer libc & libstdc++6.<br />
* [http://packages.debian.org/squeeze/armel/gddrescue/download gddrescue]<br />
* [http://packages.debian.org/squeeze/armel/screen/download screen]<br />
* [http://packages.debian.org/squeeze/armel/libncursesw5/download libncursesw5]<br />
Extract the bins and drop them in the box. I copied also screenrc to /etc/, not sure if it's needed or not.<br />
<br>If the library is left in the current directory, calling screen has to be done as<br />
LD_LIBRARY_PATH=. ./screen<br />
And now we can call ddrescue:<br />
./ddrescue -d /dev/sdc2 /dev/sdd2 /root/ddrescue.log<br />
With the logfile it can be interrupted and restarted from where it was left.<br />
<pre><br />
Current status<br />
rescued: 1998 GB, errsize: 13824 B, current rate: 0 B/s<br />
ipos: 1082 GB, errors: 8, average rate: 39354 kB/s<br />
opos: 1082 GB, time from last successful read: 3.5 m<br />
Finished<br />
</pre><br />
Not that bad.<br />
# mdadm --assemble /dev/md4 /dev/sda2 /dev/sdb2 /dev/sdd2 /dev/sde2 <br />
mdadm: /dev/md4 has been started with 4 drives (out of 5).<br />
And now disk sdc can be removed and replaced.<br />
<br>Hot remove should be ok but let's do it cleanly:<br />
<pre><br />
# cat /proc/mdstat <br />
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] <br />
md4 : active raid5 sda2[0] sde2[5] sdd2[2] sdb2[1]<br />
7805956096 blocks super 1.0 level 5, 512k chunk, algorithm 2 [5/4] [UUU_U]<br />
md3 : active raid1 sda5[0] sde5[4] sdd5[3] sdc5[2] sdb5[1]<br />
255936 blocks [5/5] [UUUUU]<br />
md2 : active raid1 sda9[0] sde9[4] sdd9[3] sdc9[2] sdb9[1]<br />
875456 blocks [5/5] [UUUUU]<br />
md1 : active raid1 sda8[0] sde8[4] sdd8[3] sdc8[2] sdb8[1]<br />
843328 blocks [5/5] [UUUUU]<br />
md0 : active raid1 sde7[3] sdd7[4] sdc7[2] sdb7[1] sda7[0]<br />
16000 blocks [5/5] [UUUUU]<br />
# mdadm /dev/md0 --fail /dev/sdc7<br />
mdadm: set /dev/sdc7 faulty in /dev/md0<br />
# mdadm /dev/md0 --remove /dev/sdc7<br />
mdadm: hot removed /dev/sdc7 from /dev/md0<br />
# mdadm /dev/md1 --fail /dev/sdc8 <br />
mdadm: set /dev/sdc8 faulty in /dev/md1<br />
# mdadm /dev/md1 --remove /dev/sdc8<br />
mdadm: hot removed /dev/sdc8 from /dev/md1<br />
# mdadm /dev/md2 --fail /dev/sdc9 <br />
mdadm: set /dev/sdc9 faulty in /dev/md2<br />
# mdadm /dev/md2 --remove /dev/sdc9<br />
mdadm: hot removed /dev/sdc9 from /dev/md2<br />
# mdadm /dev/md3 --fail /dev/sdc5 <br />
mdadm: set /dev/sdc5 faulty in /dev/md3<br />
# mdadm /dev/md3 --remove /dev/sdc5<br />
mdadm: hot removed /dev/sdc5 from /dev/md3<br />
# cat /proc/mdstat <br />
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] <br />
md4 : active raid5 sda2[0] sde2[5] sdd2[2] sdb2[1]<br />
7805956096 blocks super 1.0 level 5, 512k chunk, algorithm 2 [5/4] [UUU_U]<br />
md3 : active raid1 sda5[0] sde5[4] sdd5[3] sdb5[1]<br />
255936 blocks [5/4] [UU_UU]<br />
md2 : active raid1 sda9[0] sde9[4] sdd9[3] sdb9[1]<br />
875456 blocks [5/4] [UU_UU]<br />
md1 : active raid1 sda8[0] sde8[4] sdd8[3] sdb8[1]<br />
843328 blocks [5/4] [UU_UU]<br />
md0 : active raid1 sde7[3] sdd7[4] sdb7[1] sda7[0]<br />
16000 blocks [5/4] [UU_UU]<br />
</pre><br />
Then physically remove sdc.<br />
<br />
Checking the remaining drives thoroughly:<br />
# smartctl -t long /dev/sda<br />
# smartctl -t long /dev/sdb<br />
# smartctl -t long /dev/sdd<br />
# smartctl -t long /dev/sde<br />
Five hours later...<br />
# smartctl -l xselftest /dev/sda<br />
# smartctl -l xselftest /dev/sdb<br />
# smartctl -l xselftest /dev/sdd<br />
# smartctl -l xselftest /dev/sde<br />
They all say sth like<br />
smartctl 5.40 2011-04-07 r5807 [arm-unknown-linux-gnueabi] (local build)<br />
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net<br />
=== START OF READ SMART DATA SECTION ===<br />
General Purpose Logging (GPL) feature set supported<br />
SMART Extended Self-test Log Version: 1 (1 sectors)<br />
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error<br />
# 1 Extended offline Completed without error 00% 20001 -</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Plex&diff=10502Plex2019-09-15T23:32:06Z<p>PhilippeTeuwen: /* Tautulli */</p>
<hr />
<div><br />
=Links=<br />
<br />
* Installation<br />
** http://pazpop.fr/installer-un-serveur-plex-media-server-sous-gnulinux-debian/ (fr)<br />
** https://support.plex.tv/hc/en-us/articles/200288586-Installation<br />
** https://support.plex.tv/hc/en-us/articles/200264746-Quick-Start-Step-by-Step<br />
** https://forums.plex.tv/categories/release-announcements<br />
<br />
* Interface<br />
** http://mynas:32400/web<br />
<br />
=Media preparation=<br />
<br />
* https://support.plex.tv/hc/en-us/categories/200028098<br />
<br />
<br />
* [https://support.plex.tv/hc/en-us/articles/200220677-Local-Media-Assets-Movies Local Media Assets - Movies]<br />
* [https://support.plex.tv/hc/en-us/articles/200264966-Naming-Stacked-or-Multi-Part-Movies Naming Stacked or Multi-Part Movies]<br />
* [https://support.plex.tv/hc/en-us/articles/200220717-Local-Media-Assets-TV-Shows Local Media Assets - TV Shows]<br />
* [https://support.plex.tv/hc/en-us/articles/200265006-Naming-Stacked-TV-Show-Episodes Naming Stacked TV Show Episodes]<br />
<br />
Quick ref:<br />
<br />
# Movie:<br />
MovieName (release year).ext<br />
/Movies/MovieName (release year)/MovieName (release year).ext<br />
<br />
# Movies in Multiple Parts (max 8):<br />
/Movies/MovieName (release year)/MovieName (release year) - [cdX|discX|diskX|dvdX|partX|ptX].ext<br />
<br />
# artwork: (jpg, jpeg, png)<br />
MovieName (Release Date).ext<br />
Movie/MovieName (Release Date)/[cover|default|folder|movie|poster].ext<br />
<br />
# fanart:<br />
MovieName (Release Date)-fanart.ext<br />
Movies/MovieName (Release Date)/[art|backdrop|background|fanart].ext<br />
<br />
# subtitles:<br />
MovieName (Release Date).[Language_Code].ext<br />
Movies/MovieName (Release Date).[Language_Code].ext<br />
Movies/MovieName (Release Date).[Language_Code].forced.ext<br />
<br />
# extras:<br />
Movie/MovieName (Release Date)/Descriptive_Name-[behindthescenes|deleted|featurette|interview|scene|short|trailer].ext<br />
Movie/MovieName (Release Date)/[Behind The Scenes|Deleted Scenes|Featurettes|Interviews|Scenes|Shorts|Trailers]/Descriptive_name.ext<br />
<br />
There is a possibility to add a .plexignore file to any folder to exclude files or folders, à la .gitignore.<br />
<br />
To rename stuff, http://www.filebot.net/ seems handy (while I still prefer my little scripts...).<br />
<br />
I had a bunch of fitness DVDs. Firstly I separated them in a "Movies/Personal Media"-typed library and a "TV Shows"-typed library depending on the number of parts and the availability of separate covers but the rendering of "local movies" catalog on the TV wasn't optimal as it was showing extracted thumbnails instead of the DVD covers. So I finally ended up moving everything in a single "TV"-typed library.<br />
<br />
E.g.:<br />
<br />
<pre><br />
Churchill Workouts/<br />
Season 1/<br />
Churchill Workouts S01E01.mp4<br />
poster.jpg<br />
</pre><br />
<br />
To add custom titles on "episodes", I use the XMBC plugin, see below.<br />
<br />
To use it, select it as agent for the library and add an XML file to each episode:<br />
<pre><br />
Churchill Workouts/<br />
Season 01/<br />
Churchill Workouts S01E01 No Sweat.mp4<br />
Churchill Workouts S01E01 No Sweat.nfo :<br />
<episodedetails><br />
<title>No Sweat</title><br />
<season>01</season><br />
<episode>01</episode><br />
</episodedetails><br />
Churchill Workouts S01E01 Cigars Only.mp4<br />
Churchill Workouts S01E01 Cigars Only.nfo :<br />
<episodedetails><br />
<title>Cigars Only</title><br />
<season>01</season><br />
<episode>02</episode><br />
</episodedetails><br />
poster.jpg<br />
</pre><br />
<br />
Little helper to run against .mp4 to create .nfo:<br />
<source lang=bash><br />
serie="Churchill Workouts"<br />
for i in *.mp4; do <br />
(echo -e -n "<episodedetails>\n <title>";<br />
echo -n "${i}"|sed "s/$serie S..E.. \(.*\)....$/\1/";<br />
echo -e -n "</title>\n <season>01</season>\n <episode>";<br />
echo -n "${i}"|sed "s/$serie S..E\(..\).*/\1/";<br />
echo -e "</episode>\n</episodedetails>") \<br />
>"${i}.nfo";<br />
mv "${i}.nfo" "${i%.???}.nfo";<br />
done<br />
</source><br />
<br />
=Plugins=<br />
<br />
Install [https://forums.plex.tv/discussion/126254/rel-webtools/p1#top WebTools], it helps installing other plugins and contains a few useful plugins itself, e.g. finding mismatches between DB and filesystem (a possible indication of a wrong access control e.g.)<br />
<br />
Manual installation:<br />
<br />
* Get it at https://github.com/dagalufh/WebTools.bundle/releases/latest<br />
* Unzip in ~plex/Library/Application Support/Plex Media Server/Plug-ins<br />
<br />
Interface:<br />
* http://mynas:33400/<br />
<br />
TODO Unsupported AppStore V2: https://forums.plex.tv/discussion/202282<br />
<br />
<br />
For French movies, I installed an Allocine agent (https://github.com/FredjeB/Allocine-Metadata-agent) but in the long run, the default Plex/IMDB/TheTVDB are doing well their job.<br />
<br />
Manual installation (was before WebTools):<br />
<br />
<source lang=bash><br />
wget -O /tmp/allocine.zip https://github.com/FredjeB/Allocine-Metadata-agent/archive/master.zip<br />
mkdir -p /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Allocine.bundle/Contents/<br />
cd /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Allocine.bundle/Contents/<br />
unzip /tmp/allocine.zip<br />
mv Allocine-Metadata-agent-master/* .<br />
rmdir Allocine-Metadata-agent-master<br />
chown -R plex.plex ..<br />
</source><br />
<br />
=To transcode or not to transcode=<br />
<br />
I had difficulties playing back some contents on my TV. The TV was definitively capable of playing those movies but Plex insisted on transcoding them, which my Readynas CPUs didn't appreciate.<br />
<br />
It's a LG 55E6V and apparently its Plex client is matched by the server to the "HTML TV App" profile. So the trick is to modify that profile.<br />
Based on several forum threads such as https://forums.plex.tv/discussion/221577/plex-for-lg-tv-webos-3-0/p2 here is my current <code>/usr/lib/plexmediaserver/Resources/Profiles/HTML TV App.xml</code><br />
<br />
<source lang=xml><br />
<?xml version="1.0" encoding="utf-8"?><br />
<Client name="HTML TV App"><br />
<!--<br />
Author: Plex Inc.<br />
History:<br />
0.9.12.0: First release. Included HLS and DASH MusicProfile with videoCodec.<br />
0.9.12.2: HTTP protocol support added for VideoProfile and MusicProfile with videoCodec.<br />
--><br />
<TranscodeTargets><br />
<VideoProfile protocol="hls" container="mpegts" videoCodec="h264,mpeg2video" audioCodec="aac,ac3" context="streaming"><br />
<Setting name="BreakNonKeyframes" value="true" /><br />
</VideoProfile><br />
<VideoProfile protocol="hls" container="mkv" videoCodec="h265,h264,mpeg2video" audioCodec="aac,ac3,mp3,pcm" context="streaming" /><br />
<VideoProfile protocol="dash" container="mp4" videoCodec="h264" audioCodec="aac" context="streaming" /><br />
<VideoProfile protocol="http" container="mkv" codec="h264,mpeg2video" audioCodec="truehd,aac,ac3,mp3,pcm" context="streaming" /><br />
<br />
<MusicProfile protocol="hls" container="mpegts" videoCodec="h264" audioCodec="aac" context="streaming" /><br />
<MusicProfile protocol="dash" container="mp4" videoCodec="h264" audioCodec="aac" context="streaming" /><br />
<MusicProfile protocol="http" container="mkv" videoCodec="h264" audioCodec="aac" context="streaming" /><br />
<br />
<PhotoProfile container="jpeg" /><br />
</TranscodeTargets><br />
<DirectPlayProfiles><br />
<VideoProfile container="mpeg" codec="mpeg2video,mpeg4" audioCodec="ac3,mp3" /><br />
<VideoProfile container="mkv" codec="h265,h264,mpeg2video" audioCodec="truehd,aac,ac3,mp3,pcm" /><br />
<VideoProfile container="mpegts" codec="h264" audioCodec="ac3,aac,mp3" /><br />
<VideoProfile container="mp4" codec="h265,h264" audioCodec="truehd,aac,ac3,mp3,pcm" /><br />
<VideoProfile container="mov" codec="h264" audioCodec="aac,pcm" /><br />
<VideoProfile container="avi" codec="mpeg4" audioCodec="pcm" /><br />
<VideoProfile container="flv" codec="h264" audioCodec="aac" /><br />
<MusicProfile container="mp3" codec="mp3" /><br />
<MusicProfile container="mp4" codec="aac" /><br />
<PhotoProfile container="jpeg" /><br />
</DirectPlayProfiles><br />
<CodecProfiles><br />
<VideoCodec name="*"><br />
<Limitations><br />
<UpperBound name="video.width" value="3840" isRequired="true" /><br />
<UpperBound name="video.height" value="2160" isRequired="true" /><br />
<UpperBound name="video.bitDepth" value="10" /><br />
</Limitations><br />
</VideoCodec><br />
</CodecProfiles><br />
</Client><br />
</source><br />
<br />
For the videos not natively supported by the client, Plex will transcode them on-the-fly.<br />
It's possible to "optimize" them to transcode them offline ahead but still it's quite slow on my NAS.<br />
<br />
In case of transcoding troubles, compare the Plex behavior with playing the same content through XPlay, ChromecastUltra (from Plex web client on Chrome), DLNA (via Plex media server) and DLNA (via native NAS support) before deciding to transcode the movie yourself.<br />
<br />
As last resort solution, I'm using Handbrake to transcode those ones by myself. The default MPEG-4 Regular/Normal profile is doing well (H264, framerate same as source). I unselect ipod-friendly m4v in favor of mp4.<br />
<br />
Plex can't handle .iso or VIDEO_TB file structure but Handbrake can handle them fine (still, always check the result!).<br />
<br />
<br />
=[https://xplay.itkey.ru/ XPlay]=<br />
<br />
Alternative Plex client for LG WebOS, much closer to the web interface so more to the point IMHO (lists of covers, no dashboard).<br />
<br>It tries to direct play as much as possible (see settings) and tell when it would be transcoded (usually just changing audio and/or subtitles can avoid transcoding).<br />
<br>Costs 6.95 GBP to unlock after the first four days of demo.<br />
<br />
* [https://forums.plex.tv/discussion/168315/xplay-webos Forum]<br />
=Local=<br />
<br />
It may be useful to install another server on e.g. a laptop, but not to be active permanently: (to be done at each update)<br />
<br />
# service plexmediaserver stop<br />
# systemctl disable plexmediaserver.service<br />
...<br />
# service plexmediaserver start<br />
<br />
=Debian=<br />
<br />
/etc/apt/sources.list.d/plexmediaserver.list : fix it to<br />
<br />
https://downloads.plex.tv/repo/deb ./public main<br />
<br />
Then<br />
<br />
wget -q https://downloads.plex.tv/plex-keys/PlexSign.key -O - | apt-key add -<br />
apt-get install apt-transport-https<br />
apt-get update<br />
apt-get install plexmediaserver<br />
<br />
=Tautulli=<br />
<br />
cf https://tautulli.com<br />
<br />
<pre><br />
apt-get install git-core python-setuptools tzdata<br />
cd /opt<br />
git clone https://github.com/Tautulli/Tautulli.git<br />
addgroup tautulli && adduser --system --no-create-home tautulli --ingroup tautulli<br />
cd Tautulli<br />
chown tautulli:tautulli -R /opt/Tautulli<br />
</pre><br />
<br />
Not working?<br />
<pre><br />
cp /opt/Tautulli/init-scripts/init.systemd /lib/systemd/system/tautulli.service<br />
systemctl daemon-reload<br />
systemctl enable tautulli.service<br />
systemctl start tautulli.service<br />
</pre><br />
Manually launching:<br />
<pre><br />
su - tautulli -s /bin/sh -c "/opt/Tautulli/Tautulli.py --config /opt/Tautulli/config.ini --datadir /opt/Tautulli --quiet --daemon --nolaunch"<br />
</pre><br />
<br />
=> http://readynas:8181</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Plex&diff=10501Plex2019-09-15T23:31:33Z<p>PhilippeTeuwen: /* Debian */</p>
<hr />
<div><br />
=Links=<br />
<br />
* Installation<br />
** http://pazpop.fr/installer-un-serveur-plex-media-server-sous-gnulinux-debian/ (fr)<br />
** https://support.plex.tv/hc/en-us/articles/200288586-Installation<br />
** https://support.plex.tv/hc/en-us/articles/200264746-Quick-Start-Step-by-Step<br />
** https://forums.plex.tv/categories/release-announcements<br />
<br />
* Interface<br />
** http://mynas:32400/web<br />
<br />
=Media preparation=<br />
<br />
* https://support.plex.tv/hc/en-us/categories/200028098<br />
<br />
<br />
* [https://support.plex.tv/hc/en-us/articles/200220677-Local-Media-Assets-Movies Local Media Assets - Movies]<br />
* [https://support.plex.tv/hc/en-us/articles/200264966-Naming-Stacked-or-Multi-Part-Movies Naming Stacked or Multi-Part Movies]<br />
* [https://support.plex.tv/hc/en-us/articles/200220717-Local-Media-Assets-TV-Shows Local Media Assets - TV Shows]<br />
* [https://support.plex.tv/hc/en-us/articles/200265006-Naming-Stacked-TV-Show-Episodes Naming Stacked TV Show Episodes]<br />
<br />
Quick ref:<br />
<br />
# Movie:<br />
MovieName (release year).ext<br />
/Movies/MovieName (release year)/MovieName (release year).ext<br />
<br />
# Movies in Multiple Parts (max 8):<br />
/Movies/MovieName (release year)/MovieName (release year) - [cdX|discX|diskX|dvdX|partX|ptX].ext<br />
<br />
# artwork: (jpg, jpeg, png)<br />
MovieName (Release Date).ext<br />
Movie/MovieName (Release Date)/[cover|default|folder|movie|poster].ext<br />
<br />
# fanart:<br />
MovieName (Release Date)-fanart.ext<br />
Movies/MovieName (Release Date)/[art|backdrop|background|fanart].ext<br />
<br />
# subtitles:<br />
MovieName (Release Date).[Language_Code].ext<br />
Movies/MovieName (Release Date).[Language_Code].ext<br />
Movies/MovieName (Release Date).[Language_Code].forced.ext<br />
<br />
# extras:<br />
Movie/MovieName (Release Date)/Descriptive_Name-[behindthescenes|deleted|featurette|interview|scene|short|trailer].ext<br />
Movie/MovieName (Release Date)/[Behind The Scenes|Deleted Scenes|Featurettes|Interviews|Scenes|Shorts|Trailers]/Descriptive_name.ext<br />
<br />
There is a possibility to add a .plexignore file to any folder to exclude files or folders, à la .gitignore.<br />
<br />
To rename stuff, http://www.filebot.net/ seems handy (while I still prefer my little scripts...).<br />
<br />
I had a bunch of fitness DVDs. Firstly I separated them in a "Movies/Personal Media"-typed library and a "TV Shows"-typed library depending on the number of parts and the availability of separate covers but the rendering of "local movies" catalog on the TV wasn't optimal as it was showing extracted thumbnails instead of the DVD covers. So I finally ended up moving everything in a single "TV"-typed library.<br />
<br />
E.g.:<br />
<br />
<pre><br />
Churchill Workouts/<br />
Season 1/<br />
Churchill Workouts S01E01.mp4<br />
poster.jpg<br />
</pre><br />
<br />
To add custom titles on "episodes", I use the XMBC plugin, see below.<br />
<br />
To use it, select it as agent for the library and add an XML file to each episode:<br />
<pre><br />
Churchill Workouts/<br />
Season 01/<br />
Churchill Workouts S01E01 No Sweat.mp4<br />
Churchill Workouts S01E01 No Sweat.nfo :<br />
<episodedetails><br />
<title>No Sweat</title><br />
<season>01</season><br />
<episode>01</episode><br />
</episodedetails><br />
Churchill Workouts S01E01 Cigars Only.mp4<br />
Churchill Workouts S01E01 Cigars Only.nfo :<br />
<episodedetails><br />
<title>Cigars Only</title><br />
<season>01</season><br />
<episode>02</episode><br />
</episodedetails><br />
poster.jpg<br />
</pre><br />
<br />
Little helper to run against .mp4 to create .nfo:<br />
<source lang=bash><br />
serie="Churchill Workouts"<br />
for i in *.mp4; do <br />
(echo -e -n "<episodedetails>\n <title>";<br />
echo -n "${i}"|sed "s/$serie S..E.. \(.*\)....$/\1/";<br />
echo -e -n "</title>\n <season>01</season>\n <episode>";<br />
echo -n "${i}"|sed "s/$serie S..E\(..\).*/\1/";<br />
echo -e "</episode>\n</episodedetails>") \<br />
>"${i}.nfo";<br />
mv "${i}.nfo" "${i%.???}.nfo";<br />
done<br />
</source><br />
<br />
=Plugins=<br />
<br />
Install [https://forums.plex.tv/discussion/126254/rel-webtools/p1#top WebTools], it helps installing other plugins and contains a few useful plugins itself, e.g. finding mismatches between DB and filesystem (a possible indication of a wrong access control e.g.)<br />
<br />
Manual installation:<br />
<br />
* Get it at https://github.com/dagalufh/WebTools.bundle/releases/latest<br />
* Unzip in ~plex/Library/Application Support/Plex Media Server/Plug-ins<br />
<br />
Interface:<br />
* http://mynas:33400/<br />
<br />
TODO Unsupported AppStore V2: https://forums.plex.tv/discussion/202282<br />
<br />
<br />
For French movies, I installed an Allocine agent (https://github.com/FredjeB/Allocine-Metadata-agent) but in the long run, the default Plex/IMDB/TheTVDB are doing well their job.<br />
<br />
Manual installation (was before WebTools):<br />
<br />
<source lang=bash><br />
wget -O /tmp/allocine.zip https://github.com/FredjeB/Allocine-Metadata-agent/archive/master.zip<br />
mkdir -p /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Allocine.bundle/Contents/<br />
cd /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/Allocine.bundle/Contents/<br />
unzip /tmp/allocine.zip<br />
mv Allocine-Metadata-agent-master/* .<br />
rmdir Allocine-Metadata-agent-master<br />
chown -R plex.plex ..<br />
</source><br />
<br />
=To transcode or not to transcode=<br />
<br />
I had difficulties playing back some contents on my TV. The TV was definitively capable of playing those movies but Plex insisted on transcoding them, which my Readynas CPUs didn't appreciate.<br />
<br />
It's a LG 55E6V and apparently its Plex client is matched by the server to the "HTML TV App" profile. So the trick is to modify that profile.<br />
Based on several forum threads such as https://forums.plex.tv/discussion/221577/plex-for-lg-tv-webos-3-0/p2 here is my current <code>/usr/lib/plexmediaserver/Resources/Profiles/HTML TV App.xml</code><br />
<br />
<source lang=xml><br />
<?xml version="1.0" encoding="utf-8"?><br />
<Client name="HTML TV App"><br />
<!--<br />
Author: Plex Inc.<br />
History:<br />
0.9.12.0: First release. Included HLS and DASH MusicProfile with videoCodec.<br />
0.9.12.2: HTTP protocol support added for VideoProfile and MusicProfile with videoCodec.<br />
--><br />
<TranscodeTargets><br />
<VideoProfile protocol="hls" container="mpegts" videoCodec="h264,mpeg2video" audioCodec="aac,ac3" context="streaming"><br />
<Setting name="BreakNonKeyframes" value="true" /><br />
</VideoProfile><br />
<VideoProfile protocol="hls" container="mkv" videoCodec="h265,h264,mpeg2video" audioCodec="aac,ac3,mp3,pcm" context="streaming" /><br />
<VideoProfile protocol="dash" container="mp4" videoCodec="h264" audioCodec="aac" context="streaming" /><br />
<VideoProfile protocol="http" container="mkv" codec="h264,mpeg2video" audioCodec="truehd,aac,ac3,mp3,pcm" context="streaming" /><br />
<br />
<MusicProfile protocol="hls" container="mpegts" videoCodec="h264" audioCodec="aac" context="streaming" /><br />
<MusicProfile protocol="dash" container="mp4" videoCodec="h264" audioCodec="aac" context="streaming" /><br />
<MusicProfile protocol="http" container="mkv" videoCodec="h264" audioCodec="aac" context="streaming" /><br />
<br />
<PhotoProfile container="jpeg" /><br />
</TranscodeTargets><br />
<DirectPlayProfiles><br />
<VideoProfile container="mpeg" codec="mpeg2video,mpeg4" audioCodec="ac3,mp3" /><br />
<VideoProfile container="mkv" codec="h265,h264,mpeg2video" audioCodec="truehd,aac,ac3,mp3,pcm" /><br />
<VideoProfile container="mpegts" codec="h264" audioCodec="ac3,aac,mp3" /><br />
<VideoProfile container="mp4" codec="h265,h264" audioCodec="truehd,aac,ac3,mp3,pcm" /><br />
<VideoProfile container="mov" codec="h264" audioCodec="aac,pcm" /><br />
<VideoProfile container="avi" codec="mpeg4" audioCodec="pcm" /><br />
<VideoProfile container="flv" codec="h264" audioCodec="aac" /><br />
<MusicProfile container="mp3" codec="mp3" /><br />
<MusicProfile container="mp4" codec="aac" /><br />
<PhotoProfile container="jpeg" /><br />
</DirectPlayProfiles><br />
<CodecProfiles><br />
<VideoCodec name="*"><br />
<Limitations><br />
<UpperBound name="video.width" value="3840" isRequired="true" /><br />
<UpperBound name="video.height" value="2160" isRequired="true" /><br />
<UpperBound name="video.bitDepth" value="10" /><br />
</Limitations><br />
</VideoCodec><br />
</CodecProfiles><br />
</Client><br />
</source><br />
<br />
For the videos not natively supported by the client, Plex will transcode them on-the-fly.<br />
It's possible to "optimize" them to transcode them offline ahead but still it's quite slow on my NAS.<br />
<br />
In case of transcoding troubles, compare the Plex behavior with playing the same content through XPlay, ChromecastUltra (from Plex web client on Chrome), DLNA (via Plex media server) and DLNA (via native NAS support) before deciding to transcode the movie yourself.<br />
<br />
As last resort solution, I'm using Handbrake to transcode those ones by myself. The default MPEG-4 Regular/Normal profile is doing well (H264, framerate same as source). I unselect ipod-friendly m4v in favor of mp4.<br />
<br />
Plex can't handle .iso or VIDEO_TB file structure but Handbrake can handle them fine (still, always check the result!).<br />
<br />
<br />
=[https://xplay.itkey.ru/ XPlay]=<br />
<br />
Alternative Plex client for LG WebOS, much closer to the web interface so more to the point IMHO (lists of covers, no dashboard).<br />
<br>It tries to direct play as much as possible (see settings) and tell when it would be transcoded (usually just changing audio and/or subtitles can avoid transcoding).<br />
<br>Costs 6.95 GBP to unlock after the first four days of demo.<br />
<br />
* [https://forums.plex.tv/discussion/168315/xplay-webos Forum]<br />
=Local=<br />
<br />
It may be useful to install another server on e.g. a laptop, but not to be active permanently: (to be done at each update)<br />
<br />
# service plexmediaserver stop<br />
# systemctl disable plexmediaserver.service<br />
...<br />
# service plexmediaserver start<br />
<br />
=Debian=<br />
<br />
/etc/apt/sources.list.d/plexmediaserver.list : fix it to<br />
<br />
https://downloads.plex.tv/repo/deb ./public main<br />
<br />
Then<br />
<br />
wget -q https://downloads.plex.tv/plex-keys/PlexSign.key -O - | apt-key add -<br />
apt-get install apt-transport-https<br />
apt-get update<br />
apt-get install plexmediaserver<br />
<br />
=Tautulli=<br />
<br />
cf https://tautulli.com<br />
<br />
```<br />
apt-get install git-core python-setuptools tzdata<br />
cd /opt<br />
git clone https://github.com/Tautulli/Tautulli.git<br />
addgroup tautulli && adduser --system --no-create-home tautulli --ingroup tautulli<br />
cd Tautulli<br />
chown tautulli:tautulli -R /opt/Tautulli<br />
```<br />
<br />
Not working?<br />
```<br />
cp /opt/Tautulli/init-scripts/init.systemd /lib/systemd/system/tautulli.service<br />
systemctl daemon-reload<br />
systemctl enable tautulli.service<br />
systemctl start tautulli.service<br />
```<br />
Manually launching:<br />
```<br />
su - tautulli -s /bin/sh -c "/opt/Tautulli/Tautulli.py --config /opt/Tautulli/config.ini --datadir /opt/Tautulli --quiet --daemon --nolaunch"<br />
```<br />
<br />
=> http://readynas:8181</div>PhilippeTeuwenhttps://wiki.yobi.be/index.php?title=Huion_tablet&diff=10500Huion tablet2019-09-14T11:08:44Z<p>PhilippeTeuwen: /* Wacom tools */</p>
<hr />
<div>== Intro ==<br />
<br />
Got it for 20.86€ on Aliexpress<br />
<br />
* HUION H430P<br />
* Active area 121.9 x 76.2mm<br />
* Resolution 5080 LPI<br />
* Report Rate 233PPS<br />
* Pen Pressure 4096Levels<br />
* Reading Height 10mm<br />
* Express Keys 4<br />
<br />
== Links ==<br />
<br />
* https://www.huiontablet.com/huion-h430p-4096.html<br />
* https://github.com/DIGImend/digimend-kernel-drivers<br />
* https://www.mankier.com/1/xsetwacom<br />
* https://www.davidrevoy.com/article331/setup-huion-giano-wh1409-tablet-on-linux-mint-18-1-ubuntu-16-04<br />
<br />
<br />
== Driver installation ==<br />
<br />
Get digimend-dkms_8_all.deb from https://github.com/DIGImend/digimend-kernel-drivers/releases<br />
<br />
<source lang=bash><br />
$ sudo apt-get install dkms<br />
$ sudo dpkg -i digimend-dkms_8_all.deb<br />
</source><br />
<br />
Hum, well, installation on my Debian Sid was a breeze but when I wanted to install the same tablet on another laptop with a Debian Stable, things weren't that easy.<br />
<br />
<source lang=bash><br />
$ sudo dpkg -i digimend-dkms_8_all.deb<br />
...<br />
hid-uclogic.ko:<br />
Running module version sanity check.<br />
Error! Module version 8 for hid-uclogic.ko<br />
is not newer than what is already found in kernel 4.9.0-8-amd64 (8).<br />
You may override by specifying --force.<br />
...<br />
</source><br />
<br />
And only the pen was recognized, not the pad.<br />
<br />
<source lang=bash><br />
$ xinput --list<br />
⎡ Virtual core pointer id=2 [master pointer (3)]<br />
⎜ ↳ HUION Huion Tablet Pen stylus id=13 [slave pointer (2)]<br />
⎜ ↳ ...<br />
⎣ Virtual core keyboard id=3 [master keyboard (2)]<br />
↳ ...<br />
</source><br />
<br />
And dmesg show some errors from uclogic driver:<br />
<br />
<source lang=bash><br />
$ sudo dmesg<br />
[ 165.187552] uclogic 0003:256C:006E.0003: failed to enable abstract keyboard<br />
</source><br />
<br />
Even when forcing the override of hid-uclogic, it failed. Retrospectively maybe I just needed to reboot after forcing hid-logic at this point but finally I decided to install a more recent kernel, so here are the steps that worked for me.<br />
<br />
Add stretch-backports in /etc/apt/sources.list:<br />
<pre><br />
deb http://ftp.be.debian.org/debian stretch-backports main contrib non-free<br />
</pre><br />
<br />
<source lang=bash><br />
$ sudo apt-get update<br />
$ sudo apt-get install -t stretch-backports linux-image-4.18.0-0.bpo.1-amd64 linux-headers-4.18.0-0.bpo.1-amd64 linux-kbuild-4.18<br />
$ sudo dkms remove digimend/8 --all<br />
$ sudo dkms build digimend -v 8<br />
$ sudo dkms install digimend -v 8 --force<br />
$ sudo reboot<br />
...<br />
$ /sbin/modinfo hid-uclogic |grep ^version<br />
version: 8<br />
</source><br />
<br />
== Wacom tools ==<br />
<br />
Use wacom drivers for more finetuning:<br />
<br />
<source lang=bash><br />
# apt-get install xserver-xorg-input-wacom<br />
# mkdir -p /etc/X11/xorg.conf.d/<br />
# cat > /etc/X11/xorg.conf.d/50-tablet.conf << EOF<br />
Section "InputClass"<br />
Identifier "Huion class"<br />
MatchUSBID "256c:006e"<br />
MatchDevicePath "/dev/input/event*"<br />
Driver "wacom"<br />
EndSection<br />
EOF<br />
</source><br />
<br />
Restart X11 session.<br />
<br />
<source lang=bash><br />
$ xsetwacom list<br />
HUION Huion Tablet Pen stylus id: 23 type: STYLUS <br />
HUION Huion Tablet Pad pad id: 24 type: PAD <br />
<br />
$ xsetwacom -s get "HUION Huion Tablet Pen stylus" all 2>/dev/null<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Area" "0 0 24384 15240"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Button" "1" "button +1 "<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Button" "2" "button +2 "<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Button" "3" "button +3 "<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "ToolDebugLevel" "0"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "TabletDebugLevel" "0"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Suppress" "2"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "RawSample" "4"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "PressureCurve" "0 0 100 100"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Mode" "Absolute"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "TabletPCButton" "off"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Touch" "off"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Gesture" "off"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "ZoomDistance" "0"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "ScrollDistance" "0"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "TapTime" "250"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Rotate" "none"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "Threshold" "26"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "BindToSerial" "0"<br />
xsetwacom set "HUION Huion Tablet Pen stylus" "PressureRecalibration" "on"<br />
<br />
$ xsetwacom -s get "HUION Huion Tablet Pad pad" all 2>/dev/null<br />
Property 'Wacom Tablet Area' does not exist on device.<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "1" "button +1 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "2" "button +2 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "3" "button +3 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "8" "button +8 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "9" "button +9 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "10" "button +10 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "11" "button +11 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "12" "button +12 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "13" "button +13 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "14" "button +14 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "15" "button +15 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Button" "16" "button +16 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "ToolDebugLevel" "0"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "TabletDebugLevel" "0"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Suppress" "2"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "RawSample" "4"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Mode" "Absolute"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Touch" "off"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Gesture" "off"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "ZoomDistance" "0"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "ScrollDistance" "0"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "TapTime" "250"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "RelWheelUp" "1" "button +5 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "RelWheelDown" "2" "button +4 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "AbsWheelUp" "3" "button +4 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "AbsWheelDown" "4" "button +5 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "AbsWheel2Up" "5" "button +4 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "AbsWheel2Down" "6" "button +5 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "StripLeftUp" "1" "button +4 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "StripLeftDown" "2" "button +5 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "StripRightUp" "3" "button +4 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "StripRightDown" "4" "button +5 "<br />
xsetwacom set "HUION Huion Tablet Pad pad" "Threshold" "0"<br />
xsetwacom set "HUION Huion Tablet Pad pad" "BindToSerial" "0"<br />
</source><br />
<br />
Remove "-s" (shell) to get a line we can fit in xorg.conf<br />
<br />
Pad Buttons:<br />
<br />
* 1: left up<br />
* 2: left down<br />
* 3: right up<br />
* 8: right down<br />
<br />
To map buttons, e.g. Ctrl-Z (undo) to 4th button "8"!:<br />
<br />
<source lang=bash><br />
$ xsetwacom set "HUION Huion Tablet Pad pad" button 8 key Ctrl Z<br />
</source><br />
<br />
Pen Buttons:<br />
<br />
* 1: press tip (default: mouse left button)<br />
* 2: press lower button (default: mouse middle button)<br />
* 3: press upper button (default: mouse right button)<br />
<br />
E.g. to reset default behavior:<br />
<br />
<source lang=bash><br />
$ xsetwacom set "HUION Huion Tablet Pen stylus" button 1 button +1<br />
$ xsetwacom set "HUION Huion Tablet Pen stylus" button 2 button +2<br />
$ xsetwacom set "HUION Huion Tablet Pen stylus" button 3 button +3<br />
</source><br />
<br />
To limit tablet to one of the 2 screens, e.g. eDP-1 or HDMI-1 (cf xrandr):<br />
<br />
<source lang=bash><br />
$ xsetwacom set "HUION Huion Tablet Pen stylus" MapToOutput eDP-1<br />
$ xsetwacom set "HUION Huion Tablet Pen stylus" MapToOutput HDMI-1<br />
</source><br />
<br />
== Softs ==<br />
<br />
=== Krita ===<br />
<source lang=bash><br />
$ sudo apt-get install krita<br />
</source><br />
<br />
cf https://www.davidrevoy.com/static5/table-of-content</div>PhilippeTeuwen