Openmoko devroom at the fosdem

| 7 Comments | 1 TrackBack
Hello hackable:1 users !

Serdar Dere, from #openmoko-cdevel managed to get a devroom at this year's fosdem for the openmoko community !
First things first, huge thanks to him.

Second, we get the room on Sunday morning and the schedule is here. As you can see, it is full of talks and hackable:1 has a slot.

Meet you there ! Who's coming ?

EDIT: The slides

Hackable:1 rev5 is out !

| 7 Comments | 2 TrackBacks

Dear Hackable:1 users,

After rev5rc1, we spent hours and hours debugging this or improving that to finally get the rev5 out today. Yep, that's right: hackable:1 rev5 (Codename: Chuck) is there!


Xbackground.png

Hackable:1, rev5rc1, at last!

| 12 Comments | No TrackBacks
Dear Hackable:1 users,

We are glad to announce that, after long & thorough efforts from the development team, after a bunch of testing hours, after a long time spent on arguing whether we should include this or that feature, we made it: hackable:1 rev5rc1 (Codename: Chuck) is there!


Xbackground.pngHere is a changelog of corrected bugs and added features from rev4.

Changelog


+ End users matters
  • Most of the software stack now runs under the 'hackable1' user, for security purposes.
  • SMS proper implementation
  • The contact list bug has been found and fixed!
  • Power management improvements, suspend works (well almost each & every time, sadly we're still hunting GSM issues for that matter)!
  • An application called 'h1settings' can be used to configure phone features, (enable / disable GSM / Wireless / GPS, power management, ...)
  • We created a new theme to celebrate this new release!
  • We got a splashscreen! It features a Chuck figure to reflects the rev5 codename: Chuck
  • Boot time seems to have been improved a bit

+ Power users / developers matters
  • This RC1 and the upcoming final rev5 release are now built from the automatic build system.
  • A Linux kernel is now packaged in hackable:1, in order not to rely on fso-pkg anymore.
    • Debugging has been disabled (boot time improvement)
    • Easier kernel upgrade when using an ext2 partition to store the kernel on µSD cards
    • Separation of kernel modules in three sets: essential (comes with the kernel), common modules and "more modules"
    • You can read a bit on http://zecrazytux.net/Embedded/Hackable1/Custom_Kernel.html

Where can I find it? Where can I get it? What is the answer to the ultimate question about life, the universe, and everything?

As ever, you can download hackable:1 on http://download.hackable1.org/rev5rc1.
All the necessary information can be found on http://trac.hackable1.org as ever, that is documentation, installation instructions as well as known issues.
It's obvious that the answer to the aforementioned question is "Chuck".

Who should I thank for all that stuff?

Among the people who worked on this release, the most notorious are (alphabetically):

  • Marcus Bauer (mbauer)
  • Jérome Blondon (jbl2024)
  • Sébastien Bocahu (zecrazytux)
  • Pierre Pronchery (khorben)
  • David Wagner (Deubeuliou)

We'd also like to thank all the testers, among them most notably Bearstech employees, and regular contributors/users of hackable:1, who kept us going forward.

What should I expect next?

Due to a very good number of good reasons, which could all of them be summed up by a minute of one of khorben's rants against libgsmd, we'll switch to Freesmartphone.Org for rev6.
All in all, more reliable GSM & suspend, and almost all the features one may need. Stay tuned!



Study boot process to improve boot time

| 4 Comments | No TrackBacks

One thing I'll certainly work on in the upcoming weeks is boot time improvement.
So far, booting takes quite a long time. But instead of looking at my clock when powering up my FreeRunner, I installed a tool to go deeper in the boot process and analyse its (non-)performance.

bootchart_small.png This tool is called Bootchart-lite, a clone of the well known Bootchart on desktop systems.
That's a basic rewrite from embedded systems that create similar logs as its big brother bootchart, meaning bootchart can compute them.

If you are interested in working on boot time improvement, you should install it !

Uboot configuration

The bootloader must be configured to add a kernel parameter. Here is the way for Uboot. Adapt it for Qi if you use it.

    # apt-get install fso-utils # from FSO
    # mkdir /tmp/uboot && cd /tmp/uboot
    # dfu-util -a u-boot_env -U env.u-boot
    # uboot-envedit -i env.u-boot -p > env_modified.u-boot.tx

Edit env_modified.u-boot.txt to tell the kernel to use bootchart-lite instead of init as first process.

    boot_menu_timeout=300
    bootargs_base=rootfstype=jffs2 root=/dev/mtdblock6 quiet bootlevel=8 init=/usr/bin/bootchart-lite console=ttySAC2,115200 console=tty0 loglevel=8 regular_boot
    ...

    # uboot-envedit -i env.u-boot -f env_modified.u-boot.txt -o env_modified.u-boot
    # dfu-util -a u-boot_env -D env_modified.u-boot

* Install the packages *

On your FreeRunner running Hackable:1, install bootchart-lite: (As of september, 18, it is packaged for daily builds, and will be packaged for rev5)

    hackable1# apt-get install bootchart-lite
    hackable1# reboot

Get data and render the image

On your computer, install bootchart-view (from the big brother bootchart project), and get the logs.
Then, render the PNG (or SVG) image.

    # apt-get install bootchart-view 
    $ scp -r root@hackable1:/etc/bootchart-lite .
    $ cd bootchart-lite
    $ tar czf bootchart.tgz *.log
    $ bootchart -f png bootchart.tgz

Analysis

That's the most difficult step :) !

I'll have a look on that later, I'm focusing on rev5 for now.

Eh ! There are "beta2" images available on http://build.hackable1.org. Would you give it a try ?

Please let us know how you like it and if bugs remain !

When cross-compiling hackable:1 packages, we are relying on the stable emdebian toolchain to compile our programs. Apparently, there has been a problem last week, where the toolchain was erroneously recompiled and from then on depending on packages not available on Debian Lenny.

We have coordinated this issue with emdebian's team, and are glad to announce that everything seems to be back in order.

If you have been upgrading your hackable:1 cross-compilation environment during this window, there is a simple way to get it to work again:
# apt-get remove --purge libgcc1-armel-cross
# apt-get install gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi

Then you should be able to cross-compile again!
Within my position for the promotion of free, open-source hardware solutions in general (and currently, telephony in particular), I am of course trying to keep in touch with the latest developments in this field. Eventually, I have met the fine people at ROAD, a small company in Berlin developing a phone: the Officer S101.

If you don't know about it already, its form-factor will remind you of the Nokia Communicator: from the outside, it looks like a regular candy-bar phone, but it also reveals a full keyboard and wide-screen display when opened. What interests us here is that its inside is open, too :)

The device is not in production yet, but they have been so kind as to let me borrow a sample for a while, which I demonstrated during my hackable:Device workshops at HAR2009 by the way. This is where I managed to install hackable:1 on the phone.

On the hardware side, it was difficult to let it be easier to test. Let me stress first that this was a pre-production device, and all of this may be subject to changes! So here we are:

  • the phone has an internal flash memory but can also boot on an SD card, which is conveniently replaceable without opening the phone or even removing the battery,
  • the first partition of the SD card must be formatted as a FAT filesystem,
  • I was provided with two second-stage bootloaders: one that boots the phone from flash, and the other which updates it.
Therefore, it was just a matter of copying the correct bootloader on the SD card, along with the root filesystem to flash if desired.

About the software now, this device happens to use the same architecture as the Openmoko Freerunner within Debian, "armel". One only has then to choose the right packages, configure them accordingly and generate a filesystem archive.

First, I have added a generic device definition file in trunk/build/profiles/ROAD-Officer.include:
DEBIAN_ARCH="armel"
STRIP="arm-linux-gnueabi-strip"
The "STRIP" line is necessary because of the way we are currently cross-compiling Debian packages: the native tools are unable to strip the binaries cross-compiled. Therefore, strap:1 is currently doing it instead, while generating the images.
#this device is a phone
. "profiles/generic-phone.include"
#add bluetooth support
. "profiles/generic-bluetooth.include"
#add GPS support
. "profiles/generic-gps.include"
#add touchscreen support
. "profiles/generic-touchscreen.include"
#add wifi support
. "profiles/generic-wifi.include"
This should be self-explanatory :)

