lunedì 25 novembre 2013

Macintosh Firmware Upgrade for Seagate Laptop SSHD ST1000LM014

While I thought Samsung idea of distributing ISO booting CD images to upgrade HDD firmware, working on Mac and PC, was brilliant, I was less excited once I figured out that doing the procedure on my MacBook Pro resulted in an endless booting.

I am referring to the Samsung boot firmware upgrade for SM15 available as per today, November 25th 2013 reachable trough the link posted below.

However I noticed that, booting with the Upgrade CD image:

  • On a MacBook Pro with ST1000LM014 resulted in immediate shutdown after booting in Linux
  • On a PC notebook with a different HDD with Windows OS worked properly
  • On a PC notebook with ST1000LM014 Mac formatted resulted in immediate shutdown after booting in Linux

I therefore concluded that the problem is the Mac formatting on the drive would not allow it to be seen by the OS, that would probably not mount the partitions, and therefore the Seagate tool aborts and the shutdown procedure completes immediately.

The thing is: mounting the partitions should not be a requisite to be able to address the drive! Seagate must change this.

I anyway managed to upgrade my Laptop SSHD drive from SM14 to SM15 in a dangerous and risky way. DO IT AT YOUR OWN RISK! Before following this procedure just verify that eventually there is an updated upgrade image without this issue!

Risky procedure to upgrade to SM15


What you need:


  • Another SATA drive with Windows or DOS system on it
  • Seagate Firmware Upgrade CD burned from ISO image


Procedure:

  1. Attach the Win/Dos SATA disk to the MacBookPro (or a PC notebook). Keep the system in a way where you can access the hard drive with the system on. I kept my MacBook Pro on a side with display lid at 90 degrees keeping a hand on the hard drive (!).
  2. Boot from the Seagate upgrade CD keeping the "c" key pressed on the keyboard
  3. The system will boot and this time not shut down!
  4. Very carefully (!!) disconnect the Windows hard drive and plug the SSHD disk to upgrade. This is definitely not a recommended operation and the odd working position makes it even more dangerous. Be sure to be quick in the unplug replug operations and be very careful not to stress the delicate SATA ribbon cable on the MacBook Pro slot!!
  5. Select option 2 to verify disk. The first time it reported several errors.
  6. Select option 2 once again... this time to me it reported proper values for the drive!
  7. Finally, select option 1 and the upgrade will go trough. If you are upgrading from SM11 or 12 the operation may take very long, so be prepared to fix (maybe with tape?) the drive in place and let it run for 10-20 minutes. I was upgrading from SM14 so it took 3-4 minutes. Even if the system appears to be doing nothing, just keep waiting with faith!
  8. Once the process completes, you may want some gratification selecting option 2 once again to verify the version is correctly upgrade to SM15
  9. Then press ESC to exit the upgrade procedure and powerdown the system
  10. Finally you can fix the disk in place properly and close the MacBook for good!

Useful links:

  • Seagate Firmware Upgrade for Mac procedure: link
  • Seagate form to access firmware upgrades: link
  • Seagate forum post on this issue: link
  • Japanese blog mentioning the issue: link

domenica 24 novembre 2013

Ogni disco può rompersi in qualsiasi momento

Questa massima, tradotta da "Any drive can fail anytime" dovrebbe sempre essere tenuta presente. La tecnologia ci ha abituato a sistemi sempre più robusti e sempre più economici. I computer si cambiano sempre più spesso e quindi non hanno il tempo di invecchiare.

No so voi, ma io in passato ogni anno avevo a che fare con dischi danneggiati e sistemi da recuperare, ma ultimamente mi stavo abituando a questo concetto...

Settimana scorsa lo ho dovuto affrontare nuovamente, però, e ne ho approfittato per scoprire i passi avanti, ma anche i falsi positivi, che la tecnologia dei dischi ha fatto negli ultimi 5-10 anni.

Premetto che ho un MacBook Pro da circa 2 anni al quale avevo cambiato il disco con un Seagate Momentum XT da 750GB modello ST750LX003, sì il disco ibrdo di cui avevo parlato in un posto precedente. Come ogni utente Mac diligente, ho il mio bravo time capsule, quindi affronto con spavalderia il rischio di dischi danneggiati. Ogni utente Mac dovrebbe usare questo ottimo prodotto, o almeno fare un backup costantemente con un disco estero Time Machine.

Vado subito al punto, presentando le cose interessanti che ho "scoperto".


1. Vai a fidarti dello SMART ...!

Lo stato SMART "verificato" è un colossale falso positivo. Possibile che un disco con quasi 3000 settori danneggiati sia considerato "SMART VERIFIED"?

Includo qui di seguito la lettura delle informazioni SMART, noterete a riga 22 che l'esito della saluto del disco è "PASSED". Questa è l'informazione riassuntiva che vi forniscono i tool tipo Disk Utility.
Ma se guardate i dettagli nelle righe 76 e 77 (Current_Pending_Sector e Offline_Uncorrectable) si vede che sono stati individuati 2912 settori danneggiati e che non sono stati rimappati/sostituiti (valore 0 per Reallocated_Sector_Ct in riga 61). Il firmware dei dischi infatti ha un certo numero di settori "di scorta" e quando si rende conto che un settore scritto è danneggiato, rimappa il settore danneggiato su uno di questi settori di scorta, rendendo il disco apparentemente integro. Ma, cosa strana, pur avendo trovato quasi 3000 settori danneggiati, nessuno è mai stato "riparato"!

