tag:blogger.com,1999:blog-13843248956075368652024-03-13T15:05:26.517-07:00Octavian's Internet ThingsRetrogaming, Single Boards, Natural Language Processing, Computer Programming, Software EngineeringMicromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.comBlogger58125tag:blogger.com,1999:blog-1384324895607536865.post-53611862561803649992024-03-13T15:04:00.000-07:002024-03-13T15:04:28.388-07:00Amazon Customer Obsession<p>Amazon removed side stripe and images for "affiliates" so you can't embed pictures in your own web sites anymore that link to the products.</p><p>Amazon likes to say they are customer obsessed, but they really aren't. Its all about Amazon.</p><p>Remember auto rip? Music library? Twitch ad free viewing? All good examples of features people loved but were "marinal" in their returns.</p><p>When I singned up to be an affiliate, I had some folks buy stuff through my links, but I was lazy in setting up my tax info for spifs. So Amazon cancelled my affiliate account because I couldn't sell enough, and then locked me out so I couldn't get the spif payments.</p><p>Amazon is evil. </p>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-90197890198442524012024-03-01T11:12:00.000-08:002024-03-01T11:12:33.133-08:00Day Off FixesToday is a "Global Reset Day" so I took the opportunity to fix some things on the PacMan cabinet.
First, I never hooked up the 2 pin header buttons to the 3 pin sockets - and so re-use the buttons from the original cabinet. After some research, I discovered it is as simple as "forcing" the 2 pin header into the socket leaving pin 3 disconnected. However, these buttons are cheap, and sound terrible side mounted.
Then, my research on audio cables implied I should twist my speaker wires together - braid them - to reduce noise. I did this, and low and behold the hum from the HDMI connector to the speaker disappeared. I was able to remove the lo-hi pass filter and the sound is less muffled.
Important to remember that the Odroid uses HDMI out, so with my last update, I need to reset sound output to the HDMI device. Also important to remember that over driving the ALSA mixer is a very bad idea (and MAME sound, like for Karate Champ, will clip out.)
Good day off.
Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-87496138662746748552024-02-12T10:24:00.000-08:002024-02-15T23:21:25.191-08:00Fixing Galaxian sound on ARM 8 core** updated ** I was wrong about adding a mutex. One of the MAME developers, in pointing out I was wrong, also pointed out what was wrong,
and subsequently fixed the issue <i>and more</i>. See <a href="https://github.com/mamedev/mame/pull/12034">https://github.com/mamedev/mame/pull/12034</a> for details.
<style>
pre {
background: #f4f4f4;
border: 1px solid #ddd;
border-left: 3px solid #f36d33;
color: #666;
page-break-inside: avoid;
font-family: monospace;
font-size: 15px;
line-height: 1.6;
margin-bottom: 1.6em;
max-width: 100%;
overflow: auto;
padding: 1em 1.5em;
display: block;
word-wrap: break-word;
}
</style><pre>
</pre>
</div>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-44590033412945591732024-02-11T21:12:00.000-08:002024-02-11T21:12:33.848-08:004:3 MAME ProjectAfter turning my 1Up PacMan into a MAME cabinet, I wanted to get two more cabinets because I wanted full screen experience for horizontal and square displays in addition to vertical.<div><br /></div><div>I found a Marvel Super Heroes aka Marvel vs Capcom 1Up used for $200 on Facebook Marketplace.</div><div><br /></div><div>When I went to pick it up, I had an unexpected visitor: George.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV43DkFcQsQwBT8hssv7OtbKBNpDrqaSR9dGzQpBM6piysuzrvhZcOzZ-a57TmPHVir9wR0QjnNZJc1mGNBL8HkE8pE1PD623ZhgKyW8ovBHpdUQt7GUGjevUmjXaat92Ns7LVrrtXuPjv_cq2GfjYRDjFUY4ywXCGtxN4qyZSlZ0EYyclvGiJbM8-tvQ/s4032/PXL_20240119_223153320.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV43DkFcQsQwBT8hssv7OtbKBNpDrqaSR9dGzQpBM6piysuzrvhZcOzZ-a57TmPHVir9wR0QjnNZJc1mGNBL8HkE8pE1PD623ZhgKyW8ovBHpdUQt7GUGjevUmjXaat92Ns7LVrrtXuPjv_cq2GfjYRDjFUY4ywXCGtxN4qyZSlZ0EYyclvGiJbM8-tvQ/s320/PXL_20240119_223153320.jpg" width="240" /></a></div><div><br /></div>I set it up in the living room and played a few games with the boy.</div><div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGNBigVzyuibAORoroWH641LIE3u6WaAd4zDGl5oVkQd1XTwaVpxDjvf2VXMEpSKRMCobxJplluLUydVVTNHO6MxAuHU6M9n9dUgT4dP0EXlMaJWc3WQ1BwbuNvUqEoc6Em2xHG0G_TQ8LJjMK6JE-4PlXzyzQ38MlxAqtsgwpH3HMoYFtBJ90evDnGHI/s4032/IMG_20240119_165020_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGNBigVzyuibAORoroWH641LIE3u6WaAd4zDGl5oVkQd1XTwaVpxDjvf2VXMEpSKRMCobxJplluLUydVVTNHO6MxAuHU6M9n9dUgT4dP0EXlMaJWc3WQ1BwbuNvUqEoc6Em2xHG0G_TQ8LJjMK6JE-4PlXzyzQ38MlxAqtsgwpH3HMoYFtBJ90evDnGHI/w240-h320/IMG_20240119_165020_01.jpg" width="240" /></a></div></div><div><br /></div><div>Taking it apart, I noticed the controller looked a lot like a stock USB encoder. I wanted to reuse as much hardware as possible. (I have another project now to revers engineer the encoder.)</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaXbkNswYfS6tRZy_IgjtBHveoCseVKb6ELc8R_OB0ndDtgv4BMY3ihRGCeRqZlpJlkF8enD5dBmq5Yq5ympL1fPMv3VpENYlTMDO3vIYD7X7LQrCVy7hzkIDPPLcmPVBVg4H8QMCj6Hw8AKAO3EsBiWjXCXtU1P6kRMMfq-yYeACEu4D3zoFLOewaafc/s4032/PXL_20240203_192229785.MP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaXbkNswYfS6tRZy_IgjtBHveoCseVKb6ELc8R_OB0ndDtgv4BMY3ihRGCeRqZlpJlkF8enD5dBmq5Yq5ympL1fPMv3VpENYlTMDO3vIYD7X7LQrCVy7hzkIDPPLcmPVBVg4H8QMCj6Hw8AKAO3EsBiWjXCXtU1P6kRMMfq-yYeACEu4D3zoFLOewaafc/s320/PXL_20240203_192229785.MP.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJk15Ie1g0AhbIo6yaYgeAa_B-NcBywV7baohqaDPMaIsbe-rw9ggvJxPgmkkV0ZF1RUfPkBROdUrPg79xSTZJD3qJQkP40BRe0v9l_YMhRSJ5beBKkj482j8miIlLGY66OqsK2J_LlMJaOVRjGOceNdWwPmq2UDSXS3glSUlBQVwDa-h52yJFwtNmMfs/s4032/PXL_20240203_192252740.MP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJk15Ie1g0AhbIo6yaYgeAa_B-NcBywV7baohqaDPMaIsbe-rw9ggvJxPgmkkV0ZF1RUfPkBROdUrPg79xSTZJD3qJQkP40BRe0v9l_YMhRSJ5beBKkj482j8miIlLGY66OqsK2J_LlMJaOVRjGOceNdWwPmq2UDSXS3glSUlBQVwDa-h52yJFwtNmMfs/s320/PXL_20240203_192252740.MP.jpg" width="320" /></a></div><div><br /></div><div>The brain had an on/off switch, and a power outlet (likely for a marquee in other 1Up models).</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdeArR4DFRHqx_BYq7THCNHet8Thyphenhyphen90R8NraJ5U3JKH0p_F6tfQh5gngtLTqfvfknRio7s7V14sexnqyrrzEwfBbuKn_yrrw7FdB75wwUWrh5RMqQVJZI4ExHI4dXpF3TfOALHSR49d_jU5iLkyFTjeF2ssddm0FnSmhLVKfqsFBw4Gl2c4SCvKRe9AZg/s4032/PXL_20240203_193234166.MP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdeArR4DFRHqx_BYq7THCNHet8Thyphenhyphen90R8NraJ5U3JKH0p_F6tfQh5gngtLTqfvfknRio7s7V14sexnqyrrzEwfBbuKn_yrrw7FdB75wwUWrh5RMqQVJZI4ExHI4dXpF3TfOALHSR49d_jU5iLkyFTjeF2ssddm0FnSmhLVKfqsFBw4Gl2c4SCvKRe9AZg/s320/PXL_20240203_193234166.MP.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbwMlKpUBybmg2zmdYtxPmU_zcNfCgJg4Z54Bu9vBy5nMi9GeyriQt7Br4TUEE1mTdhUsZ04FzPlV31LjI0wzJwWV6QNnXRwvttt_03NeOKYMR2IShtsPgwgJYarK7FD63htO1GAhUigauaOfpa4Zq0ZVRHmgJgQkVI90KvZ6mPoG-3T2ilrZum8HjKrs/s4032/PXL_20240203_193521942.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbwMlKpUBybmg2zmdYtxPmU_zcNfCgJg4Z54Bu9vBy5nMi9GeyriQt7Br4TUEE1mTdhUsZ04FzPlV31LjI0wzJwWV6QNnXRwvttt_03NeOKYMR2IShtsPgwgJYarK7FD63htO1GAhUigauaOfpa4Zq0ZVRHmgJgQkVI90KvZ6mPoG-3T2ilrZum8HjKrs/s320/PXL_20240203_193521942.jpg" width="320" /></a></div></div><div><br /></div><div>This is what the logic board looks like (AllWinner effectvely an Android device; note the debug uart pins, the micro USB, and other cool stuff.</div><div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD1N0N58LYXBMbhm7arH8fGE2foqEvWFoEcHzuJiP4LuwaYzSGzfwugv7aexl8CBucqCsAAPn9vWDfnMquePeKgzRMn2ghB9HHtsub7RQsnuVhRLQUZSMLtfEKsVqD6Fcb3Hn0o0S6gdnPaxAaKKjK3ZXYIBd-zInhh-TU3TysGH9gxsHOCuIU4K_g1oQ/s4032/PXL_20240203_230046171.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD1N0N58LYXBMbhm7arH8fGE2foqEvWFoEcHzuJiP4LuwaYzSGzfwugv7aexl8CBucqCsAAPn9vWDfnMquePeKgzRMn2ghB9HHtsub7RQsnuVhRLQUZSMLtfEKsVqD6Fcb3Hn0o0S6gdnPaxAaKKjK3ZXYIBd-zInhh-TU3TysGH9gxsHOCuIU4K_g1oQ/s320/PXL_20240203_230046171.jpg" width="320" /></a></div></div><div><br /></div><div>I wanted to reuse the power and volume buttons on this thing, so all buttons are usable.</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div>As reverse engineering the 1Up encoder will take time, I added two DragonRise USB controller.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0UI4VE5t1HwKSEApbxQN_dGRWW7tF5p8QPO8C-TfPAwBzw4gI-MOalp-oh65LxIw3Lf1TZNpqWGX12hiuKqolAt2XGy4NmUGTqRwjUbW6OnT2qfuyjT5nSFWp2puZbIFMlY85pTkg_jhbmUp8xJRzv0Dla4TM2XR0HtaRVK_iH-tMUxY4kiZvfQAp0gw/s4032/PXL_20240204_182825363.MP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0UI4VE5t1HwKSEApbxQN_dGRWW7tF5p8QPO8C-TfPAwBzw4gI-MOalp-oh65LxIw3Lf1TZNpqWGX12hiuKqolAt2XGy4NmUGTqRwjUbW6OnT2qfuyjT5nSFWp2puZbIFMlY85pTkg_jhbmUp8xJRzv0Dla4TM2XR0HtaRVK_iH-tMUxY4kiZvfQAp0gw/s320/PXL_20240204_182825363.MP.jpg" width="240" /></a></div></div><div><br /></div><div>The joystick is a four button model. The block 4 pin terminus doesn't fit the 5 pin sawa style, so I needed to splice on a couple 2 pin terminus (22 gauge wire).</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_f9tcWg6sH9kAGQ6VO3pqtTwNjSHHDMooeHv6fDk8AMdUEVItEFIBHflEn2eoekCjVcgTglhgIIxdPzDAQ6CG7sEOMGuANHll7CII7fI85LplHb_LYDnmgncVv0F-ED-40JYMdIdWNWLXmKp3uhF6Ox0ualjtdTPDwNwbimuQHDXGQ3OCZBQFGNrD-XQ/s4032/PXL_20240204_182951892.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_f9tcWg6sH9kAGQ6VO3pqtTwNjSHHDMooeHv6fDk8AMdUEVItEFIBHflEn2eoekCjVcgTglhgIIxdPzDAQ6CG7sEOMGuANHll7CII7fI85LplHb_LYDnmgncVv0F-ED-40JYMdIdWNWLXmKp3uhF6Ox0ualjtdTPDwNwbimuQHDXGQ3OCZBQFGNrD-XQ/s320/PXL_20240204_182951892.jpg" width="320" /></a></div><div><br /></div><div>No need to solder when you can use a mini marrette. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJcEB4Bx1g5oGf39LCO3zGpVXL9NBLDee4ULK4aiKRJsZ8GlB-Tx77Z7RJbFgtsSlkWkMZ71urznW6g_XiyPan2vev6YRySh2vj0maJk4CCBTpubvLu_rhK7UhqwPae45Ru7zVJ1XggScaugVGffJJjhmqzNm19FcRg5Dae-5sokwEN2fDYkFzTV50tgs/s4032/PXL_20240205_042950316.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJcEB4Bx1g5oGf39LCO3zGpVXL9NBLDee4ULK4aiKRJsZ8GlB-Tx77Z7RJbFgtsSlkWkMZ71urznW6g_XiyPan2vev6YRySh2vj0maJk4CCBTpubvLu_rhK7UhqwPae45Ru7zVJ1XggScaugVGffJJjhmqzNm19FcRg5Dae-5sokwEN2fDYkFzTV50tgs/s320/PXL_20240205_042950316.jpg" width="240" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1nsH3JjPN634Dnzq2I2B9waLiv51Wu-ICadyxbgMq67Ot2l419KGX-uiF3u7_BurxfPa0i7uBGIZkqE6zAnujkQ3nCVt6lpKa9X9d_sTfGuf-w-shyrjV4nMrFjuozCcrr8qe1I0See2RzOSMvnYKvWvmwTs5olQ57w3a1TnsBZjmPwbdrDRy0RxQoe8/s4032/PXL_20240205_043033471.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1nsH3JjPN634Dnzq2I2B9waLiv51Wu-ICadyxbgMq67Ot2l419KGX-uiF3u7_BurxfPa0i7uBGIZkqE6zAnujkQ3nCVt6lpKa9X9d_sTfGuf-w-shyrjV4nMrFjuozCcrr8qe1I0See2RzOSMvnYKvWvmwTs5olQ57w3a1TnsBZjmPwbdrDRy0RxQoe8/s320/PXL_20240205_043033471.jpg" width="240" /></a></div><div><br /></div>You can split the 3 position switch for volume into 2 x 2 pin terminus.</div><div><br /></div><div><span style="font-family: courier;">+------------+</span></div><div><span style="font-family: courier;">| A | B | C | SWITCH</span></div><div><span style="font-family: courier;">+------------+</span></div><div><span style="font-family: courier;"> | | |</span></div><div><span style="font-family: courier;"> | / \ |</span></div><div><span style="font-family: courier;"> | | | |</span></div><div><span style="font-family: courier;">+-----+ +-----+</span></div><div><span style="font-family: courier;">| 1| 2| | 3| 4|</span></div><div><span style="font-family: courier;">+-----+ +-----+</span></div><div><br /></div><div>Next step was taking apart the speaker assembly to map right and left wires and check the Ohms and Watts on the speakers (8O3W).</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFb-7qSo4U6Wt95eYLseI3eBtoR0nVfimDexREgX48gQ-RAzA5h2JaTYLoxeVtl6YBqzTPTRv-c2HQP_uvAztPzavZSnRMd1J8hqR57Ra0uT4ROnSjHWh_LCoKQFhZbsyP9GmGmsjnfF2AfNAhkGCyItiVrW1Ti7Cut8AvzeogdDMhXij0T-PwjsEEles/s4032/PXL_20240210_201721171.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFb-7qSo4U6Wt95eYLseI3eBtoR0nVfimDexREgX48gQ-RAzA5h2JaTYLoxeVtl6YBqzTPTRv-c2HQP_uvAztPzavZSnRMd1J8hqR57Ra0uT4ROnSjHWh_LCoKQFhZbsyP9GmGmsjnfF2AfNAhkGCyItiVrW1Ti7Cut8AvzeogdDMhXij0T-PwjsEEles/s320/PXL_20240210_201721171.jpg" width="320" /></a></div><div><br /></div><div>So the usual Kinter amplifier will do. Cut off the 4 contact stereo jack and connect to 22 guage wire from the amplifier.</div><div><br /></div><div>I used a modified SVG of my previous J Panel to have two buttons and I moved the amplifier up. Cut with the Epilog laser cutter at work.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyRZCEX43bSGuu7o_XUy0i-XV-wuphl8x5ufSeOmqxWp_-ec0uhWT-BHDLEaORUctVe4NyGg_C_EUgXLwE_wHdAJnxzDwt4fKYbvRDt78Vv-BzyDzWIqUFoc1XpV_yLub5FBsNqyBk6wFkEwMKYsAvU1keC_m9vdKn6b6aPXz-uzRd7nWirNR7ConU49g/s4032/PXL_20240210_201745352.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyRZCEX43bSGuu7o_XUy0i-XV-wuphl8x5ufSeOmqxWp_-ec0uhWT-BHDLEaORUctVe4NyGg_C_EUgXLwE_wHdAJnxzDwt4fKYbvRDt78Vv-BzyDzWIqUFoc1XpV_yLub5FBsNqyBk6wFkEwMKYsAvU1keC_m9vdKn6b6aPXz-uzRd7nWirNR7ConU49g/s320/PXL_20240210_201745352.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div>Using hot glue like last time with a joint to add some strength. Used a grinder to allow the screws to hide flush.<div class="separator" style="clear: both; text-align: center;"><br /></div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW3rAkN_kJoKi90Ys1bad3d_TLw5x4EnleWnIYQ1-pOIVn-haUv9cPX-aQGEbk9hv8zN1UU7xTbOOvQWMTupHFYO4ml1jjCxn-vjZ4qxQiQ6WmTaDHm1XtQhSDSWNVBp4sOfGek8QdnmFzOhvYlF48RFQc_RgDg5y5r8PVgxRUuyW3y0FiumBqXIu1FxU/s4032/PXL_20240210_205027125.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW3rAkN_kJoKi90Ys1bad3d_TLw5x4EnleWnIYQ1-pOIVn-haUv9cPX-aQGEbk9hv8zN1UU7xTbOOvQWMTupHFYO4ml1jjCxn-vjZ4qxQiQ6WmTaDHm1XtQhSDSWNVBp4sOfGek8QdnmFzOhvYlF48RFQc_RgDg5y5r8PVgxRUuyW3y0FiumBqXIu1FxU/s320/PXL_20240210_205027125.jpg" width="240" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd4I5HXvNo4VwOIgWE0ftn9ryeneDsB5Ew0UV3pxKLDR4QvZqAUeXBFhOjuposvc9HOSdyIX2eYRCVxa_Q5JL9NsuswC4ZUfFFG-74iC6YtB7bmf50U7s8OQaU6E9gIavfFnotmoCqnuYprCHgGgx90pnOP7Us_l-eSXq6O27kLUWxNFoNVrvyuzWMqbY/s4032/PXL_20240210_205034948.MP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd4I5HXvNo4VwOIgWE0ftn9ryeneDsB5Ew0UV3pxKLDR4QvZqAUeXBFhOjuposvc9HOSdyIX2eYRCVxa_Q5JL9NsuswC4ZUfFFG-74iC6YtB7bmf50U7s8OQaU6E9gIavfFnotmoCqnuYprCHgGgx90pnOP7Us_l-eSXq6O27kLUWxNFoNVrvyuzWMqbY/s320/PXL_20240210_205034948.MP.jpg" width="240" /></a></div><div><br /></div><div>The buttons are for coin or service (or whatever.)</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOLUmzWvxbAeKMJC5VndxFbEN6E__lUGsWim5fYNV3yyz89Aeb27NOxJ4-v-GrZv_ESFbtLqY_Lkuuit8QMcLX9CdyhKQXUlQNbJGezPPbohg4mzjCfC_aPf9HFN3M1y24YAhlgbtVhcZk5SitTV_N1xB7QUpIospPh5DK_uslzwrGf8J1WD0w-Tg_atE/s4032/PXL_20240210_212726619.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOLUmzWvxbAeKMJC5VndxFbEN6E__lUGsWim5fYNV3yyz89Aeb27NOxJ4-v-GrZv_ESFbtLqY_Lkuuit8QMcLX9CdyhKQXUlQNbJGezPPbohg4mzjCfC_aPf9HFN3M1y24YAhlgbtVhcZk5SitTV_N1xB7QUpIospPh5DK_uslzwrGf8J1WD0w-Tg_atE/s320/PXL_20240210_212726619.jpg" width="240" /></a></div><div><br /></div><div>Here is a video of how to attach the button to the switch.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/Drc-geER5sM" width="320" youtube-src-id="Drc-geER5sM"></iframe></div><div><br /></div><div>A picture of the assembled J Panel.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijkByUxqL65qFueSDjKhZCH1zHC000Mlng2uEHgdGfGWBb3S2QPvMSQitQ5WQradfDHKG1HnqeZ9wpHH9m9yx2tfDz00sX5aA4cVbjFj1srl2qWg1xOBkbhjXCATekULHaAWZDYmDc8cjnzKS7_1kO4WtNrZTtToxrgLMDG5XZiQ3mTVJK0B9TVoD7fPM/s4032/PXL_20240210_213440716.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijkByUxqL65qFueSDjKhZCH1zHC000Mlng2uEHgdGfGWBb3S2QPvMSQitQ5WQradfDHKG1HnqeZ9wpHH9m9yx2tfDz00sX5aA4cVbjFj1srl2qWg1xOBkbhjXCATekULHaAWZDYmDc8cjnzKS7_1kO4WtNrZTtToxrgLMDG5XZiQ3mTVJK0B9TVoD7fPM/s320/PXL_20240210_213440716.jpg" width="320" /></a></div></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHbdpARtnOa4NkcvC455-narQeDmzpcHINoJwRkFomSUG8g69gKdjeoRNYo7TbnR5z40O5Pw-ZU3fSDKub9gBy0TIpPW4pT34cr92NbrCuzWt_H4hexTiPe-i4bN4wUNFjOGcwoDYG_SIHzf-EtTs_igIfF0fH_KggqsqtwDsNLeXjWbrkEEfaBGN95U/s4032/PXL_20240211_203600305.MP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHbdpARtnOa4NkcvC455-narQeDmzpcHINoJwRkFomSUG8g69gKdjeoRNYo7TbnR5z40O5Pw-ZU3fSDKub9gBy0TIpPW4pT34cr92NbrCuzWt_H4hexTiPe-i4bN4wUNFjOGcwoDYG_SIHzf-EtTs_igIfF0fH_KggqsqtwDsNLeXjWbrkEEfaBGN95U/s320/PXL_20240211_203600305.MP.jpg" width="320" /></a></div><div><br /></div>Like last project, I attached the encoders with screws and spacers from poly tubing. I pointed the USB B towards the guts to make room but this was a mistake. The cables molding was way to big and even though I left room, the monitor back panel descended too low and I had to notch two holes for the plugs. (Also don't forget to label left and right wires; I just use colored tape.)</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv8KXb3U5OQfDXsObxvtCScutO-z5WOPlDTaAhMyr_4WWvvQE7wbzZ2zpMxy_pWf_6NyRdHf4C4pnG-tde-oykU-4WlpXzmNOwqK1sQlVPWLZAcwH_LCJ1mbNJG_oHYW003YnKqgJ-6ZrMwd4VjBFX5Eg7C9ESH6WLn7oaFbaKskvkdd55yYRcl9on32I/s4032/PXL_20240211_203437258.MP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv8KXb3U5OQfDXsObxvtCScutO-z5WOPlDTaAhMyr_4WWvvQE7wbzZ2zpMxy_pWf_6NyRdHf4C4pnG-tde-oykU-4WlpXzmNOwqK1sQlVPWLZAcwH_LCJ1mbNJG_oHYW003YnKqgJ-6ZrMwd4VjBFX5Eg7C9ESH6WLn7oaFbaKskvkdd55yYRcl9on32I/s320/PXL_20240211_203437258.MP.jpg" width="240" /></a></div><br /><div>I attached the video controller to a bit of wood so I could hot glue it to the back of the display.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit3p0OoQwlpVGicfYgICGuzNA3fdaApNTDV2kEyghoVjImQdPxD5r9Ou6FiGU2air2Rm-TfJFNh826LzH7xtoPn6sAB84f3O3erOnS6ZxT6BNsOIVEQDn-2-QYXM1X10bIWbqo_-fRWj6SSntt52Cpihmm4HQwwyh5pGjRBQf6TVP8yq5ObCMGuHHk8MQ/s4032/PXL_20240212_005517283.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit3p0OoQwlpVGicfYgICGuzNA3fdaApNTDV2kEyghoVjImQdPxD5r9Ou6FiGU2air2Rm-TfJFNh826LzH7xtoPn6sAB84f3O3erOnS6ZxT6BNsOIVEQDn-2-QYXM1X10bIWbqo_-fRWj6SSntt52Cpihmm4HQwwyh5pGjRBQf6TVP8yq5ObCMGuHHk8MQ/s320/PXL_20240212_005517283.jpg" width="240" /></a></div></div><div><br /></div><div>Secured. Again, poly tube and screws to secure to the wood.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiroUsll1SxGWZj8p-z39UoRS4vSBpJZfJQ65-qkkpheNXoJd2vi3n8VDcwZakhl-ZTQ2IzZ5aZq8OeHLpYs-qQ0wQRc41sbteMXeQ0hVzxGrbFuIsLokQwqnuUsJlo8oERJ14F7cIapywQR9LFJ-frJZ0O8-ooerh-xbZnjHv5DAQsiBGsIiCtsDr7PeE/s4032/PXL_20240212_021248955.MP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiroUsll1SxGWZj8p-z39UoRS4vSBpJZfJQ65-qkkpheNXoJd2vi3n8VDcwZakhl-ZTQ2IzZ5aZq8OeHLpYs-qQ0wQRc41sbteMXeQ0hVzxGrbFuIsLokQwqnuUsJlo8oERJ14F7cIapywQR9LFJ-frJZ0O8-ooerh-xbZnjHv5DAQsiBGsIiCtsDr7PeE/s320/PXL_20240212_021248955.MP.jpg" width="240" /></a></div></div><div><br /></div><div><div>Zippies on all the cables, I also added a shelf for the Geekom Mini I'm using as the brain for this cabinet. I still need to secure the display buttons and mini with a VESA (or bigger zippie).</div></div><div><br /></div><div>So booting the Mini Air 11 (Windows GONE, Ubuntu 22.04 with XFCE4), </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLMEPmQHExD9Y0xACU1KUIqFrRWgfbTOxnIepe6rSTuc_i_9BWGt9ywX8n9rz68kh0crknau_fFEQKOdtbJFN7F2VHT24zmPz7gtzOUUszUnknjrDjrC2-aMFRKaey5EjhobwbICMbjQ09etUQ68YTTQelsc9xJ6BlWBM3oQkjU6ZXs2dn61sviuAOi_U/s4032/PXL_20240212_021432956.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLMEPmQHExD9Y0xACU1KUIqFrRWgfbTOxnIepe6rSTuc_i_9BWGt9ywX8n9rz68kh0crknau_fFEQKOdtbJFN7F2VHT24zmPz7gtzOUUszUnknjrDjrC2-aMFRKaey5EjhobwbICMbjQ09etUQ68YTTQelsc9xJ6BlWBM3oQkjU6ZXs2dn61sviuAOi_U/s320/PXL_20240212_021432956.jpg" width="240" /></a></div><br /></div><div>Attract is fine. (I compile everything from current source.)</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiybkLVysuAq408kzSrQTcgZMJiyy3Mu7rkWHDkDTXAIxh3VZ8p0PC9VPn3snAr_7IXPw0Udhp1Eyl18DYQ59zw-wA4eZby06b137y8cjKvQxElr6LnuU_i5H7azIurhHuygBiPSUv0N7dre3HM7Kac1fCanGMohTVrwpuARCSI-XHwEnCfYXLQD-M3qjI/s4032/PXL_20240212_021537779.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiybkLVysuAq408kzSrQTcgZMJiyy3Mu7rkWHDkDTXAIxh3VZ8p0PC9VPn3snAr_7IXPw0Udhp1Eyl18DYQ59zw-wA4eZby06b137y8cjKvQxElr6LnuU_i5H7azIurhHuygBiPSUv0N7dre3HM7Kac1fCanGMohTVrwpuARCSI-XHwEnCfYXLQD-M3qjI/s320/PXL_20240212_021537779.jpg" width="240" /></a></div></div><div><br /></div><div>JSTest all buttons/switches firing okay (including power and volume). Sound working fine through the headphone jack and amplifier in stereo.</div><div><br /></div><div>And now time to play Tekken 2 with the boy.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgThdqIfkZt1ssokKvStyxzBqGn9QSA2x_UjWB3HEx3SbYQYcc5ZU3fzufhHYheqMSf6sDaYHqnJpbbmo_tv69iVlCPWCK0Oj0-kdTKN0Y4f_wmJkOgSKCzzhn4EiOPHjZ0tN6Fg_6jJ7NVlnhjIc63yhbqSUOjus1WTWR_NDaANXQcuJACl29hCYEoldA/s4032/PXL_20240212_023443485.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgThdqIfkZt1ssokKvStyxzBqGn9QSA2x_UjWB3HEx3SbYQYcc5ZU3fzufhHYheqMSf6sDaYHqnJpbbmo_tv69iVlCPWCK0Oj0-kdTKN0Y4f_wmJkOgSKCzzhn4EiOPHjZ0tN6Fg_6jJ7NVlnhjIc63yhbqSUOjus1WTWR_NDaANXQcuJACl29hCYEoldA/s320/PXL_20240212_023443485.jpg" width="240" /></a></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div>And after... It took about 8 hours to convert the cabinet. Total project cost about $450 (including the 1Up used $200, the Air Mini at $150, and $100 for amp, buttons, 2 encoders...)<div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7pUTaMycmQ5L_slwrM-ONeuJ9WN7o_qCrbSH-q1y3RBWAiHcwbOSOB9yfAqOpFPMjmkNU8APojQcmEJb3S-q1zpsVl2U9xdnu7lKEmEL89swXpxm_h-mybnAHcMCOA4ZkEXJnM35p6006_p4zUCCk3Wc4ml-AhNc_GtlMB1IgJ03lDYZFvWBYZiXlWms/s4032/PXL_20240212_050307075.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7pUTaMycmQ5L_slwrM-ONeuJ9WN7o_qCrbSH-q1y3RBWAiHcwbOSOB9yfAqOpFPMjmkNU8APojQcmEJb3S-q1zpsVl2U9xdnu7lKEmEL89swXpxm_h-mybnAHcMCOA4ZkEXJnM35p6006_p4zUCCk3Wc4ml-AhNc_GtlMB1IgJ03lDYZFvWBYZiXlWms/s320/PXL_20240212_050307075.jpg" width="240" /></a></div><br /><div><br /><div><br /></div><div><br /></div></div>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-79633119731838439532024-01-25T20:42:00.000-08:002024-01-26T11:26:27.171-08:00Youyeetoo R1: First Impressions<h2 style="text-align: left;">Unboxing and Language</h2><div><br /></div>
In my search for multiple core ARM processors in SBCs (I was drooling over AmpereOne's 192 cores), I found a new board called youyeetoo R1. It appears to be an Orange Pi 5 competitor.
Its got a Rockchip RK3588s 8 core, big little (A76/A55) 4 and 4 core and the big cores burst at 2.4GHz. Also like the OPi5, it has a Mali 610 GPU - and more
features that seemed attractive like an NPU (neural processing unit, can do simultaneous operations like you'd want in a neural net firing your activation / objective functions and back propagation weighting adjustments),
and a NFC (Near Field Communication) sensor (that could be used to read you Yubi key, phone, or allow for lil' robot communication if they are in proximity to each other). It also has support for two monitors via MIPI-DSI and HDMI ports. I ordered an 8/64 EMMC with Debian pre-installed so I could play... <div><br /></div><div>It arrived well packaged.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp1a629_RsY1XJnPQRESX9y7Wsg6ERC5adE_envPxvzq8xoYkTVZ5JM8Bb2zVEOZSXfQQXF7L4vbCTI7nEVX-WNpchmklrW1KB71Zv_W6UHZ7Ze1PB71UxGToU1MrovjbfQk0RiotskUr677J0MCXQ8pw2zUdtDPMCP3wQLd77wjK3PM5dykhIRlRoTg4/s4032/PXL_20240113_235837634.MP.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp1a629_RsY1XJnPQRESX9y7Wsg6ERC5adE_envPxvzq8xoYkTVZ5JM8Bb2zVEOZSXfQQXF7L4vbCTI7nEVX-WNpchmklrW1KB71Zv_W6UHZ7Ze1PB71UxGToU1MrovjbfQk0RiotskUr677J0MCXQ8pw2zUdtDPMCP3wQLd77wjK3PM5dykhIRlRoTg4/s320/PXL_20240113_235837634.MP.jpg" width="240" /></a></div><div><br /></div>Double bubble wrap!<div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkgNX0HHHfTrdyq7mLpYa7rMPXEqTxMWsXCAs1Fy7BG7wmcMlS3DNrek37RvthxNkLEK9vB_UqYe_qT8b8vfbXeWln9gtZ6CZzJkEpaNa1d8swOtOJfr15I1kSPPPht-mAz_7A-76c_dDJE73MyO6wMfqeeF-llikeo4mpXxYQ-XB4ywXf_zt05nX_5ts/s4032/PXL_20240114_000003885.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkgNX0HHHfTrdyq7mLpYa7rMPXEqTxMWsXCAs1Fy7BG7wmcMlS3DNrek37RvthxNkLEK9vB_UqYe_qT8b8vfbXeWln9gtZ6CZzJkEpaNa1d8swOtOJfr15I1kSPPPht-mAz_7A-76c_dDJE73MyO6wMfqeeF-llikeo4mpXxYQ-XB4ywXf_zt05nX_5ts/s320/PXL_20240114_000003885.jpg" width="240" /></a></div><div><br /></div><div>And the box wasn't squished in any way.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwFoQrf2HD9EfK19YiHn08cp-AVKkAMLwVOkdhHarAMLb_r9JgeaiwR0u2wmYtQNEbkaiwrgFfoONdHyHFR_23v-Ke0017YU1tWqWfeMGL3bAVODHdWOiSvJ3M4byHoYR9mJPOy8bGuIFevSF_CAOD6PWPFQU3mYq4WGZ2Lro6DuHmAwOGXyNC2b2Ed5I/s4032/PXL_20240114_000022988.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwFoQrf2HD9EfK19YiHn08cp-AVKkAMLwVOkdhHarAMLb_r9JgeaiwR0u2wmYtQNEbkaiwrgFfoONdHyHFR_23v-Ke0017YU1tWqWfeMGL3bAVODHdWOiSvJ3M4byHoYR9mJPOy8bGuIFevSF_CAOD6PWPFQU3mYq4WGZ2Lro6DuHmAwOGXyNC2b2Ed5I/s320/PXL_20240114_000022988.jpg" width="240" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The box confirmed what I bought - though the Wifi module was misleading (it was not included). The power supply was typical 12V 4A barrel tip.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQj42biusbaoJ79w77fe23rWjE7FmoEHBn6_6jqVeF2fzNdOBGXvZPBGGGRSEeiYK3uBZrGIiO8k8qFVN_tihUi0Dn0fcM_jrA2UamcM73J1NipjDH0yBdF05lDNy9j_2_QuvUHNi_eFhEodifWVLXkRa6mJJ4cmZE6Vf-zQuvG0lpcobPvUIA_bz01S8/s4032/PXL_20240114_000031065.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQj42biusbaoJ79w77fe23rWjE7FmoEHBn6_6jqVeF2fzNdOBGXvZPBGGGRSEeiYK3uBZrGIiO8k8qFVN_tihUi0Dn0fcM_jrA2UamcM73J1NipjDH0yBdF05lDNy9j_2_QuvUHNi_eFhEodifWVLXkRa6mJJ4cmZE6Vf-zQuvG0lpcobPvUIA_bz01S8/s320/PXL_20240114_000031065.jpg" width="240" /></a></div><div><br /></div><div>Inside we had a spacer and two anti-static bags.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9b0ygKiwEooYAWRtVCmsN7lTgwoO5JTn_eGz3kM77tdFJfDwD3lC0Y2lbQ4JTws9zR958W0VU33uGLEEqaE5Jzwr2L51NgYiYkTASslsU9DaKLv1v0_jqgo30KlIP2A8NcoliqM_lhyvoM4UShnWlTZ22ECh00NzBU-zlG0O6h5P_qDd7ASdBpGhPjY8/s4032/PXL_20240114_000100556.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9b0ygKiwEooYAWRtVCmsN7lTgwoO5JTn_eGz3kM77tdFJfDwD3lC0Y2lbQ4JTws9zR958W0VU33uGLEEqaE5Jzwr2L51NgYiYkTASslsU9DaKLv1v0_jqgo30KlIP2A8NcoliqM_lhyvoM4UShnWlTZ22ECh00NzBU-zlG0O6h5P_qDd7ASdBpGhPjY8/s320/PXL_20240114_000100556.jpg" width="240" /></a></div><div><br /></div>The board was on top of the heat sink.</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMj4Fay_fCizml8l2EbYhbRHjy0VgjnkKV8h5EcyeOVL57FDm7kvWZ83F8LnMwmDY9CdAkn_agMlSEu-X9rU9TLYB3os-3jK_QUBwSPFztKmNggW_ABJmE8XhwlGa7iLZBOHjb-ymqZy6bCMzYhRL4rfCZmdkQVUK7NTBVrYPHQwns_KoaaEZU64eFZeo/s4032/PXL_20240114_000126731.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMj4Fay_fCizml8l2EbYhbRHjy0VgjnkKV8h5EcyeOVL57FDm7kvWZ83F8LnMwmDY9CdAkn_agMlSEu-X9rU9TLYB3os-3jK_QUBwSPFztKmNggW_ABJmE8XhwlGa7iLZBOHjb-ymqZy6bCMzYhRL4rfCZmdkQVUK7NTBVrYPHQwns_KoaaEZU64eFZeo/s320/PXL_20240114_000126731.jpg" width="240" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Board looked clean.</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: center;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO76o9ifyw7sUSOd5NnCdpUhEkV60CGJJknXh9lnVgVkO5Hi685mRcZ6PEnnmnu_zBYXtOKC0VxmFIF0eTkAD5qw5_ZBsuLVYhL6siIePh1PxSB3QNVX4uBRp8TQQL3q9tDjjuEZ137BtA_LI4wYSNuP6OtawPAbEEosVgmt_JH0Te04-rtZ9p3iLr5Pw/s320/PXL_20240114_000241304.jpg" width="320" /><br /></div><div style="text-align: center;"><br /></div><div style="text-align: left;">The heat sink looks like it blanket covers the CPU and other chips. It came with some thermal double sided tape.</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMKkPcQD37UOCdIJ8wHIdf2C_2YlnYCPJNNCvOxsYANEr7UguG6e5FXvxdYdS-mFbJEr7ZNspRk5L8TUnv13xs30QN76vMdK8hz6J4s0Pf46jpH_kH9Rxb1skxefwt1ofZzXDwSEOdcGerjOn0oxutEiA21FYl69N6SQmwNJWhT7zZhfB0GxBd6w-j68s/s4032/PXL_20240114_000405235.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMKkPcQD37UOCdIJ8wHIdf2C_2YlnYCPJNNCvOxsYANEr7UguG6e5FXvxdYdS-mFbJEr7ZNspRk5L8TUnv13xs30QN76vMdK8hz6J4s0Pf46jpH_kH9Rxb1skxefwt1ofZzXDwSEOdcGerjOn0oxutEiA21FYl69N6SQmwNJWhT7zZhfB0GxBd6w-j68s/s320/PXL_20240114_000405235.jpg" width="240" /></a></div><div style="text-align: left;"><br /></div><div style="text-align: left;">The board is bigger than the Orange Pi.</div></div><div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9oSHOEq5x8UUEYJoaovVDnBK0tugsP1VGbcARvSI3MfEcqQdc8CV3p3GGvf-T8OlcVO54jAQbgmT4yT4Sv_s97DulZLN1_T9G_5_gZIlkr0dlTu5qlt41H_ijIxyw-bVBV5G7siM07Ka4eS_69v4DBHmv-0WNG8hLNr2WKliF1kGhB_t_ebp3Vv4Raig/s4032/PXL_20240114_000525297.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9oSHOEq5x8UUEYJoaovVDnBK0tugsP1VGbcARvSI3MfEcqQdc8CV3p3GGvf-T8OlcVO54jAQbgmT4yT4Sv_s97DulZLN1_T9G_5_gZIlkr0dlTu5qlt41H_ijIxyw-bVBV5G7siM07Ka4eS_69v4DBHmv-0WNG8hLNr2WKliF1kGhB_t_ebp3Vv4Raig/s320/PXL_20240114_000525297.jpg" width="240" /></a></div><div><br /></div><div>I booted it up. To my surprise, it did NOT launch a frame buffer (fb) console. It has U-Boot installed, and apparently dumps its console via serial tty (so if I had a debug serial cable that fit and a FTDI USB adapter, I might be able to watch it boot, and or interact with U-Boot.) See the picture below for the UART debug plug on the bottom of the board (and its #1, so pins are not shared with GPIO block.)</div><div><br /></div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtp8AnJb_cMMx7x8W2lNCd7p7wbcBtY1z5CnLzCn9AU7U2BPAFZ10TdXTCdfKOm3iJ8kM5DYfAgsrd6kAZyk_FK3LWVfBycF4-GBmVkO3XwA9cTW3qopu2XoE8ep96-WAFAyK2ODR6MvP7U9nFztzRofwoPkzwIFki7YVHGQWaGF3SXPY29HjzvkcV-Gs/s4032/PXL_20240114_002217363.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtp8AnJb_cMMx7x8W2lNCd7p7wbcBtY1z5CnLzCn9AU7U2BPAFZ10TdXTCdfKOm3iJ8kM5DYfAgsrd6kAZyk_FK3LWVfBycF4-GBmVkO3XwA9cTW3qopu2XoE8ep96-WAFAyK2ODR6MvP7U9nFztzRofwoPkzwIFki7YVHGQWaGF3SXPY29HjzvkcV-Gs/s320/PXL_20240114_002217363.jpg" width="320" /></a></div><br /><div>So it has a Debian/Linaro build with XFCE4. I like XFCE4. But, I don't read simplified Chinese (though I have about 100 Mandarin/pinyin words in my vocabulary.)</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjw2QN5NksugZ9ZR7jqXhY62OludWIgrEESS0ml3CWjB1MhiwoK_zQge-jWe-_8sOiB0eIsuLUXLQo5pG1uAx8dyGhEZRgpGGHCctOWNboa-N_wiJLTbY5t0c_VOUkvAFBSMf4mTysyvPrMgW0S7Fj1yewOV9NK2JjhwMDuPX0IvFsiaPckwW_8gltTNQ/s4032/PXL_20240114_004648428.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjw2QN5NksugZ9ZR7jqXhY62OludWIgrEESS0ml3CWjB1MhiwoK_zQge-jWe-_8sOiB0eIsuLUXLQo5pG1uAx8dyGhEZRgpGGHCctOWNboa-N_wiJLTbY5t0c_VOUkvAFBSMf4mTysyvPrMgW0S7Fj1yewOV9NK2JjhwMDuPX0IvFsiaPckwW_8gltTNQ/s320/PXL_20240114_004648428.jpg" width="240" /></a></div><div><br /></div><div>So the first step, let's get a language we know. Open a console, and install English.</div><div><br /></div><div><span id="docs-internal-guid-39aa2ae5-7fff-1059-3865-0579f4bdb44f"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">sudo dpkg-reconfigure locales</span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">sudo update-locale LC_ALL=en_US.UTF-8</span></span></p><div><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></div></span></div><div>The first command brings up a CURSES dialog in Chinese, but it is easy to find and select en_US and create the resources. The second command sets the default language to English. You need to `sudo reboot` after this.</div><div><br /></div><h2 style="text-align: left;">Installing Software</h2><div>So we are running a 5.10 kernel. My Orange Pi is pegged at 5.15. My Odroid and other machines are on 6.1.</div><div><br /></div><div>There are a few tools I can't live without. Most important for me are benchmarks, partition managers, developer tools, process monitors, and graphics drivers...</div><div><br /></div><div><span id="docs-internal-guid-74367b3e-7fff-7ebd-1623-d4930717f850"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">sudo apt install xfce4-terminal</span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">sudo apt install gnome-system-monitor</span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">sudo apt install gparted</span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">sudo apt install build-essential</span></span></p><div><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></div></span></div><div>I hit my first glitch. The system is pegged (more on this later). Turns out I needed to force a dpkg and reinstall to get current build-essential.</div><div><br /></div><div><span id="docs-internal-guid-274ecb09-7fff-d2fe-9683-f4c9fbfc2223"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">sudo apt install --reinstall dpkg-dev libdpkg-perl</span></span></span></div><div><br /></div><div>So now I can re-install build essentials. Great. I try chromium browser, and get errors about bad dates and certs. Ok, lets fix the time ISO style.</div><div><br /></div><div><span id="docs-internal-guid-b3ee4204-7fff-bf2d-9fdf-17cd3a853180"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">sudo date -s "2024-01-25 17:15"</span></span></span></div><div><br /></div><div>But I really want to autoset the time on boot - not just for the duration of whatever capacitor is on the board.</div><div><br /></div><div><span id="docs-internal-guid-de41d02a-7fff-b767-ab3b-5df5268d6379"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">linaro@linaro-alip:~$ sudo timedatectl set-ntp true</span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;"><b>Failed to set ntp: NTP not supported</b></span></span></p><div><br /></div></span></div><div>Huh. No NTP? Not good. And I can't install timesyncd as its pegged. So how many packages are locked?</div><div><br /></div><div><div><span style="font-family: courier;">linaro@linaro-alip:~$ apt-mark showhold | wc -l </span></div><div><span style="font-family: courier;"><b>1340</b></span></div></div><div><br /></div><div>No way. Update only told me 96 packages were locked. Now I am worried. Where are the Debian packages actually coming from?</div><div><br /></div><div><span id="docs-internal-guid-186f9142-7fff-cd4e-7554-421946e7764a"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;">linaro@linaro-alip:/etc/apt$ cat sources.list</span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;"><b>deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free</b></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;"><b>deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free</b></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;"><b>deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free</b></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;"><b>deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free</b></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;"><b>deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free</b></span></span><b style="font-family: courier; font-size: 11pt; white-space-collapse: preserve;">deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free</b></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;"><b>deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free</b></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="font-family: courier;"><b>deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free</b></span></span></p><div><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></div><div style="text-align: left;">Now I am worried. I am locked into an unofficial, Chinese repo. This is not uncommon. The Orange Pi is also tied to Huawei. I know we also have Hon Hai / Foxconn SBC. I have heard horror stories (usually about Mini PCs) of all sorts of spyware and malware, usually on "Windows" distributions. I install stock Ubuntu intel from Live USB on all my Minis. It suffices to say, `netstat -epa` and process monitor's network traffic made me feel much better that information was not being sent somewhere I didn't want it to go. However, I could not redirect to official repos (that I can with Korean Odroid.) This makes me unhappy.</div><div style="text-align: left;"><br /></div><h2 style="text-align: left;">Quick Orange Pi Comparison</h2><div style="text-align: left;"><br /></div><div style="text-align: left;">The form factor is slightly bigger. But we have more ports. And we favor one side, that actually isn't bad (as it is more rack friendly.)</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGHiNjCQHqQn5uFUR1srvZJOdw0EY9u65Fmb90dIyT5cHrjJzSiyrPCnGFQugwZSE31FpFIuKFVqLmw393OgKXl6vH-b2mpcP40aIU7V-MahIRZp5tvxYW0zPs6eRrHvtra_Uz-0W3-kFs5-YydWsc5Qt0Zm1UZaDxJG6gPwK5oElIro23cy5TvXdAZ88/s3332/PXL_20240125_005349788.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2164" data-original-width="3332" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGHiNjCQHqQn5uFUR1srvZJOdw0EY9u65Fmb90dIyT5cHrjJzSiyrPCnGFQugwZSE31FpFIuKFVqLmw393OgKXl6vH-b2mpcP40aIU7V-MahIRZp5tvxYW0zPs6eRrHvtra_Uz-0W3-kFs5-YydWsc5Qt0Zm1UZaDxJG6gPwK5oElIro23cy5TvXdAZ88/s320/PXL_20240125_005349788.jpg" width="320" /></a></div><div><span><br /></span></div><div><span>I am irritated by both that we don't have an EMMC socket (like Odroid). This means to flash the EMMC, you need to treat the board like an ADB/USB micro storage device (will cover in another blog).</span></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrzyKQKz5FMjP7pB3B8ZkTAoruFCrNY2t0O5BvdT2v7lHfodvDUWjJpeU8LOu3JeGZvMRLGuoHVBZktBgSG912s7w1ajjHOCgAa4h4RCxsmHF8gSk1EQY_SzoNDQsVp4cdYKWZXlHItnHEzFm79pZzMu5PYNtSgAtWT5SlSGXqlBYD8TbN2H6seYy6-zk/s3908/PXL_20240125_005501246.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1064" data-original-width="3908" height="87" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrzyKQKz5FMjP7pB3B8ZkTAoruFCrNY2t0O5BvdT2v7lHfodvDUWjJpeU8LOu3JeGZvMRLGuoHVBZktBgSG912s7w1ajjHOCgAa4h4RCxsmHF8gSk1EQY_SzoNDQsVp4cdYKWZXlHItnHEzFm79pZzMu5PYNtSgAtWT5SlSGXqlBYD8TbN2H6seYy6-zk/s320/PXL_20240125_005501246.jpg" width="320" /></a></div><div><span><br /></span></div><div><span>On the Orange Pi 5 (that does have a fb console), we only have a power button.</span></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmhYmm5lA1qgGKKz8MBwMHNlU7F9JGedlojDnuPdbACh8oAHmVRJfk6juT54Fgs2u07caCRVir37a7zWX_lNkJF8hQ2ODheMdFPyu4Imi3fxQTpLYatI1xTXsRyJYpEPe9bn7BXPGwjqpI_kGaZ7X4GxA-Y8ahYpDkz5M9ttQMwRrcOjDIbsN9AOtYV78/s1728/PXL_20240125_005537221.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="556" data-original-width="1728" height="103" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmhYmm5lA1qgGKKz8MBwMHNlU7F9JGedlojDnuPdbACh8oAHmVRJfk6juT54Fgs2u07caCRVir37a7zWX_lNkJF8hQ2ODheMdFPyu4Imi3fxQTpLYatI1xTXsRyJYpEPe9bn7BXPGwjqpI_kGaZ7X4GxA-Y8ahYpDkz5M9ttQMwRrcOjDIbsN9AOtYV78/s320/PXL_20240125_005537221.jpg" width="320" /></a></div><div><span><br /></span></div><div><span>But on Youyeetoo R1, we have 4 buttons. From left to right: Reset, Power, Recover, and Boot.</span></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1JQ12XTw5n9SnXr9xRBNhVx04bPS_hvhnh4W98OCTeD9datcOOxesZCRL5p7VmZ1O0t7PRg_-Lr0OxohEGBXIcnFyECQA5GLD864llbgrfYKfVnpMf_3yqZjM7uBdmfQadrR4th_SjF7XxqUr5DF-_C7lzY4hso2tdEmbGk4oj7DZdCHnbdlpIJu-hqg/s3108/PXL_20240125_005555717.MP.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="3108" height="93" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1JQ12XTw5n9SnXr9xRBNhVx04bPS_hvhnh4W98OCTeD9datcOOxesZCRL5p7VmZ1O0t7PRg_-Lr0OxohEGBXIcnFyECQA5GLD864llbgrfYKfVnpMf_3yqZjM7uBdmfQadrR4th_SjF7XxqUr5DF-_C7lzY4hso2tdEmbGk4oj7DZdCHnbdlpIJu-hqg/s320/PXL_20240125_005555717.MP.jpg" width="320" /></a></div><br /><div style="text-align: left;">I have not figured out exactly what the async behind the buttons actually does aside from the obvious (but I will talk about it in another blog post).</div><div style="text-align: left;"><br /></div><h2 style="clear: both; text-align: left;">Quick GL Performance</h2><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">XFCE4 performs well. There is no cursor flicker (like on Le Potatoe). `glmark2-es2` runs okay, but oddly, benched about 760 compared to the Orange Pi 980 at same resolution (it should be the same, right, as it has the same hardware.) There were some odd artifacts with GL, so I suspect the Mali (Panfrost?) driver isn't current. Also, libmali.so, not there, so glmark2 will run with the LLVM pipe (effectively unaccelerated software rendering), that means any game emulators will need to support GLES. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/8oM-rj6wz5A" width="320" youtube-src-id="8oM-rj6wz5A"></iframe></div><br /><div class="separator" style="clear: both; text-align: left;"><br /></div><h2 style="clear: both; text-align: left;">Other Quirks</h2><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">When I tried to get to a fb console via `alt Fx`, the device hung.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">I managed to completely corrupt OS and eventually the root partition... fixing that is for another blog.</div><h2 style="clear: both; text-align: left;"><br /></h2><h2 style="clear: both; text-align: left;">Next Steps</h2><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">My next step is to try build and install Ubuntu, as unfortunately there is not an image. I understand Youyeetoo plans to provide one eventually, but I believe this device is currently not for a casual hobbyist. To do that, the following would need to happen</div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>Baked in GRUB support</li><li>USB boot</li><li>fb console</li><li>Use of official repositories</li><li>Not locking down packages </li></ul></div><div class="separator" style="clear: both; text-align: left;">Note that vendors lock packages to have a stable OS. But this is at the expense of developers. So... </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">I do look forward to continuing to play with the device, in particular its NPU and NFC, however I won't be sticking it in a game cabinet any time soon. It will likely get added to my home-lab rack.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div></span></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div><br /></div>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-21515251757021749662023-12-18T13:30:00.000-08:002023-12-18T14:56:25.460-08:00MAME: Getting Things Working<head>
<meta name="description" content="MAME on ODroid">
<meta name="keywords" content="SBC,ODroid,MAME,Ubuntu">
<meta name="author" content="Bernie Wieser">
</head>
Its frustrating when the games you love don't work.
<ul>
<li> Moon Cresta and Galaxian crash on ARM because of a threading glitch (possibly in discrete.cpp), with an "negative samples" exception because the threads to generate the sound go out of order
</li><li> Tekken 1 and 2 play no sound, and the coin button doesn't work
</li><li> Vector games look like crap (asteroid, star wars, etc.)
</ul></ul>
<h2>Multithreading Issues</h2>
When I turned off optimization, and turned on debugging, the threading issue did not manifest. Its hard to debug. I tried to ask Bard what was up with the code, and it suggested std::launder on the pointers,
that only masked the issue. Then "chuckie_the_egg" on Reddit suggested something brilliant: <I>Set the number of processors to one or two and the problem likely won't happen.</I> And Chuckie was right. 48 hours,
even with mame's debug on, and no crashing. So, in your .mame folder, create a mooncrst.ini and galaxian.ini and add <code>numprocessors 2</code>.
<h2>Compiling for Aarch64</h2>
Chuckie also pointed out that he compiles with <code>-fsigned-char</code> on as this is a key difference between ARM and Intel (gcc vs mscode). I got to thinking, maybe this, and the odd behaviors I was experiencing on games like Tekken are due to this. Decades ago I wrote a uLaw to PCM converter. I know the old Sun Microsystems machines used signed bytes to represent the signed 8 bit audio. Maybe I should care about
tuning MAME for the ODroid N2L too.
In the makefile:
<code>
ARCHOPTS = -fsigned-char -mtune=cortex-a73.cortex-a53 -march=armv8-a
</code>
Wonderful, Tekken 1 and 2 both started working with sound. (Soul Edge does not, so I need to figure out why as it does on Intel.)
<h2>Vector</h2>
This is posted in many places, but vector games at high resolutions lose points and have weak lines. To fix all vector games, created a <code>vector.ini</code> and put this in as it will make
points and lines bigger and brighter:
<pre>
beam_width_min 1.5
beam_width_max 1.5
beam_dot_size 1.5
beam_intensity_weight 1.0
</pre>
Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-33661725629267906762023-07-16T22:27:00.004-07:002023-12-18T13:39:48.047-08:00Geekom Mini-Air 11<style>
pre {
background: #f4f4f4;
border: 1px solid #ddd;
border-left: 3px solid #f36d33;
color: #666;
page-break-inside: avoid;
font-family: monospace;
font-size: 15px;
line-height: 1.6;
margin-bottom: 1.6em;
max-width: 100%;
overflow: auto;
padding: 1em 1.5em;
display: block;
word-wrap: break-word;
}
</style>
<head>
<meta name="description" content="Geekom Mini Air 11">
<meta name="keywords" content="SBC,Geekom,Ubuntu">
<meta name="author" content="Bernie Wieser">
</head>
<h2>Pregame Show</h2>
I thought this would be a good gaming alternative - unlike SBCs this is a mini computer so has all the I/O ports
you need, SD card reader, and expandable SSD and DRAM slots inside. This machine has built in wireless, JasperLake GPU, and 4 core Celeron M5105 @ 2GHz. It does run hot though; and takes 19V 3.42A 65W power (like some Chromebooks). I zapped it with my temp gun, and its 110F (43C), and its "rated" for 50C - with NO load.
<h2>WSL2 Failure</h2>
I tried to use WSL2 server, and after a couple hours gave up, as it seems set for Wayland not X11. It would be more useful if you could install Xubuntu; maybe you can but I gave up.
(Linux support is something Chromebook does right.)
<h2>Windows 11 Must Die</h2>
I installed MAME and other tools and they stuttered. <i>This can't be right,</i> I thought. So given my WSL failure, and that I had to hunt down some older directX kits to get anything working, I said to heck with it - I must install Ubuntu 22 and benchmark with somewhat more apples to apples.
<h2>Installing Ubuntu Pains</h2>
Yes, you hit del to enter BIOS and set the startup device. Using EFI, I had to set to boot from "USB KEY". I had to blow away /dev/sda2 and other Windowsy partitions. I had to reformat the partition in ext4... and it seems the drivers on Xubuntu 22.04 image are not fully compatible with the Air Mini. (The RealTek 8821c driver continue to blow kernel errors, frame errors, and hung several times during install.) After several attempts, and update/upgrades, I managed to get Xubuntu installed and up-to-date/stable. I really don't know why Geekom doesn't have a working image, or sell the devices without Windows...
<h2>Quelle Surprise</h2>
Even though it only has 4 cores, the rendering capability of the device is solid.
<ul><li> geekom-miniair-11: 1378 ($150) </li>
<li>opi5: 975 ($110) </li>
<li>odroid n2l: 509 ($70)</li>
</ul>
So graphics from JSL makes this device 2.7x faster than my N2L, and 1.4x faster than the OPi5 (note not all benches were faster). But, sound emulation is multi-threaded and runs on multiple cores, so the next benches will be more interesting...
yay symetric multi-processing.
<pre>
# uname -a
Linux geekom-MiniAir-11 5.19.0-46-generic #47~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC
# glmark2
=======================================================
glmark2 2021.02
=======================================================
OpenGL Information
GL_VENDOR: Intel
GL_RENDERER: Mesa Intel(R) UHD Graphics (JSL)
GL_VERSION: 4.6 (Compatibility Profile) Mesa 22.2.5-0ubuntu0.1~22.04.3
=======================================================
[build] use-vbo=false: FPS: 1702 FrameTime: 0.588 ms
[build] use-vbo=true: FPS: 2127 FrameTime: 0.470 ms
[texture] texture-filter=nearest: FPS: 1929 FrameTime: 0.518 ms
[texture] texture-filter=linear: FPS: 1898 FrameTime: 0.527 ms
[texture] texture-filter=mipmap: FPS: 1891 FrameTime: 0.529 ms
[shading] shading=gouraud: FPS: 1753 FrameTime: 0.570 ms
[shading] shading=blinn-phong-inf: FPS: 1759 FrameTime: 0.569 ms
[shading] shading=phong: FPS: 1707 FrameTime: 0.586 ms
[shading] shading=cel: FPS: 1689 FrameTime: 0.592 ms
[bump] bump-render=high-poly: FPS: 1272 FrameTime: 0.786 ms
[bump] bump-render=normals: FPS: 2039 FrameTime: 0.490 ms
[bump] bump-render=height: FPS: 2022 FrameTime: 0.495 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1445 FrameTime: 0.692 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 912 FrameTime: 1.096 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1696 FrameTime: 0.590 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 759 FrameTime: 1.318 ms
[desktop] effect=shadow:windows=4: FPS: 1125 FrameTime: 0.889 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 364 FrameTime: 2.747 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 647 FrameTime: 1.546 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 354 FrameTime: 2.825 ms
[ideas] speed=duration: FPS: 1624 FrameTime: 0.616 ms
[jellyfish] <default>: FPS: 1232 FrameTime: 0.812 ms
[terrain] <default>: FPS: 193 FrameTime: 5.181 ms
[shadow] <default>: FPS: 562 FrameTime: 1.779 ms
[refract] <default>: FPS: 326 FrameTime: 3.067 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1541 FrameTime: 0.649 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1547 FrameTime: 0.646 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1545 FrameTime: 0.647 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1534 FrameTime: 0.652 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1534 FrameTime: 0.652 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1578 FrameTime: 0.634 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1597 FrameTime: 0.626 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1595 FrameTime: 0.627 ms
=======================================================
glmark2 Score: 1378
=======================================================
</pre>
Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-65475210993870953262023-07-15T20:24:00.005-07:002023-12-18T13:47:21.398-08:00Orange Pi 5 vs Odroid N2L<head>
<meta name="description" content="Orange Pi 5 vs Odroid N2L">
<meta name="keywords" content="SBC,Orange Pi,Odroid N2L,Ubuntu">
<meta name="author" content="Bernie Wieser">
</head>
Well, on average the OPi5 is twice faster than the N2L. So, though the Odroid community is nice and supportive (where the OPi community is pretty silent), the OPi has clear performance advantages
for retro gaming.
<br/>
<br/>
<div>
<table>
<colgroup>
<col span="1" style="width: 15%;">
<col span="1" style="width: 15%;">
<col span="1" style="width: 15%;">
<col span="1" style="width: 15%;">
<col span="1" style="width: 15%;">
<col span="1" style="width: 15%;">
</colgroup>
<tbody>
<tr><td></td><td colspan=2>
Rockchip RK3588S | 8-core 64-bit processor | Big.Little Architecture: 4xCortex-A76 and 4xCortex-A55, Big core cluster is 2.4GHz, and Little core cluster is 1.8GHz frequency.
| Arm Mali-G610 MP4 “Odin” GPU</td><td colspan=2>
Amlogic S922X Processor (12nm) |
Quad-core Cortex-A73(2.2Ghz) and Dual-core Cortex-A53(2Ghz) |
ARMv8-A architecture with Neon and Crypto extensions |
Mali-G52 GPU with 6 x Execution Engines (800Mhz)</td></tr>
<tr>
<td></td><td colspan=2>Linux orangepi5 5.10.110-rockchip-rk3588 #1.1.6 SMP | Orange Pi 1.1.6 Jammy | 22.04.2 LTS (Jammy Jellyfish)</td>
<td colspan=2>Linux server 5.15.0-odroid-arm64 #1 SMP PREEMPT Ubuntu 5.15.118-202306231801~jammy (2023-06-23) | Ubuntu 22.04.2 LTS | 22.04.2 LTS (Jammy Jellyfish)</td></tr>
<tr><td colspan=5>glmark2 2021.02 | glmark2 Score: </td></tr>
<tr><td></td><td >opi5</td><td> 975</td><td> odroid n2l </td><td>509 </td></tr>
<tr><td colspan=5>OpenGL Information </td></tr>
<tr><td colspan=5>GL_VENDOR: </td></tr>
<tr><td></td><td colspan=2>Panfrost <td colspan=3> Mesa </td></tr>
<tr><td colspan=5>GL_RENDERER: </td></tr>
<tr><td></td><td colspan=2>Mali-G610 (Panfrost) <td colspan=3> Mali-G52 (Panfrost) </td></tr>
<tr><td colspan=5>GL_VERSION: </td></tr>
<tr><td></td><td colspan=2>3.0 Mesa 23.0.0-devel <td colspan=3> 3.1 Mesa 23.2.0-devel (git-68735f4e86) </td></tr>
<tr><td></td><td>FPS</td><td>Frame Time</td><td>FPS</td><td>Frame Time</td><td>Ratio</td></tr>
<tr><td>[build] use-vbo=false</td>
<td>1005 </td><td>0.995 </td><td>532 </td><td>1.880 </td><td>1.89</td></tr>
<tr><td>[build] use-vbo=true</td>
<td>1258 </td><td>0.795 </td><td>658 </td><td>1.520 </td><td>1.91</td></tr>
<tr><td>[texture] texture-filter=nearest</td>
<td>1169 </td><td>0.855 </td><td>678 </td><td>1.475</td><td> 1.72</td></tr>
<tr><td>[texture] texture-filter=linear</td>
<td>1200 </td><td>0.833 </td><td>672 </td><td>1.488</td><td> 1.79</td></tr>
<tr><td>[texture] texture-filter=mipmap</td>
<td>1167 </td><td>0.857 </td><td>688 </td><td>1.453 </td><td>1.70</td></tr>
<tr><td>[shading] shading=gouraud</td>
<td>1172 </td><td>0.853 </td><td>555 </td><td>1.802 </td><td>2.11</td></tr>
<tr><td>[shading] shading=blinn-phong-inf</td>
<td>1156 </td><td>0.865 </td><td>554 </td><td>1.805 </td><td>2.09</td></tr>
<tr><td>[shading] shading=phong</td>
<td>1112 </td><td>0.899 </td><td>498 </td><td>2.008 </td><td>2.23</td></tr>
<tr><td>[shading] shading=cel</td>
<td>1156 </td><td>0.865 </td><td>494 </td><td>2.024</td><td> 2.34</td></tr>
<tr><td>[bump] bump-render=high-poly</td>
<td>917 </td><td>1.091</td><td>340</td><td> 2.941 </td><td>2.70</td></tr>
<tr><td>[bump] bump-render=normals</td>
<td>1251 </td><td>0.799</td><td> 761 </td><td>1.314</td><td> 1.64</td></tr>
<tr><td>[bump] bump-render=height</td>
<td>1269 </td><td>0.788 </td><td>768 </td><td>1.302</td><td> 1.65</td></tr>
<tr><td>[effect2d] kernel=0,1,0;1,-4,1;0,1,0;</td>
<td>1103 </td><td>0.907 </td><td>534 </td><td>1.873</td><td> 2.07</td></tr>
<tr><td>[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;</td>
<td>854 </td><td>1.171</td><td> 228</td><td> 4.386</td><td> 3.75</td></tr>
<tr><td>[pulsar] light=false</td>
<td>1182 </td><td>0.846 </td><td>722</td><td> 1.385 </td><td>1.64</td></tr>
<tr><td>[desktop] blur-radius=5</td>
<td>362 </td><td>2.762 </td><td>215</td><td> 4.651</td><td> 1.68</td></tr>
<tr><td>[desktop] effect=shadow</td>
<td>926 </td><td>1.080 </td><td>592 </td><td>1.689 </td><td>1.56</td></tr>
<tr><td>[buffer] columns=200</td>
<td>455 </td><td>2.198 </td><td>199 </td><td>5.025</td><td> 2.29</td></tr>
<tr><td>[buffer] columns=200</td>
<td>421 </td><td>2.375 </td><td>197</td><td> 5.076 </td><td>2.14</td></tr>
<tr><td>[buffer] columns=200</td>
<td>538 </td><td>1.859 </td><td>229</td><td> 4.367</td><td> 2.35</td></tr>
<tr><td>[ideas] speed=duration</td>
<td>1035 </td><td>0.966</td><td> 376</td><td> 2.660</td><td> 2.75</td></tr>
<tr><td>[jellyfish] default</td>
<td>1011 </td><td>0.989</td><td> 446</td><td> 2.242</td><td>2.27</td></tr>
<tr><td>[terrain] default</td>
<td>71 </td><td>14.085 </td><td>44</td><td> 22.727 </td><td>1.61</td></tr>
<tr><td>[shadow] default</td>
<td>909 </td><td>1.100</td><td> 351 </td><td>2.849 </td><td>2.59</td></tr>
<tr><td>[refract] default</td>
<td>312 </td><td>3.205</td><td> 97 </td><td>10.309</td><td> 3.22</td></tr>
<tr><td>[conditionals] fragment-steps=0</td>
<td>1168 </td><td>0.856</td><td> 680</td><td> 1.471</td><td> 1.72</td></tr>
<tr><td>[conditionals] fragment-steps=5</td>
<td>1134 </td><td>0.882</td><td> 670</td><td> 1.493 </td><td>1.69</td></tr>
<tr><td>[conditionals] fragment-steps=0</td>
<td>1148 </td><td>0.871 </td><td>675</td><td> 1.481 </td><td>1.70</td></tr>
<tr><td>[function] fragment-complexity=low</td>
<td>1137 </td><td>0.880</td><td> 663 </td><td>1.508 </td><td>1.71</td></tr>
<tr><td>[function] fragment-complexity=medium</td>
<td>1148 </td><td>0.871 </td><td>676</td><td> 1.479 </td><td>1.70</td></tr>
<tr><td>[loop] fragment-loop=false</td>
<td>1155 </td><td>0.866</td><td> 659</td><td> 1.517 </td><td>1.75</td></tr>
<tr><td>[loop] fragment-steps=5</td>
<td>1149 </td><td>0.870</td><td> 685</td><td> 1.460 </td><td>1.68</td></tr>
<tr><td>[loop] fragment-steps=5</td>
<td>1147 </td><td>0.872</td><td> 664</td><td> 1.506 </td><td>1.73</td></tr>
</tbody>
</table>
</div>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-44155059161281351612023-07-14T23:31:00.002-07:002023-12-18T13:54:27.068-08:00Orange Pi 5...<style>
pre {
background: #f4f4f4;
border: 1px solid #ddd;
border-left: 3px solid #f36d33;
color: #666;
page-break-inside: avoid;
font-family: monospace;
font-size: 15px;
line-height: 1.6;
margin-bottom: 1.6em;
max-width: 100%;
overflow: auto;
padding: 1em 1.5em;
display: block;
word-wrap: break-word;
}
</style>
<head>
<meta name="description" content="Orange Pi 5">
<meta name="keywords" content="SBC,Orange Pi,Ubuntu">
<meta name="author" content="Bernie Wieser">
</head>
So I picked up an Orange Pi 5. I am writing this blog with it. "Orange Pi 5 uses Rockchip RK3588S new generation 8-core 64-bit processor, quad-core A76+quad-core A55, with 8nm process design, up to 2.4GHz main frequency, integrated ARM Mali-G610 GPU, embedded high-performance 3D/2D image acceleration module, built-in NPU with 6Tops computing power." I snagged the 8G version as that is reasonable for game emulation.
<br/>
<br/>I was mildly disappointed in a couple things.
<br/>
<ol><li> No emmmc memory But it does have an SSD slot. I snagged a fast 1T sdram so I am not concerned. </li>
<li>5V/4A. That's right. 4A. Most of the USB C power supplies I have are 3A. I suspect 4A is a requirement when you have all the components attached (i.e. an SSD). So I am using a 3A, but will get a juicier power supply. </li></ol>
<br/>
<br/>I am a fan of Ubuntu, so I snagged the server image via the orangepi.org and https://github.com/Joshua-Riek/ubuntu-rockchip/releases/tag/v1.14.
<br/>
I always snag the server image so I have less junk installed/to remove.
<br/>
<br/>I then encounted the same pain-point with regard to wireless adapter support. My AE6000 wasn't supported but an older 2.4 RTL8188CUS was kicking around so I got connected after the usual battle with manually setting up netplan.
<br/>
Then I installed xorg, xfce4, and chromium. X11 started without issue.
<br/>
<br/>But as soon as I installed mesa-utils and ran glmark2... <i>What the hell do you mean software rendering?</i> Where is my Mali-G610 driver?!
<br/>
This resulted in much anger and finding little interesting on the web. But I did find some pointers...
<pre>
sudo apt install mali-g610-firmware
sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
sudo apt update
sudo apt upgrade
</pre>
Thank you LiuJian you are a hero!
<br/><br/>
So now its off to run some benchmarks!Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-78934883349213857232023-06-05T19:52:00.003-07:002023-06-05T21:35:32.979-07:001Up Arcade Mod: Demo of Kiosk FCEUX (NES)<style>
pre {
background: #f4f4f4;
border: 1px solid #ddd;
border-left: 3px solid #f36d33;
color: #666;
page-break-inside: avoid;
font-family: monospace;
font-size: 15px;
line-height: 1.6;
margin-bottom: 1.6em;
max-width: 100%;
overflow: auto;
padding: 1em 1.5em;
display: block;
word-wrap: break-word;
}
</style>
<head>
<meta name="description" content="FCEUX Arcade Retro Cabinet">
<meta name="keywords" content="FCEUX,Arcade,Retro,Gaming">
<meta name="author" content="Bernie Wieser">
</head>
<a href="https://youtu.be/UmicHw0gVrU">The Demo</a> of nothing more classic than Super Mario Bros (that I own the cart, a NES, two NES classics).
<div class="separator" style="clear: both; text-align: center;"><iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="UmicHw0gVrU" width="400" height="322" src="https://www.youtube.com/embed/UmicHw0gVrU"></iframe></div>
<p>
Using Ubuntu 22 with SDL2 Qt5, if I set full screen mode while using any window manager, I do get full screen. However, if I launch with only X11, the max window size is not set, and the position is unknown. This manifests as a non-resizable SDL window with the original pixel dimensions of the console. Changing/flipping the fullscreen mode does nothing, as you will not get a resize event without a window manager.
</p><p>
My fix in Qt ConsoleWindow.cpp is to ask SDL for its current device height and width (doesn't need a window id, because we don't have a valid one yet) and then set the origin and dimension to device extents. (This assumes we have one device.) If I am not fullscreen, I use whatever was previously saved in the config. Paste this code in the <code>./drivers/Qt/ConsoleWindow.cpp</code>
file over where it gets the window size from the config.
</p><p>
<pre>
SDL_DisplayMode mode;
int err = SDL_GetCurrentDisplayMode(0,&mode);
g_config->getOption( "SDL.Fullscreen", &setFullScreen );
if( setFullScreen )
{
xWinPos = 0;
yWinPos = 0;
xWinSize = mode.w;
yWinSize = mode.h;
}
else {
g_config->getOption( "SDL.WinPosX" , &xWinPos );
g_config->getOption( "SDL.WinPosY" , &yWinPos );
g_config->getOption( "SDL.WinSizeX", &xWinSize );
g_config->getOption( "SDL.WinSizeY", &yWinSize );
}
if ( (xWinSize >= 256) && (yWinSize >= 224) )
...
</pre>
</p><p>
this allows me to directly launch fceux with <code>startx</code>
</p>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-65681747352712029882023-05-30T08:23:00.006-07:002023-05-30T08:29:43.185-07:001Up Arcade Mod: Powering the CabThe ODROID is recommended 12V 2.5a. The LCD is recommended "same as 1Up power" that is 12V 2.0a. The amp is also 12V 3.0a. However, having multiple transformers (power adapters)
just creates heat and cabling mess. Putting in an industrial rectifier is more my style, but not so simple, and I don't need different voltages. And, I learned the hard way, that the amplifier draws more than 2 amps, and the ODROIOD can't satisfy a wifi nub, remote keyboard nub, the 4 port mini hub, and the two joystick/button decoders that in turn power .5 amp worth of button LEDs. I figured I was about 2 amps short of power.
<center>
<a href="https://www.amazon.com/gp/product/B07WNNHRQQ?ie=UTF8&th=1&linkCode=li2&tag=omdi02-20&linkId=e4c58913132b63f2dcfae31b9d5e126c&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07WNNHRQQ&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B07WNNHRQQ" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<br/>
<a href="https://www.amazon.com/SmartQ-Expander-Transfer-Splitter-Compatible/dp/B09PTVSMLB?crid=3I9U67EANIH79&keywords=usb+hub+3+top+1+side&qid=1685459785&s=electronics&sprefix=usb+hub+3+top+1+sid%2Celectronics%2C173&sr=1-28&linkCode=li2&tag=omdi02-20&linkId=dbda0aa157a9032c27dbd8b2a538fff8&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B09PTVSMLB&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B09PTVSMLB" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br/>
<i>very close to what I had, and I didn't have luck with the independant powered hubs</i>
<br/>
<a href="https://www.amazon.com/KINTER-MA170-2-Channel-Amplifier-Treble/dp/B07C1Q1FPT?crid=2VTW33RD3BSIW&keywords=stereo+amp+kinter&qid=1685459954&s=electronics&sprefix=stereo+amp+kinter%2Celectronics%2C156&sr=1-3&linkCode=li2&tag=omdi02-20&linkId=3696eed0a58115de1890a45b77337e65&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07C1Q1FPT&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B07C1Q1FPT" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</center>
I replaced the 3' USB A - USB B cables with 1' versions.
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpOwsaSBHVmp9dZXoS-XSM1V1akgAgqOTNYR9q9zLUSWCTTx2zyxuVX_N_1qvZ6YErwWuExbSaDlCPkATcfC36eWy7AzYhE2z5abAaD9e2t9JOMY8vQMqn4AowmI0bG2Lop6bT2DOAAARMhUF-rPtw5o6g_0BQlF4wOU4MGfyE8cECN4RTMMBojcP6/s3824/placement.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="1836" data-original-width="3824" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpOwsaSBHVmp9dZXoS-XSM1V1akgAgqOTNYR9q9zLUSWCTTx2zyxuVX_N_1qvZ6YErwWuExbSaDlCPkATcfC36eWy7AzYhE2z5abAaD9e2t9JOMY8vQMqn4AowmI0bG2Lop6bT2DOAAARMhUF-rPtw5o6g_0BQlF4wOU4MGfyE8cECN4RTMMBojcP6/s320/placement.jpg"/></a></div>
So, I found a 12V 10a power supply typically used in home security systems, and a 3 way splitter. I re-used the extension cable for the 1Up. Plenty of juice.
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8JuiI1wNrkdobxLbI6GLTS-xn2KMso-IYPDfXAeM-QYfzGxrTcKgkNUz6PWJePm1WfYchdhyBp-BaJtXS_FfilQTT328mHHKnf0E5eDmoZZweBvxMydLEGtpRrebK5VOPekvkR8XkNL39yZSM72CTrge6GlhnXnA7uLkRI0xsOmzHzJjiqKdjOsLp/s2912/under-lit.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="1868" data-original-width="2912" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8JuiI1wNrkdobxLbI6GLTS-xn2KMso-IYPDfXAeM-QYfzGxrTcKgkNUz6PWJePm1WfYchdhyBp-BaJtXS_FfilQTT328mHHKnf0E5eDmoZZweBvxMydLEGtpRrebK5VOPekvkR8XkNL39yZSM72CTrge6GlhnXnA7uLkRI0xsOmzHzJjiqKdjOsLp/s320/under-lit.jpg"/></a>
<br/>
<center>
<a href="https://www.amazon.com/dp/B01MG6T9XP?psc=1&linkCode=li2&tag=omdi02-20&linkId=972cc73cc70c8c336a8d9e05b8ebd993&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B01MG6T9XP&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B01MG6T9XP" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<br/>
<a href="https://www.amazon.com/dp/B07MXXXBV8?psc=1&linkCode=li2&tag=omdi02-20&linkId=e83be787fa5c16b53142b4a619c4c7ae&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07MXXXBV8&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B07MXXXBV8" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</center>
</div>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAaMlfTxjKU_B0yOaA5-15XJLnbEpe-rNYZXs6RTiZi_RscYXTfoFw2hrwPy7w99NiErBZGi7np2heQAijc2d-leneMj6B81ocv-NHuL9ApBL08CyZOWA481sZQKFG1haofni7XdGy2PrnKMt7riUxWXXucP1zzRdSxyl5QWFTrXbodjeBiEK1aM1G/s1597/under_on.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="825" data-original-width="1597" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAaMlfTxjKU_B0yOaA5-15XJLnbEpe-rNYZXs6RTiZi_RscYXTfoFw2hrwPy7w99NiErBZGi7np2heQAijc2d-leneMj6B81ocv-NHuL9ApBL08CyZOWA481sZQKFG1haofni7XdGy2PrnKMt7riUxWXXucP1zzRdSxyl5QWFTrXbodjeBiEK1aM1G/s320/under_on.jpg"/></a></div>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIbeYIVfdGiCvENl4AvB9TURDjdpSrN3DzDqBsSgM8H6XOcBuQnZZ_LHXyB7_VHSxUlWS90CA2VdEgeI182KNnLxxw6zRztdgUXSXjgGI9d-YMhnUG61ppMe1yU00cJsacCp7nSsSSHBCNLDe81GJu1wjUdaGu3iGqP8tdav_iZUJaHbJiTL_UBQS9/s612/video.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="320" data-original-height="612" data-original-width="531" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIbeYIVfdGiCvENl4AvB9TURDjdpSrN3DzDqBsSgM8H6XOcBuQnZZ_LHXyB7_VHSxUlWS90CA2VdEgeI182KNnLxxw6zRztdgUXSXjgGI9d-YMhnUG61ppMe1yU00cJsacCp7nSsSSHBCNLDe81GJu1wjUdaGu3iGqP8tdav_iZUJaHbJiTL_UBQS9/s320/video.jpg"/></a></div>
And here is the finished, powered cabinet in use.
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA--qxKLooynMTUxaR_gNKGLK8M7d3sPps0QwArV_nd6U7K3Nxaqr6HVHPV4tfGNfQD3B5x7XYP0mttHeozlhYBaBXlbuOP1waEaFyVxnUzLA3YP-YlA-nXq_SqSPXFrDJrQWoIA7l2HTSIEwl3rBpAAsuimMXQhOy9XHph9pnKJ_mfpZjCNxD5-qH/s4032/PXL_20230506_200219333.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="3024" data-original-width="4032" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA--qxKLooynMTUxaR_gNKGLK8M7d3sPps0QwArV_nd6U7K3Nxaqr6HVHPV4tfGNfQD3B5x7XYP0mttHeozlhYBaBXlbuOP1waEaFyVxnUzLA3YP-YlA-nXq_SqSPXFrDJrQWoIA7l2HTSIEwl3rBpAAsuimMXQhOy9XHph9pnKJ_mfpZjCNxD5-qH/s320/PXL_20230506_200219333.jpg"/></a></div>
Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-39362677223272213542023-05-29T20:20:00.001-07:002023-05-29T20:32:59.576-07:001Up Arcade Mod: Displays, MAME and X11 Linux<style>
pre {
background: #f4f4f4;
border: 1px solid #ddd;
border-left: 3px solid #f36d33;
color: #666;
page-break-inside: avoid;
font-family: monospace;
font-size: 15px;
line-height: 1.6;
margin-bottom: 1.6em;
max-width: 100%;
overflow: auto;
padding: 1em 1.5em;
display: block;
word-wrap: break-word;
}
</style>
<head>
<meta name="description" content="MAME Arcade Retro Cabinet">
<meta name="keywords" content="MAME,Arcade,Retro,Gaming">
<meta name="author" content="Bernie Wieser">
</head>
<h1>ODROID</h1>
I use a 6 core 4G ODROID, with 128G EMMC and 128G SD storage, because its pretty zippy.
<center>
<a href="https://www.amazon.com/Odroid-N2L-Plus-Power-Adapter/dp/B0BNGR8MH3?keywords=ODROID&qid=1685416912&sr=8-16&ufe=app_do%3Aamzn1.fos.006c50ae-5d4c-4777-9bc0-4513d670b6bc&linkCode=li2&tag=omdi02-20&linkId=f0a41f10fe6e45c8013e896350c816d5&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0BNGR8MH3&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B0BNGR8MH3" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></center>
<br/><br/>
<h1>Getting the Right Ubuntu</h1>
You don't need nor want a lot of Operating System or Windowing overhead if you just want gaming emulation.
It makes sense that you want to squeeze every cycle out of your CPU, and not waste them on over-processing.
So, because the stock Ubuntu 22 runs on the 4.9 Kernel on ODROID, we have a problem: the Mali GPU driver
isn't supported for OpenGL. We need 5.* or later and the Bifrost video drivers. And we want a minimal
Window manager - in fact we want a server build (no X11) to start with and only install the minimum
amount of XWindows to save on space (and time). And, you really want to use the GPU - not just the framebuffer
and software rendering (that is ... slow).
<br/>
<br/>
Fortunately, to_better has these linux builds for ODROID.
<a href="http://docs.linuxfactory.or.kr/">
http://docs.linuxfactory.or.kr/</a> has lots of great advice and images for a server tuned Ubuntu on ODROID.
You can grab
<a href="http://ppa.linuxfactory.or.kr/images/raw/arm64/jammy/ubuntu-22.04-server-odroidn2l-20221115.img.xz">
ubuntu-22.04-server-odroidn2l</a>, and use <a href="https://etcher.balena.io/">Etcher</a> on Windows or
Linux to write the image to SD CARD or EMMC.
<pre>
odroid@server:~$ uname -a
Linux server 5.15.0-odroid-arm64 #1 SMP PREEMPT Ubuntu 5.15.110-202305030140~jammy (2023-05-02) aarch64 aarch64 aarch64 GNU/Linux
</pre>
I wanted a fast disk, so I got the EMMC card from ODROID,
but I needed to blast the new image with this cool little adapter:
<center>
<a href="https://www.amazon.com/eMMC-Module-Reader-Board-upgrade/dp/B074HQ4QHF?hvadid=647176302411&hvpos=&hvnetw=g&hvrand=1026255467604730631&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9033289&hvtargid=pla-766945713532&psc=1&gclid=Cj0KCQjwmtGjBhDhARIsAEqfDEcYthHQqXzGxaxOXcBnDPioSAMb8rbUygvcvqcWC8jgf0a5LZUZqHwaAlCEEALw_wcB&linkCode=li2&tag=omdi02-20&linkId=6816d3f8298fcd32e1ac49bb75659279&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B074HQ4QHF&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B074HQ4QHF" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</center>
<I>Note I nerfed my boot EMMC several times, and it is possible to hack the /boot boot.scr file to swap the devno to bootstrap from the EMMC but launch from the SD card.
But this is another story... and its easier just to get the EMMC adapter to flash new images / edit files.</I>
<br/>
<h1>Updating the Linux Kernel to Support Rotate</h1>
I face a challenge in that the PacMan display is portrait (so height > width). Once I attached the
video card, and booted, the world was sideways.
Also, the video logic board is in Chinese, so there wasn't a "hardware" configuration change I could see.
The folks at HardKernel fixed the kernel to support
console rotation ( see the
<a href="https://forum.odroid.com/viewtopic.php?f=176&t=46729">ODROID forum</a> ) - you'd need to
install this kernel if you want to rotate the frame buffer.
<br/>
<h1>A Light Weight Window Manager</h1>
Once you have your Linux, you can install a light weight Window manager to make life easier should you choose - like I do -
to be more than a kiosk. xfce4 should install what you need for bare bones X11.
<pre>
sudo apt install xserver-xorg-core xfce4
</pre>
If you just want a kiosk, then some suggest <code>openbox</code> or <code>ratpoison</code>.
<br/>
The next step is telling X11 you want to be rotated too. After starting xfce4, open your display settings,
and select <code>left</code> under rotation. This <i>should</i> stay rotated, but I think there is a
glitch somewhere that when screen savers or power savers kick in, the screen will rotate back.
It is an issue with xfce4 / window manager as I don't have this issue when I run as a kiosk (described later.)
<br/>
<h1>Building the Emulator Front End and Emulators</h1>
<I>Getting into the details of building tools is not here - there are many pages that instruct folks how
to build the tools you use.</I> Remember to move your compiled code to a place like
<code>/usr/games</code> after executables are compiled. Also, the config files for both MAME and Attract
will be in your $HOME directory (as whatever user you work under). Don't run X11 or the these applications
as root (but you likely should build them as root.)
<br/><br/>
You should make sure you turn on swap before compiling and linking MAME, as 4G may not be enough to compile
fully with optimization, so I recommend creating an 8G swap.
<pre>
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo echo "/swapfile none swap sw 0 0" >> /etc/fstab
</pre>
<br/><br/>
<h2>Attract</h2>
I used <a href="https://github.com/mickelson/attract">
attract-2.6.2</a> aka Attract Mode as my front end because it is simple and easy to configure.
<h2>MAME</h2>
I used <a href="https://github.com/mamedev/mame">
MAME 2.5.4</a> as my machine emulator. The documentation isn't great for Linux but you can get
what you need to <a href="https://docs.mamedev.org/initialsetup/compilingmame.html">compile MAME</a>.
Note that MAME on X11 uses Simple DirectMedia Layer (SDL) for input, output, and the MESA OpenGL shim.
My <code>makefile</code> turns on the following compile options:
<pre>
NOWERROR = 1
OSD = sdl
SDLMAME_X11 = 1
OPTIMIZE = 2
TARGETOS = linux
</pre>
that you can then use with a <code>make -j6</code> to use all 6 cores (takes a few hours to compile
full MAME.)
<br/><br/>
If you, like me, like to play and optimize code, MAME doesn't do a good job cleaning up after
itself, so you will need to do this from the MAME source directory:
<pre>
make clean
rm -rf `find . -name *.gch -print`
rm -rf `find . -name *.a -print`
</pre>
to prevent "symbol not found" type errors if you fiddle with optimizations and headers.
<br/>
<br/>
<h1>Autostart to Kiosk, XFCE4 or Shell</h1>
There are several ways you can get linux to start an application instead of gettty terminal.
I wanted to still log in, but after log in, auto run attract to be a kiosk. So, a .bash_profile
is the trick to prompt what to do or timeout and just run attract!
<pre>odroid@server:~$ cat .bash_profile
read -t 10 -p "1) shell 2) xfce4 or do nothing and launch as kiosk: " v
if [[ $? -gt 128 ]] ; then
startx ./headless.sh
else
case "$v" in
[1])
;; # dont exit as it will quit the shell
[2])
startxfce4;;
*)
echo "Huh?? I think you mean exit.";;
esac
fi
</pre>
This script does on of three things when the user logs in.
<ul>
<li>exit to console shell</li>
<li>start xfce4 as a Window Manager</li>
<li>just launch attract without a Window Manager under X11 if the user doesn't enter 1 or 2</li>
</ul>
<br/>
<br/>
The script I use to start as a kiosk:
<pre>
odroid@server:~$ cat headless.sh
xrdb -merge $HOME/.Xresourcesii &
xrandr --output HDMI-1 --panning 0x0+0+0 --fb 0x0 --rotate left &
xset s off && xset -dpms &
xfconf-query -c xsettings -l &
attract
</pre>
Translating into english,
<ul>
<li>attach fonts and whatnot I might set from the Window Manager</li>
<li>rotate the display left, resetting the pan and framebuffer, and output to HDMI-1</li>
<li>turn off screen saver and power management (I use Attract's screen saver)</li>
<li>dump out my settings and run attract</li>
</ul>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-33848311848662039752023-05-29T12:17:00.003-07:002023-05-29T12:17:32.476-07:001Up Arcade Mod: Adding Video
<head>
<meta name="description" content="MAME Arcade Retro Cabinet">
<meta name="keywords" content="MAME,Arcade,Retro,Gaming">
<meta name="author" content="Bernie Wieser">
</head>
Screwed onto the LCD is a small tin box. Inside this is the game board. (Interestingly,
1Up sands off the identifying information on the chips.) Detach the power and video cables from the 1Up board.
<h1>Installing the Video Board</h1>
Buy a video logic board to decode HDMI and sound for your ODROID. If you don't have an ODROID, and your single board has a mini stereo out, you can use that instead of the audio decoder on the video board. I got the video board below with the two EPROMS. You can discard this driver board as you don't need it (you just need the decoder and LCD driver card - the one with the HDMI or VGA inputs).
<br/>
<center>
<a href="https://www.amazon.com/VSDISPLAY-Controller-T215HVN01-0-LM238WF5-SSA1-SLE31920x1080/dp/B07HD3JCK2?crid=9O0IIALWAN2V&keywords=video%2Bboard%2Bfor%2Blcd%2Bscreen&qid=1685312994&sprefix=video%2Bboard%2Bfor%2Blcd%2Bscreen%2Caps%2C171&sr=8-6&th=1&linkCode=li2&tag=omdi02-20&linkId=9f355e2cd57eea4cafec04d2c4ed3aaf&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07HD3JCK2&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B07HD3JCK2" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a href="https://www.amazon.com/GeeekPi-Controller-HSD190MEN4-1280x1024-Arcade1Up/dp/B084NWYRX4?_encoding=UTF8&pd_rd_w=oZlPI&content-id=amzn1.sym.bc5f3394-3b4c-4031-8ac0-18107ac75816&pf_rd_p=bc5f3394-3b4c-4031-8ac0-18107ac75816&pf_rd_r=HY16B4TRPVG5BVBRRVEP&pd_rd_wg=ybbhP&pd_rd_r=9d0ca098-8ced-4fdf-9629-f36f3a5a73f8&linkCode=li2&tag=omdi02-20&linkId=8fcf49ec5ecb231a65d1f2c0ab166431&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B084NWYRX4&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B084NWYRX4" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></center>
<br/>
Note that you should try install this as low as possible on the front panel that the LCD is mounted to so the cables to the SBU and amplifier can be short. To avoid RF interference, you should not attach this video controller to the LCD.
I did, because the cable was not long enough from the LCD - so I attached a wooden mount with hot glue.
<br/>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioH3UzOx5q75Quw5bf6CSab1AdyaZgV-4qmFiYfY7QyrFA43zmHQPg2Ukn9WmbI1AhSwMiyLCAAZ5ytaVIMnj1D-XqbvXrkqQtgZIZnM_bmqTvKu1uNQOqg0eu5L57-nh0tnLAMY1jD9z0JY5q8jxceBOxJcXwv9VtidplUi31SIcf44WQTa5hGqdC/s612/video.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="320" data-original-height="612" data-original-width="531" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioH3UzOx5q75Quw5bf6CSab1AdyaZgV-4qmFiYfY7QyrFA43zmHQPg2Ukn9WmbI1AhSwMiyLCAAZ5ytaVIMnj1D-XqbvXrkqQtgZIZnM_bmqTvKu1uNQOqg0eu5L57-nh0tnLAMY1jD9z0JY5q8jxceBOxJcXwv9VtidplUi31SIcf44WQTa5hGqdC/s320/video.jpg"/></a></div>
<br/>
I used 1/4" polyethelene tubing (125degF) as a spacer, cut to 1/4 sections, as finding spacers was (a PITA), its workable, and strong (like bone). Also, polyethelene is a very weak conductor of electricity (or restated its a good insulator).
<br/><center>
<a href="https://www.amazon.com/EZ-FLO-98584-Polyethylene-Tubing-clear/dp/B08SQ6HX69?crid=1C96YOKPTD2SM&keywords=1%2F4+polyethylene+tubing+everbilt&qid=1685386180&sprefix=1%2F4+polyethylene+tubing+everbuilt%2Caps%2C184&sr=8-2&linkCode=li2&tag=omdi02-20&linkId=c4427fd9d383dc3af2542109560d420c&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B08SQ6HX69&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B08SQ6HX69" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></center>
<br/>
My temperature gun tells me the video controll runs about 90 degF, so it does not need specific cooling, nor does it present a fire risk to the 1/2" wood mounting board..
<h1>Plugging It In</h1>
A decent short (18") HDMI cable can run from the video board to the SBC.
<br/><center>
<a href="https://www.amazon.com/Highwings-Braided-Cord-Supports-ARC-Compatible-Ethernet/dp/B07ZB3K5D8?crid=Y17QCFHL21PJ&keywords=18%22+hdmi+cable&qid=1685387327&sprefix=18+hdmi+cabl%2Caps%2C191&sr=8-3&linkCode=li2&tag=omdi02-20&linkId=969cee9bcab99d910155cd8ec4823f2c&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07ZB3K5D8&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B07ZB3K5D8" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<br/>
<a href="https://www.amazon.com/3DMakerWorld-ODROID-N2L-with-4GByte-RAM/dp/B0BWFSVZYJ?crid=1Q2FJC4EVDP79&keywords=hardkernel+n2l&qid=1685381535&s=electronics&sprefix=hardkernel+n2l%2Celectronics%2C172&sr=1-2&ufe=app_do%3Aamzn1.fos.f5122f16-c3e8-4386-bf32-63e904010ad0&linkCode=li2&tag=omdi02-20&linkId=be74bd626d5ddc8d8e9cf591fd10fcb2&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0BWFSVZYJ&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B0BWFSVZYJ" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</center>
<h1>Attach the Audio</h1>
I don't like clutter and the longer the analog audio cable the more chance for noise, so I used an 18" stereo mini to RCA cable to connect to the amplifier. Plug this into the video logic board.
<center><a href="https://www.amazon.com/Nanxudyj-Nylon-Braided-Smartphone-Audiophiles-Headphone/dp/B08C98KS8F?crid=PUJE8B0DBC8E&keywords=stereo+mini+to+rca+1.5%27+cable&qid=1685381725&s=electronics&sprefix=stereo+mini+to+rca+1.5%27+cable%2Celectronics%2C153&sr=1-3&linkCode=li2&tag=omdi02-20&linkId=477ca14bff63df9550af4286e0a3ec7e&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B08C98KS8F&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B08C98KS8F" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</center>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-30113572044411964312023-05-04T23:41:00.002-07:002023-05-22T13:46:27.549-07:001Up Arcade Mod: Adding Speakers and Amplifier<head>
<meta name="description" content="MAME Arcade Retro Cabinet">
<meta name="keywords" content="MAME,Arcade,Retro,Gaming">
<meta name="author" content="Bernie Wieser">
</head>
The 1Up has a slat directly under the joystick panel on an angle. It is about 1/4" thick and its coated with some laminate and 460mm W by 180mm H. I measured out the speakers (80mm D), amplifier (100mm W 40mm H) and the old buttons from the PacMan (1" D about 28mm D). (Inspect the page if you want this template for your laser cutter. You will see a scale factor for mm to pt and the measurements are in mm. It's hand coded SVG.)
<center>
<svg viewbox="0 0 460 180" xmlns="http://www.w3.org/2000/svg">
<g transform="scale=(2.83465)">
<circle cx="70" cy="90" r="40" stroke="black" stroke-width="1" fill="none"></circle>
<circle cx="390" cy="90" r="40" stroke="black" stroke-width="1" fill="none"></circle>
<rect height="40" width="100" x="180" y="110" stroke="black" stroke-width="1" fill="none"></rect>
<circle cx="180" cy="46" r="14" stroke="black" stroke-width="1" fill="none"></circle>
<circle cx="280" cy="46" r="14" stroke="black" stroke-width="1" fill="none"></circle>
</g>
</svg>
</center>
I went to the maker room at work and cut the board. The laser had issue with the laminate, so we had to run it 3 times.
<p/>
I like recycling, so I had an old <a href="https://www.insigniaproducts.com/pdp/NS-PCS40/9402274">Insignia NS-PCS40</a> pair of desktop speakers. I didn't find the speaker specifications,
aside from it using a power adapter that output 12V and 700mA load. When we ripped the speakers appart (doh, screws behind the fabric), I found they were
4 Ohm 40 W. The amplifier I bought, the Kinter MA 170, would have no problem powering those...
<center>
<a href="https://www.amazon.com/KINTER-MA170-2-Channel-Amplifier-Treble/dp/B07C1Q1FPT?pd_rd_w=qgFaB&content-id=amzn1.sym.de57aa3b-fa0b-416e-9843-604da2a420b7&pf_rd_p=de57aa3b-fa0b-416e-9843-604da2a420b7&pf_rd_r=Z73G95H94J454F0FNB0N&pd_rd_wg=3cZsP&pd_rd_r=1432356e-3093-4d87-9f2f-00c23c112492&pd_rd_i=B07C1Q1FPT&psc=1&linkCode=li2&tag=omdi02-20&linkId=df9c034f835e9bd3bd90d0251f478621&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07C1Q1FPT&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" /></a><img alt="" border="0" height="1" src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B07C1Q1FPT" style="border: none; margin: 0px;" width="1" />
</center>
So if you want an inexpensive set of speakers, you can try these
<center>
<a href="https://www.amazon.com/Gikfun-Speaker-Stereo-Loudspeaker-Arduino/dp/B01CHYIU26?crid=S96ZR86VDA6X&keywords=ohm+40+watt+for+arduino&qid=1683265809&sprefix=ohm+40+watt+for+arduino%2Caps%2C156&sr=8-4&linkCode=li2&tag=omdi02-20&linkId=e4b260aa7bf3392814ea6eab0d81a5cb&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B01CHYIU26&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" /></a><img alt="" border="0" height="1" src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B01CHYIU26" style="border: none; margin: 0px;" width="1" />
</center>
I debated using hot glue or expoxy. At least with hot glue, a heat gun can help fix a mistake. But expoxy is permanent, so I used hot glue.
<center>
<a href="https://www.amazon.com/Gorilla-100426-Full-Size-Glue-Orange/dp/B087418ZDN?crid=1YY2HRI8MZGRA&keywords=gorilla+hot+glue+gun&qid=1683267680&sprefix=gorilla+hot+glue+gun%2Caps%2C190&sr=8-3&linkCode=li2&tag=omdi02-20&linkId=02e4be6652e565e33de07cab828ad0d9&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B087418ZDN&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B087418ZDN" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</center>
The issue with the hot glue is it is not compressible. So I ended up with 1-2mm of gap between the speaker mount and the faceplate board. Here is the result
<p/>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv43VkWAfgoC1BUA2shFsPnB49I2jtBtWzH3xQRi8sZOwafhUuQJHwfmBlL9KHRL_BeSObmHWKS5K8HlDtwCY5yHO6o4TAhikiRowqbbtVLloEAfdhPHgAbWQ0MWbJKQUMoMZJv9jPmmKbaUFQwJvYilxPa9HYDdqVhAJa_QOiaqEgDgFsMjjgrWmm/s4032/PXL_20230424_010122518.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="3024" data-original-width="4032" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv43VkWAfgoC1BUA2shFsPnB49I2jtBtWzH3xQRi8sZOwafhUuQJHwfmBlL9KHRL_BeSObmHWKS5K8HlDtwCY5yHO6o4TAhikiRowqbbtVLloEAfdhPHgAbWQ0MWbJKQUMoMZJv9jPmmKbaUFQwJvYilxPa9HYDdqVhAJa_QOiaqEgDgFsMjjgrWmm/s320/PXL_20230424_010122518.jpg"/></a></div>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUpzGxd4zz47gdutyPluRG_apuqJTX4vESbJChDj5Mqg2Nwogg-aKPESr2rcjUbI5PMQtBHLqKonuX5MyOlFvlTUA6-aYpM4ePKUn4dD_-47wfMsafCPwZCVFGvjvFFYeM45c9leXY3aYWwW7Pv8Z-aeRbruzsVQSZkpF_1mfDSCNXJwLZYIPut_qR/s4032/PXL_20230424_010247767%20%281%29.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="320" data-original-height="4032" data-original-width="3024" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUpzGxd4zz47gdutyPluRG_apuqJTX4vESbJChDj5Mqg2Nwogg-aKPESr2rcjUbI5PMQtBHLqKonuX5MyOlFvlTUA6-aYpM4ePKUn4dD_-47wfMsafCPwZCVFGvjvFFYeM45c9leXY3aYWwW7Pv8Z-aeRbruzsVQSZkpF_1mfDSCNXJwLZYIPut_qR/s320/PXL_20230424_010247767%20%281%29.jpg"/></a></div>
<p/>
However, the final product was almost perfect. I just needed to use my dremmel to make notches for the arcade buttons. My plan for them is to connect them to the GPIO on the Odroid and use them for
restart or shutdown. Almost - means that in hind sight I should lower the buttons by 3/4" because I miscalculated the USB hub position and height for when USB cables are plugged in! I was lucky in that I could position the cables around the button and still use the wiress network and keyboard adapters.
<p/>
I added 1/2" angle brackets under the amplifier with hot glue to give it more stability. Again, hindsight tells me I should have raised the amplifier box by 1/4".
<center>
<a href="https://www.amazon.com/3DMakerWorld-ODROID-N2L-with-4GByte-RAM/dp/B0BWFSVZYJ?crid=2FQWIVAT95FQ9&keywords=odroid+n2l&qid=1683267997&sprefix=odroid+n2l%2Caps%2C193&sr=8-3&ufe=app_do%3Aamzn1.fos.f5122f16-c3e8-4386-bf32-63e904010ad0&linkCode=li2&tag=omdi02-20&linkId=1ca194043a92aef6596cb5a8779071b4&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0BWFSVZYJ&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B0BWFSVZYJ" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</center>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-59799019578843546992023-05-04T22:29:00.002-07:002023-05-04T22:29:25.535-07:001Up Arcade Mod: Fixing the Sound
After assembling my cabinet, I noted a lot of feedback (noise, or humm) through the amp. I tried a few tricks to isolate the noise, but I am not done yet. Often this is caused by some circuit (bit of electronic equipment) being grounded, or slightly "out of phase" because they're on different power suppies - though everything I have is grounded and on the same power supply.
<ul>
<li> changed/shortened the audio cable from the video card to the amp
</li><li> change the position of the power cables and power supply
</li></ul>
This did not work. So I ordered some ferrit clips and this "Ground Loop Noise Isolator" from Amazon.
<center>
<a href="https://www.amazon.com/dp/B0171PQLB8?psc=1&linkCode=li2&tag=omdi02-20&linkId=5eb31877c6f50192174556d464772c38&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0171PQLB8&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" /></a><img alt="" border="0" height="1" src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B0171PQLB8" style="border: none; margin: 0px;" width="1" />
</center>
It absolutely eliminated the hum! But it also cuts the high and low frequencies, so the sound is a bit muffled. However, until I can really isolate the noise, it is very livable.<div>
<br />Originally I had an unshielded stereo mini to RCA cable that was 3 ft. Way too much cable and I want a tidy cabinet - and limit noise. I replaced it with a shielded 1.5 ft cable - so I have less clutter but it was not the source of the hum.
<center>
<a href="https://www.amazon.com/dp/B08C98KS8F?th=1&linkCode=li2&tag=omdi02-20&linkId=3ccdfcd5615eab20e3306bc58c5038ae&language=en_US&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B08C98KS8F&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=omdi02-20&language=en_US" /></a><img alt="" border="0" height="1" src="https://ir-na.amazon-adsystem.com/e/ir?t=omdi02-20&language=en_US&l=li2&o=1&a=B08C98KS8F" style="border: none; margin: 0px;" width="1" />
</center></div>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-33225091895086014882023-03-31T17:07:00.002-07:002023-03-31T17:07:28.125-07:00Adventures in Chromebook Land<p>Today I was inspired to take apart my old chromebook that used crosh and crouton to get a feux linux.</p><p>
<a href=https://cb-linux.github.io/breath>Breath</a> - inspired me to find
<a href=https://wiki.archlinux.org/title/HP_Chromebook_14>where the write protect screw was</a> and crack the machine to remove the screw to install linux a la
<a href="https://www.ifixit.com/Guide/How+to+convert+a+generic+Chromebook+to+Linux+OS/108259">this way</a>.
</p>
<p>
Mostly I am seriously annoyed that my single boards are so fragile when it comes to GPU support, wifi USB support, and pretty much I spend all my time configuring Ubuntu when all
I want to do is build my arcade cabinet.
</p>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-82292666515141774912022-01-02T10:56:00.002-08:002022-01-02T10:56:38.229-08:00Bye 2021 - Hello 2022<h1 style="text-align: left;"><span style="font-size: x-large;"> Happy New Year</span></h1><div><br /></div><div>Looking back on 2021, I think its safe to say it was more bad than good for many of us. But looking at the good,</div><div><ul style="text-align: left;"><li>Got through COVID / Made many new friends</li><li>Started cancer treatment / Finished cancer treatment</li><li>Started new job / Learned some cool ML stuff</li><li>Went to Cancun and to celebrate many things </li><li>Confirmed remission / Cleared tp get out "the port"</li><li>Spent a lot of time with family</li></ul></div><div>When I was <i>sick</i> I made some promises to the universe</div><div><ul style="text-align: left;"><li>Give back to family</li><li>Give back to the universe</li><li>Give back to spirit</li></ul></div><div><br /></div><h3 style="text-align: left;">Give Back To Family</h3><div>All the amazing support from family and friends, including new friends, I believe helped me through the ordeal. "Never give up, never surrender." It made me realize how important we all are to each other, and how interconnected we are, even when we're distant. A thought, little gesture, or kind words can mean so much. Be kind. Be compassionate. Be empathetic. Let avarice and wrath flee from your mind like darkness in sunlight. Love everyone.</div><h4 style="text-align: left;"><br />Give Back to the Universe</h4><div>We live in such a beautiful reality. It's creative. It's organized. Be respectful to everything. Set, sort, shine, standardize and sustain. Order and simplicity evolved from chaos and complexity; and the marvelous irony that chaos sprang from nothing. "Pure energy" became material as it lost energy. It came together again only to get so complex it exploded into new material. And that organized again. From plasma to hydrogen; from hydrogen into the periodic table; from atoms to molecules; from molecules to enzymes; and enzymes to everything <i>alive. </i>The stoics "mind fire" and Bergson's "creative evolution". Love everything.</div><div><br /></div><h4 style="text-align: left;">Give Back to Spirit</h4><div>Its unfortunate we get caught in ruts and lose sight of the special things that make us unique. We stop using our gifts. Let's make music. Let's play games. Let's do crafts. Make time to find joy and expand your mind - and get that feeling of euphoria and calm that just comes from knowing you are expanding your spirit and being positive. Do the things you love; love the things you do. Love yourself.</div><div><br /></div><h2 style="text-align: left;">2022</h2><div>Going into 2022, I made a few more promises to myself and I've started to fill some promises.</div><div><ul style="text-align: left;"><li>I started rock polishing. My goal is to explore at least one gem trail with my wife. Turn a rock into a gemstone.</li><li>I will no longer be silent. "Silence like a cancer grows." This is true in all things but especially true when it means "do the right thing" and "don't be a bystander."</li><li>Cherish the life I've been given. Effectively I have a second chance, and its time to stop treating my body like a neglected dump. I don't know if I can get chiseled, but I can try get healthy.</li><li>I want to be fluent in Spanish before the end of the year. </li><li>I want to learn martial arts with my kids and play more creative "brain" games like D&D.</li><li>I want to have a patent with my new employer before the end of the year (that contributes something really cool to technical fabric.)</li><li>I want to get frickin organized and stay that way.</li></ul></div><div><br /></div><div><br /></div><div><br /></div>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-60130017336340107682021-06-23T18:30:00.001-07:002021-06-23T18:30:35.252-07:00Philips TV UPnP Fills Devices on Windows NO MORE
Oh my, it took me forever to figure this out... My Philips TV keeps changing its registration ID via UPnP and fills up my Windows device lists. Once I'd go into regedit and clean these up - but just so many. Now I've automated it.
<code>FOR /F "tokens=2* delims= " %i in ('"pnputil /enum-devices /class {14b62f50-3f15-11dd-ae16-0800200c9a66} | findstr /c:"Instance ID:""') do pnputil /remove-device %j</code>Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-10386273391957789462020-04-18T14:05:00.000-07:002020-04-18T14:49:58.861-07:00Cortana Skills are GoneWell, it is over.<br />
<br />
Cortana is dead.<br />
<br />
In February, Microsoft killed third party skills. Though you can skill invoke the bots, the interface from Windows or Invoke is dead.<br />
<br />
So the question is ... now what. Relaunch the skills I have as plug ins for Teams chat? Or just wait... continue to build on Google Actions.
<br>
<br>
Update: I spent 5 minutes and hooked the bot webchat to the Art of War and Mediations pages. So... at least you can still see the botframework part in action!Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com2tag:blogger.com,1999:blog-1384324895607536865.post-18948827410228091992020-02-24T13:13:00.000-08:002020-02-24T13:13:02.200-08:00How to Stop Groove from SkippingUgh. 2019 was a bad year for music players.<br />
<br />
Thanks Amazon for fracturing the music player landscape. When I drank the cool-aide, I jumped onto Music Player, and then saw the death of Auto-Rip, Personal Music Subscriptions, etc.<br />
<br />
By that time it was too late to go back to iTunes, that is now dead.<br />
<br />
And I had moved to Groove to play from cloud, and play my library on XBox, but Microsoft killed that. <br />
<br />
And in Microsoft's rebirth of Windows, there are other quirks. Ever notice Groove player skips 30-40 seconds into a song on local media? Want to know why? Well, the file is in-use of course - if you back your music up to One Drive. How to listen to music without constant skipping? Well, turn off One Drive sync of course. Or at least pause it while you listen to music.<br />
<br />
<br />
<br />
<br />
<br />
<br />Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-52759672535407625952020-01-29T18:13:00.001-08:002020-01-29T18:13:36.661-08:00Inside the Arcade1up PacManI received PacMan for Christmas. I had a lot of fun, until the joystick up stopped working.<br />
<br />
I had been thinking about moding it. Some YouTube videos implied it could be done, that the ROMs on the board included Asteroids and Galaxian.<br />
<br />
Sure enough, when I replaced the joystick Arcade1Up sent as replacement, the controller nest has the label saying "Galaxian, Pac Man, Space Invader" and room for a fire button P1-A. I have not cracked the logic board connected to the display yet, but it might be tweakable if true.<br />
<br />
<center>
<img src="https://lh3.googleusercontent.com/bHeUjW3oiVpZMOKe13GF7532FficrIi4p9DuqDu4NpyQV82PXZUhnuzdxpfyOtBociZK7R9MoPuj2rHQgZ_JGDND4G1Bct7ToD4aHZBHe8rYliH-SlWY0_IdyHPJ3vsNEN2Mjr7U4evMScqxuzxgibsQGwUukAvkVJPBdGTwquZi87gV-_ditlbCtfpdlMO5Yno77I9eZmv3AuCRkuctr1cTICJqu4MfalEiC_3j_ahF47E4GRFViFgbDnOlxTrJ0-pzSxSEJRDyxU7m4P5IsvpF9zca5CqA0A4HOW9PAodhpKlRr2IBEdRG3riOyiIhEvZRMKu2mt8S_nGD1BXfBxb3IoII2vFoJ2puZ0X4k0I0jYRvqYnMiSZQdfJvHcGSoHrjbrjyxGF6FSBEJGQW_SQx06KGyVxAUm9w1cgW44YZ5YP7GPjLdttIaM-ZXjkLhrv9v4cDET9uDbsLJ96jFr2TxvRgwNQux3s7h-UA4V8ss5TmqgpN2wE3qI9P4cJqdfmQNDClVaLPK4vna4mx7F-uLeUB2nSDoVjGQgu7pEtbkwP9B9-H2x_QpXCP6BCGyiSdWSQVuqtuMHuXbSzylKrkTbCC1bYO87YFBsIhXPNlmAhkP8KrckSp-bvoMzTmscLYz0OVw_xyrFlGExgx2_KTNFT3gWmZiKbUMnk6YYLz7IY5CFi6xy4=w1250-h937-no" width="75%" /><br />
<br />
<img src="https://lh3.googleusercontent.com/ZbZLPIjXrBJ3erVpEemk_vGEQn8MVVfmpD0_hXfBeWGyfjTFBrHmatfIMQ8-qY18iEHX6xrV6-nft-_vP1Taq-iRUVbdUWc0negZ7QFvWsDcSLS4hSv76HAf4m7iufLxdxWeQG4sbIX9gJnTp4eK-GjjaH_T2uzffIK9TN3fB_6IUzetKn07TbE4Ia8iAqDaQOkS4_3Utw-34_6_nJq8ntEflZG6W8Rltqazxa8P0IynfsVAhXtvfl41fwoLorppL6fE7tS0oMUBXFk1LTgdtZPYT9Yurr_5rqs7ez3KbAU8bLbZidMfepG0zACfsUMN-MAZNsXxxIZp1oYuue9fqczL-6n9OOG2d5z-n8Gx6gtUjEWfb-jRFzD0e5lCmZvl7J2bUwL0pdVF-Mehvgqx8pN4Q7gE8EJi1xWciSbOf_897dHDMGgeSP659xJoXSR08kRzFfEqY71niS7uv0VK0ZJL1WdxLEfBrfS5Gy53FPshmWd_fCBEAz-3mOvxPyB1KiY8mtsCuQ0Wfo-ewLN9EElrwqbscunjehupiubwD1gkg-aJmYeZmoVmiEwApOPwFz9ShsE_XHmNJYf5jg8b0CEZKOTFp0rcBg5z37oOr8UaChOClM8zD8mXxdCIFivXfoXPXoY3cYuIxEJE0s2IDt_P1HOYDJTeNcJg5i1dOwYvNB6uDGnrGuk=w1250-h937-no" width="75%" /><br />
<br />
<br />
</center>
Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-78009550719145208892019-10-22T07:43:00.000-07:002019-10-22T07:43:20.682-07:00Media, White Hats, and Black Hats<br />
<br />
<a href="https://arstechnica.com/information-technology/2019/10/alexa-and-google-home-abused-to-eavesdrop-and-phish-passwords" target="_blank">ARS Technica</a> has an article with detailed instructions on how to record information, or fake phishing, using Alexa and Google Assistant. It is a blueprint of how to build rogue skills that pass certification but do naughty things. I know at Microsoft, one of the last things Cortana did was implement developer vetting. It irritates me that articles like this, that have good intentions, not only expose holes to black hats, but make real developers lives harder.Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-85197838017903201752019-09-12T10:33:00.000-07:002019-09-12T10:35:27.880-07:00When CERTS expire...Today I noticed my SSL cert expired. I received notice mid-July, but as with everything, I checked if everything still worked at that time - it did - so conveniently forgot.<br />
<br />
This meant likely yesterday, my webs server anounced it was not secured, and all my Cortana skills stopped working with an obscure error message stopped working. (The error message buried at the bottom of the message was [bot service response null].)<br />
<br />
So I fixed it by<br />
<br />
<ul>
<li>downloading my new cert</li>
<li>figuring out how to use psftp to upload them to my server given I'd obfuscated sshd configuration</li>
<li>uploading my new crt files and moving them to /etc/ssl/certs</li>
<li>updating the various entries in /etc/apache2/sites-available conf files that pointed at the cert</li>
</ul>
<div>
So all the Cortana skills are running again. I am surprised that the automated tests Microsoft runs didn't send me a nasty email saying I was down. Ah....</div>
<div>
<br /></div>
<div>
<br /></div>
Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-64309587540504157832019-09-09T11:40:00.000-07:002019-09-09T11:40:20.744-07:00Debug C# Cortana Skill Locally<div class="separator" style="clear: both; text-align: left;">
I added a video on how to create a Skill in the cloud, compile it there, then suck it back to a desktop, set debug break points, and continue to debug locally.It doesn't have commentary yet, but I'll get to it.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/e1g0MoRx_hg/0.jpg" src="https://www.youtube.com/embed/e1g0MoRx_hg?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0tag:blogger.com,1999:blog-1384324895607536865.post-52182479714088723972019-08-29T14:53:00.001-07:002019-08-29T14:53:51.718-07:00Teach Your Kids to Code
Today at work we had Bring Your Kids who got an Hour of Code....
Teaching your kids to code! Super cool.
They started here...<a href =
https://studio.code.org/s/aquatic/stage/1/puzzle/1> Minecraft </a>.
And now I get to send them here...
<a href=
http://www.robotodyssey.online > Robot Odyssey </a>.
Right on.Micromuncherhttp://www.blogger.com/profile/01940423313467529111noreply@blogger.com0