#packages
#Debian
PACKAGES="$PACKAGES
[...]
xserver-xorg-core
xserver-xorg-input-kbd
xserver-xorg-input-tslib
xserver-xorg-video-fbdev
zlib1g"

Unlike the Openmoko Freerunner, which has its own dedicated X server, we are using the generic framebuffer-based X server. It just works :)

#specific kernel
#FIXME still needs to be packaged
PACKAGES_BLACKLIST="xserver-xorg-video-all"
In order to gain space, we are blacklisting this meta-package: xserver-xorg-core dependencies are actually satisfied with at least one video driver installed, which is the case here.

Next comes the actual profile definition, in trunk/build/profiles/ROAD-Officer-user.profile:

. "profiles/ROAD-Officer.include"
#blacklist packages to gain space
PACKAGES_BLACKLIST="bash
debconf-i18n"
#additional dependencies adjustments
PACKAGES="$PACKAGES
debconf-english"
CLEAN_DOC=yes
CLEAN_LOCALES=yes
This was directly taken from the Openmoko Neo1973 profile, which has tough space constraints on the flash. Here we do not have such limitations, however it made the testing process slightly faster.

Anyway, after some more tuning in trunk/build/packages, it was time to generate the filesystem archive:

$ ./build.sh VENDOR=ROAD MODEL=Officer PURPOSE=user archive