1:  MacBook-Pro-di-Ascanio-Orlandini:~ ascanio$ smartctl -a /dev/disk4  
2:  smartctl 6.2 2013-07-26 r3841 [x86_64-apple-darwin13.0.0] (local build)  
3:  Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org  
4:    
5:  === START OF INFORMATION SECTION ===  
6:  Model Family:   Seagate Momentus XT (AF)  
7:  Device Model:   ST750LX003-1AC154  
8:  Serial Number:  W20079DP  
9:  LU WWN Device Id: 5 000c50 0495444f6  
10:  Firmware Version: SM12  
11:  User Capacity:  750. 156. 374. 016 bytes [750 GB]  
12:  Sector Sizes:   512 bytes logical, 4096 bytes physical  
13:  Rotation Rate:  7200 rpm  
14:  Device is:    In smartctl database [for details use: -P show]  
15:  ATA Version is:  ATA8-ACS T13/1699-D revision 4  
16:  SATA Version is: SATA 3.0, 6.0 Gb/s (current: 1.5 Gb/s)  
17:  Local Time is:  Sun Nov 24 13:01:56 2013 CET  
18:  SMART support is: Available - device has SMART capability.  
19:  SMART support is: Enabled  
20:    
21:  === START OF READ SMART DATA SECTION ===  
22:  SMART overall-health self-assessment test result: PASSED  
23:    
24:  General SMART Values:  
25:  Offline data collection status: (0x00)     Offline data collection activity  
26:                           was never started.  
27:                           Auto Offline Data Collection: Disabled.  
28:  Self-test execution status:   (  0)     The previous self-test routine completed  
29:                           without error or no self-test has ever   
30:                           been run.  
31:  Total time to complete Offline   
32:  data collection:           ( 617) seconds.  
33:  Offline data collection  
34:  capabilities:                 (0x73) SMART execute Offline immediate.  
35:                           Auto Offline data collection on/off support.  
36:                           Suspend Offline collection upon new  
37:                           command.  
38:                           No Offline surface scan supported.  
39:                           Self-test supported.  
40:                           Conveyance Self-test supported.  
41:                           Selective Self-test supported.  
42:  SMART capabilities:      (0x0003)     Saves SMART data before entering  
43:                           power-saving mode.  
44:                           Supports SMART auto save timer.  
45:  Error logging capability:    (0x01)     Error logging supported.  
46:                           General Purpose Logging supported.  
47:  Short self-test routine   
48:  recommended polling time:       (  1) minutes.  
49:  Extended self-test routine  
50:  recommended polling time:       ( 147) minutes.  
51:  Conveyance self-test routine  
52:  recommended polling time:       (  2) minutes.  
53:  SCT capabilities:          (0x1081)     SCT Status supported.  
54:    
55:  SMART Attributes Data Structure revision number: 10  
56:  Vendor Specific SMART Attributes with Thresholds:  
57:  ID# ATTRIBUTE_NAME     FLAG   VALUE WORST THRESH TYPE   UPDATED WHEN_FAILED RAW_VALUE  
58:   1 Raw_Read_Error_Rate   0x000f  102  061  006  Pre-fail Always    -    4174600  
59:   3 Spin_Up_Time      0x0003  098  098  000  Pre-fail Always    -    0  
60:   4 Start_Stop_Count    0x0032  091  091  020  Old_age  Always    -    9472  
61:   5 Reallocated_Sector_Ct  0x0033  100  100  036  Pre-fail Always    -    0  
62:   7 Seek_Error_Rate     0x000f  078  060  030  Pre-fail Always    -    8716117542  
63:   9 Power_On_Hours     0x0032  095  095  000  Old_age  Always    -    4996  
64:   10 Spin_Retry_Count    0x0013  100  100  097  Pre-fail Always    -    0  
65:   12 Power_Cycle_Count    0x0032  092  092  020  Old_age  Always    -    8354  
66:  184 End-to-End_Error    0x0032  100  100  099  Old_age  Always    -    0  
67:  187 Reported_Uncorrect   0x0032  001  001  000  Old_age  Always    -    31723  
68:  188 Command_Timeout     0x0032  100  253  000  Old_age  Always    -    0  
69:  189 High_Fly_Writes     0x003a  100  100  000  Old_age  Always    -    0  
70:  190 Airflow_Temperature_Cel 0x0022  071  050  045  Old_age  Always    -    29 (Min/Max 21/29)  
71:  191 G-Sense_Error_Rate   0x0032  100  100  000  Old_age  Always    -    0  
72:  192 Power-Off_Retract_Count 0x0032  100  100  000  Old_age  Always    -    345  
73:  193 Load_Cycle_Count    0x0032  001  001  000  Old_age  Always    -    231137  
74:  194 Temperature_Celsius   0x0022  029  050  000  Old_age  Always    -    29 (0 12 0 0 0)  
75:  195 Hardware_ECC_Recovered 0x001a  038  027  000  Old_age  Always    -    4174600  
76:  197 Current_Pending_Sector 0x0012  065  065  000  Old_age  Always    -    2912  
77:  198 Offline_Uncorrectable  0x0010  065  065  000  Old_age  Offline   -    2912  
78:  199 UDMA_CRC_Error_Count  0x003e  200  200  000  Old_age  Always    -    0  
79:  254 Free_Fall_Sensor    0x0032  001  001  000  Old_age  Always    -    1  
80:    
81:  SMART Error Log Version: 1  
82:  ATA Error Count: 31636 (device log contains only the most recent five errors)  
83:       CR = Command Register [HEX]  
84:       FR = Features Register [HEX]  
85:       SC = Sector Count Register [HEX]  
86:       SN = Sector Number Register [HEX]  
87:       CL = Cylinder Low Register [HEX]  
88:       CH = Cylinder High Register [HEX]  
89:       DH = Device/Head Register [HEX]  
90:       DC = Device Command Register [HEX]  
91:       ER = Error register [HEX]  
92:       ST = Status register [HEX]  
93:  Powered_Up_Time is measured from power on, and printed as  
94:  DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,  
95:  SS=sec, and sss=millisec. It "wraps" after 49.710 days.  
96:    
97:  Error 31636 occurred at disk power-on lifetime: 4996 hours (208 days + 4 hours)  
98:   When the command that caused the error occurred, the device was active or idle.  
99:    
100:   After command completion occurred, registers were:  
101:   ER ST SC SN CL CH DH  
102:   -- -- -- -- -- -- --  
103:   40 51 01 ff ff ff 5f Error: UNC at LBA = 0x0fffffff = 268435455  
104:    
105:   Commands leading to the command that caused the error were:  
106:   CR FR SC SN CL CH DH DC  Powered_Up_Time Command/Feature_Name  
107:   -- -- -- -- -- -- -- -- ---------------- --------------------  
108:   42 00 01 ff ff ff 0f 00 22d+14:22:22.273 READ VERIFY SECTOR(S) EXT  
109:   42 00 01 ff ff ff 0f 00 22d+13:38:36.874 READ VERIFY SECTOR(S) EXT  
110:   42 00 78 ff ff ff 0f 00 22d+13:36:54.046 READ VERIFY SECTOR(S) EXT  
111:   42 00 78 ff ff ff 0f 00 22d+12:53:00.110 READ VERIFY SECTOR(S) EXT  
112:   42 00 78 ff ff ff 0f 00 22d+12:09:18.412 READ VERIFY SECTOR(S) EXT  
113:    
114:  Error 31635 occurred at disk power-on lifetime: 4996 hours (208 days + 4 hours)  
115:   When the command that caused the error occurred, the device was active or idle.  
116:    
117:   After command completion occurred, registers were:  
118:   ER ST SC SN CL CH DH  
119:   -- -- -- -- -- -- --  
120:   40 51 78 ff ff ff 5f Error: UNC at LBA = 0x0fffffff = 268435455  
121:    
122:   Commands leading to the command that caused the error were:  
123:   CR FR SC SN CL CH DH DC  Powered_Up_Time Command/Feature_Name  
124:   -- -- -- -- -- -- -- -- ---------------- --------------------  
125:   42 00 78 ff ff ff 0f 00 22d+13:36:54.046 READ VERIFY SECTOR(S) EXT  
126:   42 00 78 ff ff ff 0f 00 22d+12:53:00.110 READ VERIFY SECTOR(S) EXT  
127:   42 00 78 ff ff ff 0f 00 22d+12:09:18.412 READ VERIFY SECTOR(S) EXT  
128:   42 00 78 ff ff ff 0f 00 22d+12:08:52.988 READ VERIFY SECTOR(S) EXT  
129:   42 00 78 ff ff ff 0f 00 22d+11:24:59.271 READ VERIFY SECTOR(S) EXT  
130:    
131:  Error 31634 occurred at disk power-on lifetime: 4966 hours (206 days + 22 hours)  
132:   When the command that caused the error occurred, the device was active or idle.  
133:    
134:   After command completion occurred, registers were:  
135:   ER ST SC SN CL CH DH  
136:   -- -- -- -- -- -- --  
137:   40 51 08 ff ff ff 5f Error: UNC 8 sectors at LBA = 0x0fffffff = 268435455  
138:    
139:   Commands leading to the command that caused the error were:  
140:   CR FR SC SN CL CH DH DC  Powered_Up_Time Command/Feature_Name  
141:   -- -- -- -- -- -- -- -- ---------------- --------------------  
142:   25 00 08 ff ff ff 0f 00 39d+18:42:24.045 READ DMA EXT  
143:   35 00 08 ff ff ff 0f 00 39d+18:42:23.725 WRITE DMA EXT  
144:   35 00 08 ff ff ff 0f 00 39d+18:42:23.395 WRITE DMA EXT  
145:   35 00 08 ff ff ff 0f 00 39d+18:42:23.054 WRITE DMA EXT  
146:   35 00 08 ff ff ff 0f 00 39d+18:42:22.669 WRITE DMA EXT  
147:    
148:  Error 31633 occurred at disk power-on lifetime: 4966 hours (206 days + 22 hours)  
149:   When the command that caused the error occurred, the device was active or idle.  
150:    
151:   After command completion occurred, registers were:  
152:   ER ST SC SN CL CH DH  
153:   -- -- -- -- -- -- --  
154:   40 51 08 ff ff ff 5f Error: UNC 8 sectors at LBA = 0x0fffffff = 268435455  
155:    
156:   Commands leading to the command that caused the error were:  
157:   CR FR SC SN CL CH DH DC  Powered_Up_Time Command/Feature_Name  
158:   -- -- -- -- -- -- -- -- ---------------- --------------------  
159:   25 00 08 ff ff ff 0f 00 39d+17:59:08.702 READ DMA EXT  
160:   25 00 08 ff ff ff 0f 00 39d+17:16:15.731 READ DMA EXT  
161:   35 00 08 ff ff ff 0f 00 39d+17:16:14.818 WRITE DMA EXT  
162:   35 00 08 ff ff ff 0f 00 39d+17:16:14.496 WRITE DMA EXT  
163:   35 00 08 ff ff ff 0f 00 39d+17:16:14.177 WRITE DMA EXT  
164:    
165:  Error 31632 occurred at disk power-on lifetime: 4966 hours (206 days + 22 hours)  
166:   When the command that caused the error occurred, the device was active or idle.  
167:    
168:   After command completion occurred, registers were:  
169:   ER ST SC SN CL CH DH  
170:   -- -- -- -- -- -- --  
171:   40 51 08 ff ff ff 5f Error: UNC 8 sectors at LBA = 0x0fffffff = 268435455  
172:    
173:   Commands leading to the command that caused the error were:  
174:   CR FR SC SN CL CH DH DC  Powered_Up_Time Command/Feature_Name  
175:   -- -- -- -- -- -- -- -- ---------------- --------------------  
176:   25 00 08 ff ff ff 0f 00 39d+17:16:15.731 READ DMA EXT  
177:   35 00 08 ff ff ff 0f 00 39d+17:16:14.818 WRITE DMA EXT  
178:   35 00 08 ff ff ff 0f 00 39d+17:16:14.496 WRITE DMA EXT  
179:   35 00 08 ff ff ff 0f 00 39d+17:16:14.177 WRITE DMA EXT  
180:   35 00 08 ff ff ff 0f 00 39d+17:16:13.855 WRITE DMA EXT  
181:    
182:  SMART Self-test log structure revision number 1  
183:  Num Test_Description  Status         Remaining LifeTime(hours) LBA_of_first_error  
184:  # 1 Short offline    Completed: read failure    90%   4990     836091760  
185:  # 2 Short offline    Completed: read failure    80%   4988     836091760  
186:  # 3 Short offline    Completed: read failure    90%   4988     836091760  
187:  # 4 Short offline    Completed: read failure    90%   4987     836091760  
188:  # 5 Short offline    Completed: read failure    90%   4987     836091760  
189:  # 6 Short offline    Completed: read failure    90%   4978     836091760  
190:  # 7 Short offline    Completed: read failure    90%   4944     836091968  
191:    
192:  SMART Selective self-test log data structure revision number 1  
193:   SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS  
194:    1    0    0 Not_testing  
195:    2    0    0 Not_testing  
196:    3    0    0 Not_testing  
197:    4    0    0 Not_testing  
198:    5    0    0 Not_testing  
199:  Selective self-test flags (0x0):  
200:   After scanning selected spans, do NOT read-scan remainder of disk.  
201:  If Selective self-test is pending on power-up, resume after 0 minute delay.  
202:    
203:  MacBook-Pro-di-Ascanio-Orlandini:~ ascanio$   
204:    

