www.openmoko.
www.openmoko.com Federal Communication Commission Interference Statement This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to Part 15 of the FCC Rules. These limits are designed to providereasonable protection against harmful interference in a residential installation.
www.openmoko.com Chapter 1 Free Your Neo1973 OpenMoko is an Open Source project to create the world's first free mobile phone operating system. The OpenMoko project is a community that anyone can join, and help to design their ideal phone. The Neo1973 from FIC is the first of many phones that OpenMoko will run on. The long term goal of OpenMoko is that phone software will no longer be tied to one phone. You can buy any compatible phone, and install any software over the whole range of phones.
www.openmoko.com g. Battery h. SD-Card 1-2 Neo1973 GTA01 Specification Name Neo1973 Size 120.7 x 62 x 18.5 mm Weight 135 g Screen 2.8" 480x640 at 285 ppi, maybe multi-touch later Flash 128/256 MB CPU Samsung s3c2442 SoC @ 400 MHz (Source) SDRAM 128MB GSM GSM, GPRS 2.5G (Not EDGE), Bluetooth 2.0 EDR, WiFi 812.11 b/g GPS u-blox GPS System OpenMoko Linux (Source code available) Application Basic u-boot included. Software can be created by normal users.
www.openmoko.com Sound Playback and recording, including playback of audio files via GSM and recording/playback of voice calls. 2x1 watt stereo speaker comment on performance, 2.5 mm jack USB Standard USB 1.
www.openmoko.com After enter u-boot menu, you could use [Aux] key to select the item, and [Power] key for confirm. There should be 5 items by default: 1. Boot: Direct boot 2. Set console to USB: Could use Linux terminal software (like minicom to connect Neo1973) 3. Set console to Serial: Re-Direct terminal output to Neo1973 debug port serial interface. 4. Power off: Power of Neo1973 5. Factory reset: Reset parameter into factory default value.
www.openmoko.com In the OpenMoko project, we use this program to communicate with our specially enhanced u-boot boot loader, which implements the DFU device side. Using dfu-util and your Neo1973, you can Link* transfer and flash partitions to NAND Flash, such as The Linux kernel The root file system partition The splash screen partition The u-boot environment Last, but not least: The u-boot bootloader itself.
www.openmoko.com This program is Free Software and has ABSOLUTELY NO WARRANTY Usage: dfu-util [options] ...
www.openmoko.com Found DFU: [0x1457:0x5119] name="u-boot_env" Found DFU: [0x1457:0x5119] name="kernel" Found DFU: [0x1457:0x5119] name="splash" Found DFU: [0x1457:0x5119] name="rootfs" devnum=16, cfg=0, intf=0, alt=2, devnum=16, cfg=0, intf=0, alt=3, devnum=16, cfg=0, intf=0, alt=4, devnum=16, cfg=0, intf=0, alt=5, This shows you six interfaces, all in configuration 0 and interface 0, with altsetting 0...4. The name is currently not yet defined, but will be added to one of the upcoming u-boot releases.
www.openmoko.com download the given file into the device. 1-4-8 upload upload from the DFU device into the given file[name]. NOTE: Upload support is currently broken Phrasebook There's no full-fledged manual yet. Instead, some examples: Flashing the kernel dfu-util -a 3 -R -D /path/to/uImage Flashing the bootloader dfu-util -a 1 -R -D /path/to/u-boot.
www.openmoko.com Chapter 2 Applications 2-1 Overview This page describes the set of applications being developed by the core set of OpenMoko developers. This is what is intended to be eventually released on the stock firmware of OpenMoko phones (Neo1973 and successors). If the community develops an application of suitable usefulness and quality, it may also be included on stock firmware. Community applications may be found on the Wish List and on projects.openmoko.
www.openmoko.com 2-1-1 General Principles All modifications are saved instantenously, there should never be a save command. Make sure users can't make interface operation errors, or that the effects are easily reversible, instead of just notifying them of the potential consequences of their actions. When you open a document you should be returned to the place where you were working when you last closed or save it (this is our concept of sessions).
www.openmoko.com NOTE: Innovation us ually happens at the bottom. What we need to do is provide consistent ways to develop and deploy appliations. 2-2 OpenMoko Dialer 2-2-1 Overview This article defines the Dialer Application, an application designed for the OpenMoko platform. The Dialer Application handles all call and SMS related interactions. This is a Native Finger-Based application.
www.openmoko.com 2-2-3 Dial Mode 1) Application Title -- Title of this application. 2) Icon / Photo -- Photo of contact (if available) will be displayed if number can be autocompleted. 3) Phone Number -- Phone number is displayed. Larger font is used for first line. After reaching end of first line the entire font size should decrease to allow for two full lines. 4) Autocompleted Tail -- Automatically complete the tail of phone numbers from existing contacts (when matched).
www.openmoko.com current number string. 7) Delete -- Deletes the last entered digit. 8) History -- Goes to the History mode. 9) Dial -- Dials the entered number string. NOTE: If a PIN is required to access the SIM card, the "Phone number" (3) display will change to enter a PIN. "History" (8) will gray-out and "Dial" (9) will change to "OK." 2-2-3 Incoming Call Mode 1) Call Icon -- Icon representing call type. 2) Icon / Photo -- Photo of contact (if available) will be displayed.
www.openmoko.com 6) Caller ID Title -- If contact is stored in the handset, the name will be displayed (Steve in this case). Otherwise display Unknown. Below displays the phone number of the other party. 2-2-3 In Call Mode 1) Call Icon -- Icon representing call type. 2) Icon / Photo -- Photo of contact (if available) will be displayed. 3) Volume control -- Adjust the speaker volume level.
www.openmoko.com 7) DTMF -- Changes to Dial Mode for DTMF support. 8) Hang-up -- Disconnects the current phone call. Returns to Dial Mode. 9) EMPTY -- Nothing for now. (Can be toggle of dictation) 10) Caller ID Title -- If contact is stored in the handset, the name will be displayed (Steve in this case). Otherwise display Unknown. Below displays the phone number of the other party. 11) Talk Time -- Displays call talk time. 2-2-4 Outgoing Call Mode 1) Call Icon -- Icon representing call type.
www.openmoko.com 4) Title -- Title of this window. 5) Cancel -- Cancels call. Returns to last application. 6) Caller ID Title -- If contact is stored in the handset, the name will be displayed (Steve in this case). Otherwise display Unknown. Below displays the phone number of the other party. 2-2-5 Connection Error Mode 1) Call Icon -- Icon representing call type. 2) Icon / Photo -- Photo of contact (if available) will be displayed. 3) Redial -- Redials the last number.
www.openmoko.com 2-2-6 Call History Mode 1) Caller ID Title -- If contact is stored in the handset, the name will be displayed. Otherwise display number. An icon will represent the type (incoming, outgoing, missed) of call. 2) List Scroll -- Scrolls through the call history list. While scrolling, 3) will display the current / total item information (for example 2/8). 3) Control Button -- Tapping will change between the following modes: {Call History Mode, Close and returns to Dialer}.
www.openmoko.com 4) Call -- Call the current selected number. Grayed-out if number is unknown. 5) Application Title -- Title of this application. 6) SMS -- Send a message to this number. This will open the Messages application with a new (SMS) message. 7) Delete -- Removes this number from the call history list. 8) More Items -- Tap to reveal the next list of items.
www.openmoko.com I want to rearrange applications in the menu Activated by pressing the auxilary key. This is the base layout: 1) Section Name -- The name of the current section. 2) List scrolling -- Will scroll through the list of icons. While scrolling, 3) will show how many items exist in this list. 3) Control Button -- Tapping cycles through the following controls {Scroll List Control, Back}. Currently at Scroll List Control. The List is broken up into sections of applications.
www.openmoko.com 4) History Applications -- Are the last 3 applications launched. 5) Item / Total -- Displays the current selected item number along side the number of items. 6) Sections or Applications -- Tapping on a section will lead to subgroups of applications. Tapping on an application will launch that application.
www.openmoko.com Neo1973 emulation This target will (obviously) run original OpenMoko rootfs images, but then it should also be able to run the original u-boot and kernel images, the same ones that a real Neo1973 uses. Among other differences you will notice between this approach and the Integrator/CP target is you also get correct screen resolution, some (fake) battery readings, and other goodness.
www.openmoko.com This includes GPIO interface, DMA, Interrupt Basic guts Work Controller, Timers, NAND controller, MMC/SD host, I2C and IIS interfaces, Memory & Clock & Power management controllers, RAM. Use the "-serial" switch (maybe be specified Serial ports Works multiple times) to tell QEMU where serial input/output should go to. GSM module will be connected on UART0. On start QEMU will load it with current time/date - RTC Works the Neo1973 kernel doesn't use it for time/date source currently.
www.openmoko.com This is one of the less important on-chip Watchdog Works peripherals in S3C2410. It is however used by Linux for rebooting the board. I2C bus peripherals (Aka PMU) Fakes the battery charge level (set at PCF50606 Works 88%), POWER button, etc. Also contains an RTC, also unused by Linux. LM4857 Works The CODEC is also connect to the CPU's IIS port. WM8753L Works Basic audio functionality is supported - see QEMU documentation on getting audio input/output from the emulator.
www.openmoko.com This part is already in mainline QEMU. Use the "-sd cardimagegoeshere" switch to point QEMU to the card image. The regular QEMU monitor commands SD card Works for removable media can also be used. The card works, however the on-chip host controller gave block length errors on heavy I/O despite working as described in specification. I suspect the kernel driver. DMA operation is not tested.
www.openmoko.com There are obvious difficulties emulating the chip, but hopefully it can be made to present the guest AGPS To Do OS with some fixed coordinates later when more is known about the chip. Again a real chip could be connected to QEMU's serial port. Current development is aiming for GTA01Bv4 compatibility; earlier revisions can also be emulated if needed. The differences between the hardware revisions currently only manifest themselves in GPIO wiring.
www.openmoko.com Requirements below): $ ./configure --target-list=arm-softmmu # GCC 3.x will be required, see --cc= $ make See other available options for the configure script by appending "--help". Now you should have a working emulator under the name "arm-softmmu/qemu-system-arm". To run OpenMoko you will also need to somehow install OpenMoko on your virtual phone, which is totally clean of any software at this moment.
www.openmoko.com QEMU has *tons* of commandline switches and things that can be configured. You can look them up in QEMU user docs. You will probably want to use the "-snapshot" switch, among other ones. Saving and restoring emulation state at any point (unrelated to "-snapshot") should work as per QEMU user docs too. In addition the monitor commands "help" and "info" are of great help. The monitor usually sits in second virtual console, thus ctrl-alt-2 and ctrl-alt-1 switch to monitor and back.
www.openmoko.com Some cross toolchains come with GDB already set up. Otherwise building cross-GDB yourself is quick and easy (compared to building binutils and cross-gcc). To debug u-boot, load the file "u-boot" into gdb (not "u-boot.bin") that is produced by "make" when building u-boot. To debug a Linux kernel, load the file "vmlinux" from the main source directory into gdb.
www.openmoko.com Setting up USB connection It is possible (although not very straight forward, probably about the complexity of tun-tap networking) to connect the virtual, emulated Neo1973 to the Linux PC on which the emulator is running, and work with it as if a real Neo1973 was plugged into the computer's USB port, but no twiddling with cables is needed.
www.openmoko.com particular the file /usr/include/linux/usb_gadgetfs.h needs to be present and if your distribution came with headers older than 2.6.18 or so, then you need tell the package manager to update them, or you can do that manually with # cp -a /usr/src/linux/include/linux/* /usr/include/linux/ (assuming that your kernel sources are in /usr/src/linux).
www.openmoko.com former instruction asks the OS running under the emulator (OpenMoko) to describe its slave features (that's what lsusb does after a Neo1973 is connected to a PC). You can see the available USB configurations in this command's output.
www.openmoko.com <6>usb 3-1: Product: RNDIS/Ethernet Gadget <6>usb 3-1: Manufacturer: Linux 2.6.20.7-moko8/s3c2410_udc <6>usb 3-1: configuration #1 chosen from 1 choice <7>usb 3-1: adding 3-1:1.0 (config #1, interface 0) <7>usb 3-1:1.0: uevent <7>cdc_ether 3-1:1.0: usb_probe_interface - got id <7>cdc_ether 3-1:1.0: status ep3in, 16 bytes period 14 <7>usb 3-1: adding 3-1:1.1 (config #1, interface 1) <7>usb 3-1:1.
www.openmoko.com bNumInterfaces 2 bConfigurationValue 1 iConfiguration bmAttributes 7 CDC Ethernet 0xc0 Self Powered MaxPower 0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber bAlternateSetting 0 0 bNumEndpoints bInterfaceClass bInterfaceSubClass 1 2 Communications 6 Ethernet Networking bInterfaceProtocol 0 iInterface 5 CDC Communications Control CDC Header: bcdCDC 1.
www.openmoko.
www.openmoko.com bInterval 0 Device Qualifier (for other device speed): bLength 10 bDescriptorType bcdUSB 6 2.00 bDeviceClass 2 Communications bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 # ifconfig usb0 inet 192.168.0.200 netmask 255.255.255.0 # exit $ ssh root@192.168.0.202 The authenticity of host '192.168.0.202 (192.168.0.202)' can't be established. RSA key fingerprint is de:21:87:93:52:1c:6b:c7:69:29:6c:af:66:50:02:02.
www.openmoko.