At this stage, the only missing bit was the kernel. I simply used the one already flashed onto the device, but I still needed some modules. They were of course provided to me in source and binary forms, but I don't think this kernel tree is available publicly at the moment. I am sure it will be as soon as the ROAD developers can manage.

Unfortunately, I could only get this far yet. It boots all the way to the graphical user interface, where the Om2007.2 design does not really fit the rather wide screen. We are currently working hard on the next release, rev5, and focusing on the Openmoko Freerunner first, but I will be resuming this work soon enough!

New feature for rev5: h1settings

| 8 Comments | No TrackBacks
In this article I'm going to describe a new feature which will be available in rev5: h1settings.

h1settings is a library which handles the global settings of the phone. It is a basic wrapper upon some gconf keys and has functions to :
  • read and update key values
  • listen to gconf key changes
Currently, only a few keys are available :

Device states :
  • gprs on/off : /desktop/h1/phone/enable_gprs
  • gsm on/off : /desktop/h1/phone/enable_gsm
  • gps on/off : /desktop/h1/gps/enable_gps
  • wifi on/off : /desktop/h1/phone/enable_wifi
  • bluetooth on/off : /desktop/h1/phone/enable_bluetooth
Power management :
  • power management enabled / disabled
The idea behind this library is to add loose coupling between components. For example the power management key is used by the gsm applet when a call is in progress (to fix this silly bug: http://trac.hackable1.org/trac/ticket/42 ) in order to disable power management (i.e. suspend). The gsm applet does not know how to disable PM but neod knows.

Currently, all the actions related to key states except gsm are handled by neod, the central daemon. It registers itself for these keys changes and sets the state of the devices. For the gsm part, it is handled by the gsm applet because it has already everything needed to switch on/off the antenna.
 
Another advantage is that an independant settings app can be built very easily without any dependencies with the underlying system, and this app already exists : h1settings.
See some screenshots below :

h1settings-1.png
h1settings-2.png


Run Ogsmd on Hackable:1

| 9 Comments | No TrackBacks

As you may know, we are willing to migrate to FSO. As part of it, we made ogsmd running on H:1 and we will rewrite phone-kit to use libfso-glib instead of libgsmd.

Until we get all the stuff packaged, here are the step to make ogsmd running on a Hackable:1 rev4 installation.

hackable:1 makes your device happy

| 4 Comments | No TrackBacks
As a lot of you know, at Bearstech, we're very serious with hackable:1 and what we intend to do with it.

If you were to ask to a typical hackable:1 developer, he'd probably say he crafts his code as he would paint an art piece or carve a nice wooden table. All the development is done for your GTA02 pleasure.

As can prove the following pictures, left alone, our GTA02s are not that happy. See how they seem to whine or just how they seem alone, oblivious to the fact that they're with their peers:

boite.jpg

But then, a little bit of H:1 magic, and look at how they seem to shine in happiness, all directed towards the same common objective, united to fight for their common goal:

hackable_1.jpg
There is no spoon more proof needed to say that hackable:1 will make your device happy. Up to you guys !

Welcome on our new hackable:blog !

| 10 Comments | 1 TrackBack
Hey everyone,

Long time no see. At last, we decided to setup a blog in order to keep you all in touch with what you need to know about hackable:1, and about the new things we do.

Stay tuned, as we're bounded to put a lot of things here sooner than later!
Powered by Bearstech!

Recent Comments

  • qiuer3439: 解放军潜艇“猎杀潜航”,borse gucci中国海军舰队从西太平洋演练归来,自卫队研判潜艇究竟在哪里? 香港红十字会如何守护公信力独家对话香港红十字会秘书长陈启明,解析其运作模式。 国情不是乳业新国标的挡箭牌 新国标之下的牛奶还能喝吗?低标准真的是国情使然? 字号:T|T 0人参与0条评论打印转发 英特尔6系列主板是2011年1月9日伴随着英特尔第二代智能酷睿处理器一同上市的,sac chanel outlet,由于SATA接口控制电路有设计瑕疵,导致6个SATA端口中,mulberry read more
  • y90i99099: 泡泡网平板电脑频道12月23日 据外国媒体报道,Originally posted at seneca by 2011-5-8 17:59 DI,惠普将会在明年CES大展上推出运行Palm WebOS系统的新平板电脑,以对抗苹果iPad。据可靠消息,在这次会展上惠普将会发布三款PalmPad平板电脑,三款电脑在硬件配置上会略有不同,sacs read more
  • mengyan9687: Face down protectionism (China Daily),ghd styler Updated: 2010-01-07 07:52 2010-01-07 read more
  • n5dhj9567: Confidentialité Position de Lycos concernant la protection des données Lycos read more
  • kff3f121: 互联网广告行业已发展到300亿元规模,louis vuitton pas cher,众多创业公司为了抢这块蛋糕而刺刀见红!到底什么样的营销是最有效的,什么样的广告形式能获得客户的青睐?本期《创业邦》杂志特邀联想投资董事总经理刘二海点评悠易互通、聚胜万合、浪淘金等三家互联网营销企业不同的商业模式。 文/曲琳 编者按: 互联网广告行业已发展到300亿元规模,众多创业公司如何在这一领域找到自己的立足点?广告产业的三个核心环节是媒体、解决方案和客户代理,其中在解决方案这一环节,包括悠易互通、聚胜万合、浪淘金等在内的多家公司试图利用“技术”打造优势,他们能打动客户吗?《创业邦》杂志特别邀请在互联网领域拥有丰富投资经验的联想投资董事总经理刘二海作为点评嘉宾,从整个产业链的角度给出了自己的中肯分析。 对于互联网广告领域,2007年是个重要的年份:好耶被分众收购,易传媒、悠易互通与浪淘金等新公司相继成立,但至今两年间众多竞争者遭遇淘汰。而到了2010年,这个市场规模已经突破300亿元,每年增长率还会保持49%,预示着下一轮爆发的可能。 广告产业的三个核心环节是媒体、解决方案和客户代理,其中在解决方案这一环节,有众多公司试图利用“技术”打造优势,以达到“精准”的效果。本期《创业邦》采访了这一领域里的几家创业企业,并邀请联想投资董事总经理刘二海先生进行点评。 悠易互通:定向+剩余流量 read more
  • b8yu0971: 凡客诚品旗下网站V+(VJIA.COM)2010年8月28日上午5点28分,正式完成上线以来的首次大规模改版,国内首家潮流意义上的购物平台初现雏形。新版首页的设计风格更具时尚流行元素,louis vuitton ss2012 component & qE,更符合80、90后主力购买人群的浏览习惯和喜好,Achat en ligne, comparer les read more
  • guspxtasm: 乡瑩癥⁁浥物捡渠瑲楢敳⁨慶攠慬睡祳⁨慤⁡⁴牡摩瑩潮映摡湣攠慳⁰慲琠潦⁴桥楲⁣畬瑵牥⸠佮攠楮瑥牥獴楮朠獴潲礠捯浥猠晲潭⁴桥⁃桩灰敷愠慮搠䅮楳桮慢攠瑲楢敳⁩渠瑨攠慲敡猠潦潲瑨敲渠䵩湮敳潴愠慮搠佮瑡物漬⁃慮慤愮⁔桥楮杬攠摡湣攠楳湥映瑨攠瑲慤楴楯湡氠摡湣敳⁳瑩汬⁰牡捴楣敤⁴潤慹⸠䩩湧汥⁤牥獳敳⁡牥⁳漠捡汬敤⁢散慵獥映瑨攠桵湤牥摳映鍢敬汳鐠汯癩湧汹⁡湤慢潲楯畳汹⁡瑴慣桥搠瑯⁴桥⁤牥獳Ⱐ慮搠睨楣栠浡步⁴桥⁤楳瑩湣瑩癥楮杬楮朠獯畮搠慳⁴桥⁤慮捥爠灥牦潲浳⸍਍੔桥牥⁡牥⁤楦晥牥湣敳⁢整睥敮⁴桥物杩湡氠摡湣攠慮搠捯湴敭灯牡特⁩湴敲灲整慴楯湳Ⱐ扵琠瑨攠浥慮楮杳⁡湤⁳祭扯汩獭⁲敭慩渠瑨攠獡浥⸍਍੖慲楯畳汹湯睮⁡猠愠灲慹敲Ⱐ獩湧楮本敤楣楮攠潲⁨敡汩湧⁤牥獳Ⱐ瑨攠橩湧汥⁤牥獳⁩猠愠景牭楤慢汥⁷潲欠潦⁡牴⸠䩩湧汥⁤牥獳敳⁡牥⁩湴敮摥搠景爠扯瑨⁰桹獩捡氠慮搠獰楲楴畡氠桥慬楮朠灵牰潳敳⸠周攠橩湧汥⁤牥獳⁡湤⁤慮捥⁩猠慬獯⁴漠灲慹⁦潲⁡湤⁣潭浥浯牡瑥潶敤湥猠睨漠桡癥⁡汲敡摹⁰慳獥搠晲潭⁴桩猠睯牬搮ഊഊ呲慤楴楯渠桯汤猠瑨慴⁴桥⁩湳灩牡瑩潮⁦潲⁳畣栠愠摲敳猠浵獴⁣潭攠晲潭⁡⁤牥慭Ⱐ睨敲敩渠瑨攠摲敡浥爠楳⁩湳瑲畣瑥搠瑯慫攠瑨攠摲敳猠獯⁴桡琠獯浥潮攠睨漠楳⁩汬慹⁢攠捵牥搮⁏湬礠瑨牯畧栠愠摲敡洠楳⁴桥⁷敡牥爠敮瑩瑬敤⁴漠浡步Ⱐ潲⁨慶攠浡摥Ⱐ獵捨⁡⁤牥獳⁡湤⁰敲景牭⁴桥⁴牡摩瑩潮慬⁨敡汩湧爠灲慹敲⁤慮捥⸠䩩湧汥⁤牥獳敳Ⱐ批⁶楲瑵攠潦⁴桥獥⁣潮摩瑩潮猬⁨潬搠獰楲楴畡氠慮搠浥摩捩湡氠灯睥牳⸍਍੔桥敧敮摳⁡湤⁴牡摩瑩潮猠潦楮杬攠摲敳獥猠桡癥⁢敥渠灡獳敤⁤潷渠晲潭⁧敮敲慴楯渠瑯⁧敮敲慴楯渮⁔桥牥⁡牥慮礠獴潲楥猬⁵湣慮湩汹⁳業楬慲⁩渠湡瑵牥Ⱐ睨敲敢礠瑨攠摲敡浥爠桡猠愠癩獩潮⁲敳畬瑩湧⁩渠潮攠潲潲攠摲敳獥猠瑯⁢攠浡摥⁡湤⁴桥楮杬攠摡湣攠灥牦潲浥搠睩瑨⁴桥⁳畢獥煵敮琠桥慬楮朠潦⁴桥⁡晦汩捴敤⁰敲獯渮ഊഊ周攠瑲慤楴楯湡氠浡瑥物慬猠畳敤⁦潲楮杬攠摲敳獥猠楮捬畤攠捯瑴潮⁰物湴猠慮搠扲潡摣汯瑨Ⱐ楮⁴業敳⁰慳琠癥特⁶慬畡扬攠瑲慤攠楴敭献⁔桥⁦慢物挠畳敤⁴慫敳⁳散潮搠灬慣攠楮⁩浰潲瑡湣攠瑯⁴桥⁡捴畡氠橩湧汥献⁔桥楮杬敳⁣潮獩獴映瑨攠汩摳⁦牯洠獮畦映捡湳Ⱐ睨楣栠慲攠捯汬散瑥搠潲⁲散敩癥搠慳⁧楦瑳Ⱐ慮搠湵浢敲⁩渠瑨攠桵湤牥摳⁦潲⁥慣栠摲敳献⁔桥楤猠潦⁴桥⁳湵晦⁣慮猠慲攠牯汬敤⁴楧桴汹⁩湴漠愠捯湥⁳桡灥⁡湤⁳畳灥湤敤⁷楴栠愠物扢潮⸠周攠晩湩獨敤⁣潮攠楳⁴桥渠獥睮⁴漠瑨攠摲敳猠批⁴桥⁲楢扯測⁣慲敦畬汹⁡牲慮来搠楮⁡⁡牴晵氠獣慬汯灥搠潲⁧敯浥瑲楣⁳桡灥⸠周攠橩湧汥猠浵獴⁢攠獥睮⁣汯獥汹⁴潧整桥爬⁳漠瑨慴⁴桥礠獴物步⁥慣栠潴桥爠摵物湧⁴桥潶敭敮瑳映瑨攠摡湣攮⁊敷敬特Ⱐ汥杧楮杳⁡湤⁡湫汥潣捡獩湳⁡牥⁷潲渠瑯⁣潭灬整攠瑨攠潵瑦楴⸠ഊഊ周攠潲楧楮慬楮杬攠摡湣攠楳⁡捣潭灡湩敤⁢礠摲畭猬⁢畴⁤楤潴⁩湣汵摥⁦慮猬⁦敡瑨敲猠潲⁰汵浥猠慳⁡牥⁳潭整業敳⁵獥搠瑯摡礮⁔桥楮杬攠摡湣攠楳⁡⁳瑵湮楮朠灥牦潲浡湣攠慮搠瑨攠橩湧汥猠慲攠瑨攠獴慲物湧⁥汥浥湴⸠周攠獯畮搠灲潤畣敤⁢礠瑨攠桵湤牥摳映橩湧汥猠捨業楮朠捡渠扥⁤敳捲楢敤⁡猠瑨攠獯畮搠潦⁲慩渠桩瑴楮朠瑩測⁡⁳睥整畳楣慬⁳潵湤楫攠湯瑨敲⸍਍੉映祯甠桡癥⁴桥灰潲瑵湩瑹⁴漠獥攠瑨攠浡杩捡氠灥牦潲浡湣攠潦⁴桥楮杬攠摡湣攬⁩琧猠桩杨汹⁲散潭浥湤敤⸍਍਍� noise canceling headphones read more
  • hjhd46012: 没有账号?,Chinadaily BBS - China Watch - No Chinese politician join read more
  • qiuer3439: 没有账号?,gucci outlet 立即注册 凤凰网首页 手机凤凰网 美国施压伊朗促战而非求和?美伊战争边缘游戏并不新鲜,borsa gucci,但美国此次行动显著升级,h&m robe,备战意味甚浓。 以房养老 梦想为何照不进现实面对汹涌而来的老龄化浪潮,borse read more
  • y90i99099: iTunes黑账号并不是新鲜事,但随着国内iPhone、iPodTouch和iPad用户激增,这种被网友俗称为“黑卡”的iTunes账号正在互联网上呈现泛滥之势,在淘宝网站上搜索“iTunes账号”,所销售的产品几乎全部是“黑账号”,解放军潜艇“猎杀潜航” CM,sac chanel。中国C2C电子商务网站正沦为国外黑客的“销赃天堂”。 “50元人民币”买“100美元” 现在,任何人只要花费人民币50元就能买到价值100美元的iTunes账户,升值将近14倍,而这100美元则被用来购买AppleStore(苹果商店)内的收费软件、音乐、游戏、电影等。对于苹果用户来说,如果他们购买和使用这些账号,louis vuitton,相当于可以享受1折都不到的优惠。如此好事,borsa gucci,谁能不动心? 除了淘宝,Mulberry Bayswater,在国内其他主流C2C网站,也都能见到专营iTunes黑账号的网店,其销售黑账号的价格也不尽相同,也有35元人民币就能买到100美元账号的,其中最贵的账号售价人民币500元,可以消费价值2000美元的AppleStore商品,土豆网创始人及CEO王微(凤凰网科技配图) sI。网店主称这些账号来自美国、英国、日本等世界各地,网友购买后,只要登录支持相应语种的AppleStore上,gucci read more

Categories

OpenID accepted here Learn more about OpenID
Creative Commons License