Quel che è peggio, se vedete i dati SMART, anche dopo aver richiesto delle verifiche e dopo che queste sono terminate con errori irreparabili (si vedano le linee 182-190) lo stato globale risulta sempre essere "SMART overall-health self-assessment test result: PASSED"! 

Morale: la tecnologia SMART è notevole, ma è usata malissimo dai sistemi operativi. Per fare una vera diagnostica non basta fidarsi del parametro finale ma occorre interpretare tutta la tabella, e anche effettuare dei self test. Occorre monitorare nel tempo l'evoluzione di questi parametri e sollevare allarmi. Cosa che dovrebbe fare il parametro riassuntivo dello SMART, ma evidentemente non lo fa bene.

Esiste un ottimo tool in proposito, per Mac: SMARTreporter, che traccia e tiene una storia delle prestazioni SMART dei dischi e effettua periodicamente i self test interni. Inoltre tiene traccia degli errori in lettura, come si vedrà più avanti. L'altro tool indispensabile è SmartMonTools, disponibile per praticamente tutti i sistemi.

2. Errori in lettura, I/O Error

E questa è un'altra scoperta importante... il disco sa riconoscere errori in scrittura e li usa per rimappare settori danneggiati, ma non gli errori in lettura! Che vengono però gestiti dal kernel del sistema forzando un certo numero di retry - situazione che può mandare in blocco il sistema se ripetuti frequentemente, blocco non permanente ma tipo 20 secondi di blocco dell'interfaccia utente.

