• [UPDATE] Custom PCBs designed!

    Johnny Stene02/15/2021 at 22:40 0 comments

    I've finished designing the first revision of the PCBs for the development units. This version doesn't have a cellular modem (since the DAC/ADC I'll be using isn't available as an EasyEDA library yet) but it does have a place to add one.

    Of course, the files are available at https://github.com/jhonnystene/PhonePCBs.



  • [UPDATE] More custom dev tools!

    Johnny Stene01/29/2021 at 22:06 0 comments

    One issue I'm having with designing the user interface is that testing it on-device and using a standard photo editor take too long. My solution: Another custom tool!

    This one's called UIDesigner, and does exactly what it says on the tin - creates minimalistic user interfaces in seconds.

    Currently, it's quite limited. You can't "snap" objects in place, so you just have to guess. You can't save your work unless you take a screenshot. On Linux, this isn't a huge issue since our screenshot tools are actually good, unlike SOME operating systems. Luckily for users of those, I'll be adding a proper export feature soon. It can also only do text, which is *almost* everything you need. I'm also going to be adding in lines, for designing menus.

    It's very easy to use. Click which text size you want, type in what you want it to say, and click where it goes. Made a mistake? Click the X in the lower left and then click the text object you want to delete.

    Of course, this is also FOSS - you can download it here.

  • (UPDATE) A custom tool for designing fonts

    Johnny Stene01/24/2021 at 21:03 0 comments

    I was having a bit of trouble with the process of actually making fonts. I have to draw them out (which, as an artistically challenged person, is already pretty hard) and then manually, bit by bit, translate them into the format that arcticOS uses. So, I spent a couple of hours writing FontDesigner - a new development tool specifically for designing fonts that work with arcticOS.

    It's admittedly pretty basic, and doesn't look very good. Luckily, a dev tool doesn't have to look good! It's pretty simple to use. In the top left hand corner, you have the current character in the font you're working on. Next to that is a button to save the font in the FontDesigner format, and a button to export it into the arcticOS format. Below that are two drawing spaces - one for the larger, 32x32 font, and one for the smaller, 16x16 font. The red ring around them should ideally be left blank as that's where the spacing between the letters is. You can hit the left and right arrow keys to move through the various characters in the font.

    It's written in Python, and is completely free and open source! You can download it on GitHub (here) and you'll need to download Python 3.7 and Pygame (how you do this depends on your OS, but it isn't difficult) before you can run it.

  • (UPDATE) Another big chunk rewritten + custom fonts!

    Johnny Stene01/18/2021 at 01:11 0 comments

    I decided that instead of a "generalist" OS and kernel, I want arcticOS to be specific to mobile devices. As such, I rewrote most of the UI code. I also got custom fonts working! The clock font is pretty hefty though, at 7 bytes per character - I'll shrink it soon(TM).

  • (UPDATE) A proper prototype!

    Johnny Stene01/10/2021 at 03:56 0 comments

    I finally have a proper prototype running the same (mostly) hardware that the final phone will be running on! The prototype doesn't have a cellular modem thanks to the lack of properly priced SIM7600 breakout boards, but the devkit will have a modem. This version does have a screen, a keypad, and both CPUs - one for processing and one for interfacing with the display. Sorry I had to post a video, Hackaday just throws errors when I try to upload pictures.

  • (TECHNICAL) The all-new multitasking watchdog!

    Johnny Stene01/09/2021 at 05:58 0 comments

    As part of the rewrite, I'm working on some improvements to the multitasking system in arcticOS. There are two main "threads" - the main thread runs the bulk of the code, and the second thread runs smaller sub-processes. The issue is that these sub-processes can't be interrupted - the only context switching is switching between the main and secondary threads. This means that you need to wait for all of them to finish running before the main thread can continue running. But what if a sub-process takes too long? That's where the new watchdog comes into play.

    If a task takes too long, the new watchdog will wait for it to finish, and then save the position in the process list. Then, it will skip the remaining sub-processes and drop back into the main thread to let it continue executing. The next time the second thread runs, the watchdog will skip to the task after the one that was causing the block, so the rest of the sub-processes can finish running. This lets the main thread get more CPU time in the event of slow processes in the secondary thread, therefore increasing system speed.


  • (UPDATE) Rewriting arcticOS

    Johnny Stene01/09/2021 at 01:39 0 comments

    I am in the middle of rewriting arcticOS. I'm doing this mostly because the existing code is a complete mess. The new code will have a few benefits, like better file organization and more modularity.

  • (TECHNICAL) How the screens will interface with the phone

    Johnny Stene12/29/2020 at 14:52 0 comments

    One issue I've had is that writing screen drivers is kind of difficult - I need to be able to tell the screen what to do, and store fonts, graphics, etc...

    There are already Arduino libraries for tons of displays, but I want arcticOS to be more modular, and having screens require Arduino libraries would immediately break them for something that isn't compatible with some random library.

    Plus, fonts and graphics take up space! In the ATMega chips, program memory and RAM are at a premium. When I tried adding some Arduino libraries to arcticOS (for testing, not for release) my program memory usage shot up from 30% to around 80%, and my RAM was left with less than 200 bytes.

    My solution? Create a standardized screen communication protocol and have a separate board to store fonts and graphics, and handle drawing to the screen. The board will be based on an Arduino Nano (but could be replaced with a Nano for any DIY projects) and shouldn't add too much to the cost. Plus, having a standardized pinout means that screens can be upgraded on phones without needing a new motherboard to interface with the new display. Plus, if I write the UI code properly, it should detect and scale to the new screen without even needing a reflash!

    The new protocol will work over I2C, but I haven't figured out the exact bytes that need to be sent yet. Stay tuned!

  • (UPDATE) December 2020 Update

    Johnny Stene12/29/2020 at 14:40 0 comments

    First, I'd like to say sorry th

    First, I'd like to say sorry that I didn't make my mid-December goal for releasing the OS's source code. I have been having trouble getting the screen driver to work, but I have decided to handle the screen a different way than I have been, so it needs at least a bit of a rewrite. The new method means that drivers will take much less time to write AND the phone will run faster! I will have a version of the OS without the broken screen driver up later today, but it is basically unusable in its current state which I will be working to fix once I've modified my prototype to work with the new screen control system.

    When the OS is in a working state (and the parts I need have arrived) I will be making an easy to follow tutorial on how to build a devkit for arcticOS. It won't have cellular, flash storage, or a keypad, but can still be used for development and testing. Even if you can't code, you can still help with development - bug reports and suggestions are super appreciated!

    I have opened the Hackaday page (https://hackaday.io/project/176575-open-source-minimalist-phone) and will be posting minor updates and technical information there. From there, you can find a link to the GitHub page for arcticOS. I'll be working on getting the proper development hardware ready to show off soon - it will have pretty close to the final featureset and will probably be the first thing I sell (I'll probably sell on Tindie, since it seems to have some sort of Hackaday integration)

    Also, I said on a livestream with u/jbriones95 that I'd most likely have a modular modem/baseband so it could be upgraded later - sadly, I can't do this because it would make the phone too bulky to be comfortable in the pocket. Luckily, the phone will support 4G/VoLTE along with 3G and 2G so it should hopefully last a while. I have been writing the driver for a 3G only modem so far though, so that will need to be ported to the new modem - this is another thing that won't make it into the first alpha release but I'll have an (untested until I get the final dev hardware) driver for 4G up soon.

    One last thing, thanks to the new method of communicating with the screen, I can now offer multiple screen options that can all be compatible with one motherboard! Right now, I am working on a TFT LCD option as well as an E-Ink option. The version with the LCD should still cost around $75 USD. The E-Ink one will be more expensive, but it offers better battery life, and a higher resolution than the LCD. You can always upgrade from the LCD down the line if you'd like, because the screen will be modular.

    at I didn't make my mid-December goal for releasing the OS's source code. I have been having trouble getting the screen driver to work, but I have decided to handle the screen a different way than I have been, so it needs at least a bit of a rewrite. The new method means that drivers will take much less time to write AND the phone will run faster! I will have a version of the OS without the broken screen driver up later today, but it is basically unusable in its current state which I will be working to fix once I've modified my prototype to work with the new screen control system.

    When the OS is in a working state (and the parts I need have arrived) I will be making an easy to follow tutorial on how to build a devkit for arcticOS. It won't have cellular, flash storage, or a keypad, but can still be used for development and testing. Even if you can't code, you can still help with development - bug reports and suggestions are super appreciated!

    I have opened the Hackaday page (https://hackaday.io/project/176575-open-source-minimalist-phone) and will be posting minor updates and technical information there. From there, you can find a link to the GitHub page for arcticOS. I'll be working on getting the proper development hardware ready to show off soon - it will have pretty close to the final featureset and will probably be the first thing I sell (I'll...

    Read more »