Mi sono accorto del problema proprio perché, durante un backup, il sistema diventata ripetutamente non risponsivo. Ho controllato il log di sistema (con "Console" su Mac) e ho trovato simpatiche righe "kernel disk0s1: I/O error".

Anche in questo caso SMARTreporter non solo controlla i parametri SMART del disco, ma anche gli errori di lettura nel log di sistema!

Infatti se si subiscono errori su zone del disco già scritte, questi saranno riconosciuti solo dal sistema operativo! Il disco non puà intervenire rimappando il blocco altrimenti perderebbe tutti i dati del blocco scritto. Invece se si va a scrivere in una zona di disco vuota, se si presenta un errore il disco trasparentemente cercherà di riallocare il blocco con quelli di scorta. Un errore in scrittura quindi implica che il disco è severamente danneggiato tanto che non è più possibile sostituire i blocchi (come nel mio caso).


Il mio nuovo disco

Come saprete, sono un fan dei dischi ibridi di Seagate, nonostante questo disco mi sia morto così presto (poco più di un anno, con all'attivo solo 4996 ore, riga 63).

Dovendo prendere un nuovo disco, mi sono chiesto se prendere lo stesso (Momentum XT da 750GB ST750LX003) oppure la terza generazione di dischi ibridi "Laptop Solid State Hybrid Drive" ST1000LM014 da 1T. (Seguendo il link qui fornito accedete direttamente ad una ricerca su Amazon così che troverete anche il prezzo più attuale del prodotto. Inoltre se lo comprate seguendo questo link, Amazon mi riconoscerà qualche punto percentuale quindi se volete comprarlo e dirmi grazie potete farlo seguendo questo link...)

Perché il dubbio? Il "vecchio" Momentus XT è un disco da 7500rpm, mentre il nuovo di terza generazione è sì più grande ma gira ai soliti 5400rpm, ma ha 64MB di cache di primo livello contro i 32 del modello precedente. Sempre 8GB di memoria NAND allo stato solido. Inoltre la nuova generazione dovrebbe aver migliorato gli algoritmi di caching permettendo anche l'uso della ssd anche in scrittura. Alla fine ho scelto il secondo, quello di 3za generazione, sperando che l'intelligenza sia più importante della "forza bruta" della velocità di rotazione, almeno per i file medio/piccoli che si usano abitualmente. Lo ho comprato su Amazon a meno di 90€ (quello vecchio mi era costato 140€ 1,5 anni fa!).


Politica di Seagate

Da una verifica online il disco risulta ancora in garanzia fino a maggio, praticamente due anni da quando lo ho comprato (giugno 2012), ho potuto fare le pratiche di richiesta di rientro e spedirò il disco domani. Vediamo quanto impiegano per rimandarmelo, ma fino ad ora la procedura è stata molto veloce. Avevo anche scritto al supporto tecnico e mi hanno risposto il giorno dopo con consigli utili, tipo usare il tool SeaTools per fare indagini di basso livello e tentare una riparazione, che è comunque fallita.


Nel frattempo mi sono fatto un po' di esperienza sul recovery mondo Mac, quindi se vi serve qualche consiglio fresco, scrivete pure! 

E buon backup a tutti!

sabato 9 novembre 2013

Bravo Italo

Continuo a spostrarmi su e giù per l'Italia con il treno e ogni volta devo scegliere tra Trenitalia e NTV. Ultimamente ho quasi sempre, anzi, da mesi sempre preo Trenitalia perché non potendo pianificare i miei viaggi in anticipo, Trenitalia è sempre più conveniente: a volte di qualche euro, a volte del 50% perché vengono spesso offerti grandi sconti per i titolari di Cartafreccia (fondamentale loggarsi PRIMA di scegliere l'itinerario per vedere i prezzi scontati, tipo 25€ per Firenze - Milano anziché 50).

Ieri ho scelto di spendere 2 € in più per la corta tratta Bologna-Firenze per provare di nuovo i servizi di Italo dalla nuova stazione AV.

Devo dire che la spesa mi è stata ampiamente ripagata dalla estrema cordialità del personale di terra. In Italia è sempre molto raro trovare persone che sembrano fare volentieri il proprio lavoro, che ti sorridono, che ti salutano, e... che siano utili!

Ho potuto sperimentare che alle casse automatiche la carta fedeltà RFID effettivamente ti permette di essere riconosciuto semplicemente avvicinandola, e le ragazze di aiuto effettivamente mi hanno permesso di fare il biglietto velocemente e mi hanno mostrato questa funzionalità.

Lungo il binario non solo ci illustravano con cortesia dove si sarebbe fermata la nostra carrozza, ma anche consigliavano alle persone da quali porte entrare per evitare di creare "tappo" nel vagone per attraversarlo tutto. Complimenti davvero.

Internet a bordo non era male, considerato il tratto quasi completamente in galleria.

Una sola solita perplessità: perché per loggarsi se si mette il proprio username e password dell'account Italo Più NON FUNZIONA la login, ma solo se si rimuovono le credenziali? È sempre
stato così.... poco male ma è un po' un controsenso....

Comunque bravo italo.

venerdì 1 novembre 2013

Come prendere una Freccia quando non ci sono più posti

Se dovete prendere a tutti i costi una Freccia e non ci sono più posti disponibili, potete prendere un biglietto per una Freccia successiva e anche per solo una fermata intermedia. Pagherete solo una multa di 8€ (cambio treno) e eventualmente un conguaglio per la tratta.

MAI, mai salire invece senza alcun biglietto...

Di seguito quello che mi è successo ieri. Non garantisco che le regole applicate possano cambiare e/o essere applicate in modo differente, quindi se seguite il mio consiglio, lo fate a vostro rischio e pericolo.....

La storia:

Ieri pomeriggio 31 ottobre mi trovavo nella stazione centrale di Milano  e cercavo di prendere un treno per Firenze. Ovviamente non c'erano più posti disponibili, su nessun treno, compreso i treni "lenti": le macchine automatiche non consentivano di vendere nulla.
Anche l'applicazione online di Trenitalia non dava alcuna disponibilità così come il sito di Italo... mi aveva dato qualche speranza ma in fase di acquisto del biglietto non mi lasciava completare l'acquisto.

Il colpo di genio è stato cercare un biglietto per Bologna con partenza alle 19.35: lo ho trovato. Ho pensato: salgo sul treno con un biglietto per Bologna e poi mi fermo fino a Firenze, sperando di non essere trovato.

Dopo aver preso il biglietto mi sono accorto che era un biglietto per Bologna su una Frecciabianca per Ancona! Quindi sarei dovuto scendere a Bologna e sperare di trovare un altro treno...

In realtà poi mi sono detto, "%&##!!" e sono salito su una Frecciarossa per Roma delle 19.15, insieme a tante persone che, disperate, sono salite sul treno anche senza biglietto.

Ovviamente il controllore è apparso dopo 10 minuti della partenza. A chi era senza biglietto ha fatto biglietti a bordo pagando 130 € e oltre! E se non erano in grado di pagare, in contanti o con carta di credito, gli faceva il verbale con obbligo di scendere alla prima fermata e sarebbe arrivata a casa una multa di oltre 200€.

Quando è arrivato il mio turno, preparato al peggio, ho mostrato il mio biglietto per Bologna su altro treno... dicendo "Serve a qualcosa?". La risposta è stata "Ha fatto benissimo!". Ho dovuto pagare solo una multa di 8€ e la differenza di prezzo sul biglietto tra il biglietto Milano - Bologna e quello  Milano - Firenze (10€).


lunedì 5 agosto 2013

Netgear Wireless Extender WN2000RPTv2: problemi e soluzioni

Dopo aver installato un Wireless Netowrk Extender WN2000RPTv2 i problemi di copertura del Wifi in una casa piccina ma con muri molto spessi è stato risolto, tuttavia spesso i dispositivi avevano problemi a farsi assegnare un IP nella rete "estesa", ed ero costretto a riavviare il dispositivo.

Cercando un po' in rete ho trovato questo post che ha risolto le mie pene.

Premesso che il mio router ADSL è un Netgear DGN2200v3, ho risolto il problema agendo sul router, nella sezione Advanced/LAN Setup, attivando il protocollo RIP, commutando l'opzione Rip Version da Disabled (default) a RIP_2B.

Magicamente ora ottengo gli IP con tutti i dispositivi anche nella rete estesa.

Se dovessi ricomprare il wireless extender, però, prima di prendere una soluzione totalmente wireless tipo appunto il WN2000RPT, credo che proverei una soluzione basata su un'estensione della rete su powerline e poi un normale access point: forse in questo modo la latenza sarebbe più contenuta. Forse. (Seguendo il link riportato qui sopra partirà una ricerca in Amazon, così che potrete vedere gli ultimi prezzi. Se lo comprate da quel link mi sarà riconosciuto qualche punto percentuale, e potrebbe essere il vostro modo di dirmi grazie).

Eventuali commenti o esperienza in proposito sono benvenute.

Aggiornamento: Nonostante quanto sopra abbia migliorato sostanzialmente il funzionamento, di tanto in tanto era ancora necessario riavviare il range extender. Ho trovato un altro prezioso consiglio che pare funzionare perfettamente: esiste un link "segreto" che consente di attivare un server DHCP del range extender. Non so quanto sia ortodossa la pratica ma consiglio anche a voi di provare ad attivarlo se avete problemi. Per raggiungere la pagina nascosta seguete il link:
http://192.168.0.4/cgi-bin/hidden_dhcpd.html

Ovviamente i'indirizzo IP deve essere quello del vostro range extender WN2000RPTv2

Aggiornamento del 6 dicembre 2013

Non ci sono versi: ogni tanto (ogni 1 o 2 giorni) devo riavviare il range extender perché diventa troppo lento. E comunque, anche da appena riavviato, c'è troppa latenza per usare servizi come VOIP. Per navigare va più che bene, ma il VOIP fa morire.

Ho trovato un articolo abbastanza esauriente che spiega perché i range extender devono essere veramente l'ultima alternativa... eccolo qui.

Credo che proverò al più presto ad usare una soluzione powerline... dopo  aver provato un'antenna direttiva 6dB che comunque non mi fa arrivare un segnale superiore ai -70dB dove devo arrivare. Ho usato questa: TP-LINK TL-ANT2409A 2.4 GHz 9dB, ottima ma non ci arriva. Ci sarebbe anche questa TP-Link ANT2414A 2.4 GHz 14 dB che potrebbe avercela fatta.

Aggiornamento di gennaio 2014

Finalmente ho trovato una soluzione quasi stabile con i moduli HomePlug powerline. Purtroppo ho scelto quelli di D-LINK, mai più! Avrei dovuto restare fedele a Netgear. Ne parlerò in un post separato. Tuttavia sono abbastanza soddisfatto, dopo aver trovato delle prese che garantissero una sufficiente qualità di connessione. Consiglio questi adattatori HomePlug:  Famiglia Powerline Netgear

mercoledì 31 luglio 2013

Rirapare l'azionamento del finestrino posteriore destro di Opel Vectra B del 2000

Qualche giorno fa chiudendo il finestrino posteriore della mia vecchia ma sempre in forma Opel Vectra "B" TDI del 2000 (440 mila km!) ho sentito un agghiacciante rumore, seguito da un ancora più agghiacciante rumore di cavi attorcigliati e il finestrino è rimasto aperto.

Già mi sono immaginato centinaia di Euro volare dalla finestra e giorni di attesa dal carrozziere. So quanto è odioso lavorare dentro alle portiere e quanto tempo ci vuole. So che la complessità della materia suggerirà al tecnico la sostituzione di qualunque cosa, piuttosto della riparazione.

La mia personalità di ingegnere unita alla curiosità di capire cosa effettivamente si è rotto mi ha portato a volerci dare una sbirciatina dentro. Consapevole della non banalità ad aprire le portiere (specie la prima volta, poi diventa tutto un gioco da ragazzi, POI...) mi sono armato di Santa Pazienza, non prima però di essermi documentato sulla procedura di apertura della portiera e del meccanismo di apertura (elettrico) del finestrino posteriore.

La procedura per rimuovere il pannello è sommariamente la seguente, ma prima ricordate di staccare il polo - della batteria per evitare inutili incidenti o corto-circuiti.

  • Rimuovere la griglia tweeter, stando attenti a non rompere i gancetti
  • Rimuovere il pulsante dell'apertura del vetro (apertura elettrico) e staccare il connettore elettrico
  • Rimuovere il tappo nella parte bassa del bracciolo
  • Svitare le tre viti che tengono in posizione il bracciolo posizionate nei tre punti sopra indicati, visibili dopo aver rimosso i rispettivi compomenti
  • Svitare due viti locate nella parte bassa, vicino al metallo della portiera
  • Rimuovere il triangolino di plastica, ma pare ruotando dal retro verso il fronte, ma state attenti che non viene via facilmente e si potrebbe rompere
  • Staccare il cavo della lampadina di cortesia in basso (io ho dovuto rimuovere tutta la lampadina per riuscirci...)
  • Ora la parte più delicata e per me difficile: rimuovere il pannello che dovrebbe essere libero. Da quanto ho capito deve essere sfilato energicamente tirandolo verso l'alto. Io ci sono riuscito facendo una serie svariata di prove e tentativi in varie direzioni...
A questo punto potete rimuovere o tagliare la plastica protettrice (e poi reincollarla o usare nastro adesivo per richiuderla) ed ispezionare l'accaduto.

Confesso che io ho riattaccato il pulsante del vetro e la batteria per vedere cosa succedeva azionando il pulsante.

Il mecanismo del finestrino è composto da un motore che aziona un rocchetto sul quale sono avvolti in due direzioni due cavetti di acciaio che, ruotando in un senso o nell'altro, grazie a due carrucole, portano in su e in giù un cursore che è collegato al vetro.

Nel mio caso si era staccato il cavo che tira il vetro in alto e come conseguenza si era aggrovigliato il cavo nel rocchetto.

Immaginavo che dovesse essere cambiato tutto il meccanismo, ma alcune ricerche su Internet mi hanno fatto capito che invece, dedicandoci un po' di tempo e pazienza, poteva essere riparato!

Tutto il meccanismo ha un prezzo di listino intorno ai 160€, ma si trova su EBay tra i 60 e i 100 €. Però si trovano anche dei kit di riparazione!

Confesso che non mi sarei mai lanciato nella riparazione se non avessi visto questo filmato, veramente ottimo. Attenti che è basato sulla finestra posteriore SINISTRA quindi ho dovuto fare qualche esercizio di simmetria per poterlo adattare al mio caso... ma non sarei mai arrivato al dover usare la MOLA per aprire il cursore! Diciamo che ho seguito queste istruzioni alla lettera dopo aver ordinato il kit e non ho avuto problemi.

Il link al prezioso filmato: http://www.youtube.com/watch?v=zCRMRH3F_I0

Veniamo al kit di riparazione. Le parole da ricercare su EBay per avere risultati internazionali sono "Vectra Window Regulator Repair Kit" e spesso si trovano dalla Germania tra i 15 e i 20 € più spedizione. Attenzione che ci sono kit e kit, con componenti differenti. Una volta che sapete cosa vi si è rotto potete scegliere che kit comprare. Inoltre se ho capito bene questi kit sono uguali per sinistra e destra, ma credo siano differenti almeno le lunghezze dei cavi tra anteriore e posteriore!
Nel mio caso si era rotto il pezzo di plastica bianco che attacca i cavi al cursore, strappandosi il cavo verso l'alto, con conseguente invilupparsi e sciuparsi dei cavi di acciaio.
Attenti che se il cavo è spiegazzato male rischierà di aggrovigliarsi sempre quindi va cambiato!
Ecco un kit molto completo, composto da:
  • coppia di cavi di acciaio;
  • coppia di molle per i cavi;
  • parte plastica del cursore (vedi filmato, quello che si era rotto a me!);
  • fermaglio di metallo da ribattere;
  • rocchetto avvolgicavo (vedi nota qui sotto);
  • fermino di metallo per il cursore (attenzione che nel filmato non lo rimettono, ma secondo me è importante; si potrebbe riciclare quello vecchio ma nel mio caso era danneggiato pure lui!);
  • fermino di plastica ovale per la barra del vetro; attenzione che la maggior parte dei kit non lo comprendono, e non dovrebbe servire. Inoltre, se lo si volesse cambiare, credo che manchi il relativo fermo da ribattere!
  • tappini di plastica neri, che non so dove vadano!! Se lo scoprite ditemelo...
Io in realtà ho acquistato il kit presso il venditore EBay "idealautoteile" e lo ho pagato solo 12 Sterline compreso il trasporto da Istanbul che è stato fatto con UPS con consegna in 24 ore!! Fatto l'ordine domenica pomeriggio, martedì alle 12 era già nelle mie mani! Incredibile. Il mio kit era la versione completa ma senza il fermino ovale. Ci tenevo in particolare invece al fermino di metallo.

L'unica perplessità è stata sul rocchetto, che era leggermente più grande in diametro, magari 1 mm, e questo lo rendeva difficile da inserirsi nella sua sede. Per questo ho deciso di continuare ad usare il vecchio rocchetto, che mi sembrava ancora in buono stato, e entrava meglio anche sull'ingranaggio del motore. Non so se questa parte non fosse stata precisa... se sapete che dovete cambiarlo vi consiglio di misurarlo e chiedere conferma al venditore se sembra anche esteticamente differente.

L'ultima nota è che tutto il meccanismo è tenuto fissato alla carrozzeria della portiera con 6 RIVETTI! Il che vuol dire che

  1. per rimuoverlo dovete "mangiare" il rivetto con un trapano con una punta da 5mm per il ferro (io ho usato un trapanino a mano di fortuna, tanto il rivetto è di alluminio...)
  2. per rimontarlo c'è chi usa delle viti ma si fa tanta fatica, io ho comprato una rivettatrice: dopo aver capito come funziona, è geniale ed è chiaro perché sia stata usata...
Certo una rivettatrice è un investimento in più, ma su EBay o Amazon si trova anche con 15 € compreso il trasporto. Meglio usare una rivettatrice da 5 mm. Io avevo fretta e ne ho comprata una in negozio da 4mm a 20€.

Quindi il totale del mio investimento è stato di € 15 per il kit e di € 20 per la rivettatrice, più circa 3 ore di paziente lavoro. Fortunatamente avevo accesso ad una mola (indispensabile, vedi filmato) ed a un trapano, oltre che al cacciavite Torx per smontare il motore dal meccanismo.

Ah, ultimo avvertimento: quando usate la mola mettetevi dei buoni guanti di pelle. Non solo perché è più sicuro, ma soprattutto perché il pezzo diventa rovente! Mi raccomando, non guanti di plastica.

Buon divertimento

sabato 25 maggio 2013

Includere codice nei post Blogger ma non solo

Scrivendo il post precedente mi sono posto il problema su come includere facilmente del codice in un post, ma anche in qualsiasi altra pagina HTML.

Ho trovato un generatore di codice online molto pratico:

http://codeformatter.blogspot.it/

Se invece avete modo di inserire codice JavaScript sulle vostre pagine, credo che la soluzione migliore sia http://alexgorbatchev.com/SyntaxHighlighter/

Una carrellata di possibili alternative la trovate anche qui, compresa anche una soluzione di Google: http://www.1stwebdesigner.com/css/16-free-javascript-code-syntax-highlighters-for-better-programming/


Odissea R.java alias: perché gli sviluppatori iOS sono più felici

Non so se è capitato anche a voi di perdere un'intera giornata cercando di compilare un'app Android perché improvvisamente non viene più generato il file R.java delle risorse... a me sì e in queste occasioni rimpiango di non stare sviluppando un app per iOS.

Dopo aver passato una giornata saltando da ricerche su Google e analizzare il codice xml delle mie risorse senza sapere cosa stessi cercando, sempre più mi trovavo a pensare: "Possibile che in tutto Internet non esista uno straccio di suggerimento su come eventualmente visualizzare un benedetto messaggio di errore che indicasse cosa potesse non piacere all'IDE percui non venissero generati questo benedetto R.java?!".

Ebbene, finalmente ho trovato il modo di generare il file R.java direttamente da linea di comando e, specificando il parametro "-v", avere una spiegazione di cosa potenzialmente non gli piace. Il comando è "aapt" e si trova in platform-tools dell'SDK di Android!

Può essere lanciato come segue:

 aapt package -v -f -m -S /my_path/my-project/res -J /my_path/my-project/src -M /my_path/my-project/AndroidManifest.xml -I /may_path_to_sdk/android-sdk/platforms/android-8/android.jar -F R.java  

È probabilmente opportuno portare la directory corrente in "/my_path/my_project/gen" e poi lanciare il comando precedente specificando il path per raggiungere l'applicazione: "/my_path/android_sdk/platform-tools/aapt ....". Ovviamente ho usato la sintassi Unix/MacOS, se siete su Windows apportate le ovvie modifiche.

Ho trovato le informazioni in questa pagina:
http://www.herongyang.com/Android/Project-aapt-Android-Asset-Packaging-Tool.html

In realtà così ho scoperto di non aver alcun problema con i miei file XML! Il mio problema è originato da un aggiornamento dell'SDK alla res 17. Dopo aver lanciato l'Android SDK manager (dal menu Windows) questo mi diceva che l'Android SDK Build Tools non era aggiornato e andava aggiornato alla res. 17. Dopo aver completato questo aggiornamento tutto è tornato a funzionare, ma una giornata era ormai volta al termine.

In anni di sviluppo su iOS non ho mai toccato una punta di produttività così bassa o di frustrazione così alta...

venerdì 26 aprile 2013

Auricolare Bluetooth Samsung HM1700

Alla ricerca dell'auricolare Bluetooth perfetto... o almeno usabile.

Per motivi legati all'utilizzo della tecnologia NFC utilizzo da qualche settimana un Samsung Notes II, cosa che mi ha portato a tornare a cercare un auricolare BT.

Sono stato un utilizzatore dei primissimi auricolari BT della Ericsson, chi se li ricorda, quelli che si protendevano fin davanti alla bocca e la cui batteria durava pochissimo... da anni ne sono poi stato alla larga perché detestavo l'idea di dover continuare a caricare oggetti, propendendo per il buon cavo di rame degli auricolari.

Ora mi sono voluto rimettere alla prova con questo dispositivo, vista appunto la grande dimensione del Notes II.

La mia prima scelta è stato il Samsung HM1700, ma devo continuare a cercare qualcosa d'altro.
(Se selezionate il link qui sopra partirà una ricerca del prodotto su Amazon, così che potete vedere gli ultimi prezzi. Se lo acquisterete Amazon mi riconoscerà qualche punto percentuale e potrebbe essere il vostro modo di dirmi grazie)

I gravi problemi che ho riscontrato sono:

  • Il pulsante di gestione delle chiamate, se premuto quando non sei in conversazione, richiama l'ultimo numero. Questo succede SPESSISSIMO PER ERRORE semplicemente toccando l'oggetto, mettendolo, togliendolo o se si dimentica in tasca senza spegnerlo. Poi quando si vuole chiudere la chiamata, se il chiamante riaggancia prima di te, finisce che lo richiami...
  • Praticamente inutilizzabile quando c'è del rumore di fondo perché non ti sentono... il noise cancellation non pare avere effetti concreti, se c'è.
Per il resto è ottimo, ma non mi soddisfa. Se avete suggerimenti sono bene accetti, anche perché non sono riuscito a trovare recensioni o comparazioni efficaci di questi dispositivi.



lunedì 8 aprile 2013

Risparmiare con il boiler / scaldabagno elettrico

Haimé, la nuova casa in cui abito da qualche mese tra i tanti pregi ha il grande difetto di avere il riscaldamento elettrico dell'acqua, mediante il tristemente famoso bolier elettrico, anche detto scaldabagno ad accumulo. Il classico formato da 80 litri, tondo, verticale, di una buona marca ma non particolarmente orientato ai bassi consumi o e senza autoapprendimento dei consumi.
La bolletta elettrica del primo bimestre è stata di 160€ e, sono sicuro, in gran parte o almeno per 40-50€ è dovuta a lui.

Immagine quadro elettrico con timer
Quadro elettrico realizzato
La prima operazione che ho compiuto già da tempo è stata quella di abbassare la temperatura del termostato: l'inquilino precedente era abbastanza folle da aver girato il termostato al massimo, che faceva letteralmente bollire l'acqua a 100 gradi e se non stavo attento usciva vapore dalla doccia!
Tuttavia la "killer solution" è stata quella di realizzare un piccolo quadro elettrico con un timer settimanale. Al momento ho configurato il dispositivo per accendersi per 2 ore alla mattina dalle 5.30 alle 7.30: questa configurazione è sostenibile nel senso che la temperatura è sempre dal 50% al 60% del range della lancetta, tra mattina e sera, considerato una doccia e qualche lavaggio di piatti.
Questa configurazione va più che bene quando a casa ci sono solo io, cosa che capita purtroppo per parecchie settimane consecutive. Quando mi raggiunge la mia metà è sufficiente alzare il tempo di accensione a 3 ore di ogni mattina, dalle 4.45 alle 7.45. È inoltre presente un deviatore che consente di bypassare il timer qualora si desideri forzare l'alimentazione per aumentare la temperatura o avere acqua calda "fuori orario", tipo quando si aspettano ospiti. Due led, uno giallo e uno verde, mostrano l'attivazione del timer (verde) e lo stato di accensione (o per lo scattare del timer o per l'averlo forzato a mano). Considerata la potenza di 1.3kWh e il funzionamento per 2 ore al giorno in fascia noturna, mi aspetto un costo di utilizzo inferiorei ai 0,40€/giorno, il che fa circa 6 € al mese o 12€ al bimestre, e comunque inferiore ai 20€ portando l'utilizzo a 3 ore/notte. Vi farò sapere se le promesse saranno mantenute.

Lo schema elettrico è piuttosto semplice, quindi non lo allego a meno che mi venga richiesto. Il costo per il piccolo quadro elettrico è stato di circa 110€, presso un grossista di materiale per elettricisti, ed è composto da:

  • timer settimanale digitale DIN;
  • led giallo DIN 220V
  • led verde DIN 220V
  • deviatore DIN
  • box 8 unità DIN


Eventuali vostri commenti o esperienze in merito sono benvenuti.