2025年10月1日水曜日

iOS 26.0.1リリース

 iOS 26.0.1がリリースされました

対象デバイスは、iPhone 11以降, iPad(8代目), iPad mini(5代目以降), iPad Air(3代目), iPad Pro(12.9インチ 3代目以降、11インチ 初代以降)になります

アップデート内容は、以下の様になっています

このアップデートには、以下の問題の修正などのiPhone用の重要なバグ修正とセキュリディアップデートが含まれます:

  • iPhone 17、iPhone Air、およびiPhone 17 ProモデルでWi-FiとBluetoothの接続が切れることがある問題
  • iOS 26へのアップデート後に少数のiPhoneユーザがモバイル通信ネットワークに接続できないことがある問題
  • iPhone 17、iPhone Air、およびiPhone 17 Proモデルで、照明の状況によっては撮影した写真に予期しないアーチファクト(ノイズ)が含まれることがある問題
  • カスタムの色合いを追加するとアプリアイコンが空白になることがある問題
  • iOS 26へのアップデート後に一部のユーザでVoiceOverが無効になることがある問題

Apple セキュリティアップデートを確認すると以下のセキュリティアップデート内容が記載されています

FontParser

CVE-2025-43400: Apple

なおアップデートファイルの大きさは、iOS 26をインストールしているiPhone 11で486.8MBになります


スマホ・携帯ランキング

2025年9月17日水曜日

watchOS 26リリース

iOS 26に合わせて、watchOS 26がリリースされました
なお、Apple Watch Series 6 以降が対象になります

アップデート内容は、以下の様になっています

Liquid Glass

  • 新しいデザインにより、watchOSのすぐに使える親しみやすさはそのままに、より表現力豊かでシームレスな体験が提供され、コンテンツに集中しやすくなります
  • Liquid Glassにより、 watchOS全体での操作がよりいきいきと表現され、コンテンツがリアルタイムで屈折および反射され、スマートスタック、コントロールセンター、ナビゲーション、アプリ内コントロールなどがさらに明確になります

高血圧通知

  • 高血圧通知により、慢性的な高血圧の兆候が継続的に30日を超えて観察された場合に通知を受け取るごとができます (AppleWatch Series 9以降、Apple Watch Ultra 2以降で利用可能)
  • 高血圧通知機能は、22歳以上で高血圧の既往歴がなく、妊娠していないユーザを対象としています

睡眠スコア

  • 睡眠スコアでは、睡眠時間、就寝/起床時刻の一買性、および睡眠中断に基づく毎晩のスコアと分類が提示されるため、睡眠の質や回復力を高める方法を深く理解するのに役立ちます
  • 睡眠スコアは、睡眠アブリ、スマートスタック、または文字盤コンプリケーションで確認できます

スマートスタック

  • スマートスタックは、進化した予測アルゴリズムを備えており、すぐに役立つ提案がある場合にスマートスタックのヒントをお届けします。例えば、遠隔地にいる場合は、バックトレースの記録を開始するためのヒントが表示されます
  • 設定可能なウィジェットにより、スマートスタックでのウィジェットの表示方法をカスタマイズして、自分にとって最も重要な情報を確認できます。例えば、"ホーム"ウィジェットで素早くアクセスしたいホームアクセサリを選択できます

メツセージ

  • "メッセージ"のライブ翻訳では、Apple lntelligenceを使用して、受信したメッセージ (グルーフメッセージを含む)を白動的に翻訳し、自分の優先言語で返信を送ることができます。返信内容は眉いたときに翻訳されます (AppleWatch Series 9以降およびAppleWatch Ultra 2以降で、 Apple lntelligence対応のiPhoneとペアリングされている場合に利用可能)

文字藍

  • イグザクトグラフは伝統的なレギュレーターウォッチを現代風に再構成した文字盤で、正確な時刻を把握できるように時、分、秒がそれぞれ分かれています
  • "フロー"では、Liquid Glassの数字が使用され、手首の動きに応じてカラーの球体が流れるように屈折します
  • ウェイポイントは、"マッアに保存した場所や見どころに対する相対的な位置を示すライブコンパスとして機能します (AppleWatch Ultraで利用可能)
  • "Hermes Faubourg Party"には、時間帯や動きに応じて表示される、一連のキャラクターによるアニメーションショートムービーが含まれています(AppleWatch Hermesで利用可能)
  • "写真"の文字盤がLiquid Glassによる新しいデザインで強化され、数字が浮き上がるため、今まで以上に写真が見やすくなります
  • "写真"の文字盤では、"写真"の"おすすめ"の内容に基づいて画像がシャッフルされるようになったため、手首を上げるか、画面をタップするたびに、最も有意義だった時間の画像を見ることができます
  • デザインが一新された文字盤ギャラリーでは、文字盤がコレクションごとにグループ化されるので、文字盤を探したり見つけたりしやすくなりました

その他の機能

  • ワークアウトアプリの新しいレイアウトにより、お気に入りの機能が使いやすくなりました。四隅のアイコンをタップすると、指標や表示、カスタムワークアウトやペーサーなどの体験、メディア、通知に素早くアクセスできます
  • ワークアウトアプリでのメディア体験がより統合的でインテリジェントになり、ワークアウトの種類と個人的な好みに基づいてApple Musicから最適なプレイリストが選択されたり、最近そのワークアウトの種類の実行中に聴いたものに基づいてプレイリストやポッドキャストの提案が表示されたりといったごとが可能になります
  • メモアプリがAppleWatchに登場し、手首の上で直接、メモにアクセスしたり、メモをピン留めしたり、チェックリスト項目を完了にしたり、音声入力またはSiriを使用して新規メモを作成したりできます
  • 手首フリックは片手で操作できる新しいジースチャで、通知を閉じる、着信を消音にする、タイマーやアラームを消音にする、または文字盤に戻るときに使用できます(AppleWatch Series 9以降およびAppleWatch Ultra 2以降で利用可能)
  • イグザクトグラフ、デジタルアクティビティ、リフレクション、ストッフウォッチアプリやタイマーアプリなど、20種類以上の文字盤で、”常にオン"モードでの秒針表示が1Hzに対応しました (AppleWatch Series 10以降で利用可能)
  • 周囲の雑音に応じて、AppleWatchで通知、着信、タイマー、アラーム、 Siriの音量を自動的に調整できます
  • iPhoneが近くにある場合は、保留アシストと通話スクリ一ニングが電話アプリで使用できるようになります。保留アシストでは、担当者との通話を待っている間に、あなたの順番を保ち、担当者が対応可能になったときに通話へ戻れるように着信音でお知らせします。着信スクリ一ニングでは、不明な番号からの着信をスクリ一ニングできます。着信音が鳴る前に発信者の名前と用件が表示されます

Apple セキュリティアップデートを確認すると以下のセキュリティアップデート内容が記載されています

Apple Neural Engine

CVE-2025-43344: an anonymous researcher

AppleMobileFileIntegrity

CVE-2025-43317: Mickey Jin (@patch1t)

Audio

CVE-2025-43346: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

Bluetooth

CVE-2025-43354: Csaba Fitzl (@theevilbit) of Kandji

CVE-2025-43303: Csaba Fitzl (@theevilbit) of Kandji

CoreAudio

CVE-2025-43349: @zlluny working with Trend Micro Zero Day Initiative

CoreMedia

CVE-2025-43372: 이동하 (Lee Dong Ha) of SSA Lab

IOHIDFamily

CVE-2025-43302: Keisuke Hosoda

IOKit

CVE-2025-31255: Csaba Fitzl (@theevilbit) of Kandji

Kernel

CVE-2025-43359: Viktor Oreshkin

MobileStorageMounter

CVE-2025-43355: Dawuge of Shuffle Team

Sandbox

CVE-2025-43329: an anonymous researcher

Spell Check

CVE-2025-43190: Noah Gregory (wts.dev)

SQLite

CVE-2025-6965

System

CVE-2025-43347: JZ, Seo Hyun-gyu (@wh1te4ever), Luke Roberts (@rookuu)

WebKit

CVE-2025-43356: Jaydev Ahire

CVE-2025-43272: Big Bear

CVE-2025-43343: an anonymous researcher

CVE-2025-43342: an anonymous researcher

なおアップデートファイルの大きさは、watchOS 11.6.1をインストールしているSeries 6で1.5GBになります 


スマホ・携帯ランキング

KORG nanoKEY2(キーが反応しない)

 ジャンクのKORG nanoKEY2を入手しました。音楽は苦手なので、MIDIコントローラを買ってもとは思いましたが、以前どこかの記事でMIDIコントローラをゲームコントローラとして使用すると言うのがあった気がしましたので購入しました。ま、安かったんですけどね

ちなみにジャンク理由は一部キーが動作しないと言った内容になります。ゲームコントローラにするにしても、これを直さないといけませんね

最初に動作テストを行いますが前述の通り音楽は苦手なので、これをテストする環境は我が家にはありません。そのため、MikataHara様のMIDIモニター(WEB MIDIアプリケーション)を使用させていただきました。テストの結果、高音側(ピアノで言った場合)のキーが一部反応が悪い、または反応しない状況でした(使用感からするとテレビのリモコンと同じ現象に見えます)

早速分解していきます。背面にネジが8本ありこれを外します(隠しネジ無し)。内部にさらに4本ありますので、これも外します

ドライバだけで分解できるのは楽で良いです

まずは基板に問題がないか目を皿にして確認しましたが、問題ありそうに見えません。ただし、接点箇所の汚れは肉眼ではよくわかります。写真を撮りましたが判りますか?

うっすら茶色くなっています。いつもの様に無水エタノールと綿棒で全ての接点を掃除します。ちなみに綿棒は真っ黒になりました

清掃前後を比べるとかなり綺麗になっています。念のためゴム側の接点も清掃してから、組み立てました。、MikataHara様のMIDIモニター(WEB MIDIアプリケーション)で再度テストしたところ、すこぶる快調になりました

この手のコントローラはリモコン同様にたまに清掃した方が良さそうですね

2025年9月16日火曜日

iOS 26リリース

iOS 26がリリースされました

対象デバイスは、iPhone 11以降, iPad(8代目), iPad mini(5代目以降), iPad Air(3代目), iPad Pro(12.9インチ 3代目以降、11インチ 初代以降)になります

アップデート内容は、以下の様になっています

デザイン

  • Liquid Glassにより、iOS全体での操作がさらに楽しくなり、コンテンツがリアルタイムで屈折および反射され、画面に表示中のものへの集中が高まります
  • ロック画面の適応型時刻では、ロック画面の空ぎ領域に合わせてサイズが流動的に変更され、写真の被写体を補完し、通知やライブアクティビティが表示されるたびに適応します
  • 空間シーンでは、写真の壁紙に新しい3D効果を追加することができ、iPhoneを動かすと壁紙がいきいきと映し出されます
  • Liquid Glassでアプリアイコンがフレッシュな新しい外観になり、一新されたライトとダークの外観モード、新しい色合いのアイコン、新しいクリアな外観によって、さらにカスタマイズでぎるようになりました
  • アニメーションのアルバムアートにより、対応しているアルバムではアーティストがデザインしたアニメーションがフルスクリーンで表示され、ミュージック再生の没入感を高めます

Apple lntelligence

  • ビジュアルインテリジェンス
    • スクリーンショットを撮るのと同じボタンを押すことで、どのアプリでもコンテンツについて詳しく知るごとができます
    • 画面上の特定のものを八イライトして検索でぎます
    • 画面上のコンテンツに基づいてGoogleの検索結果にジャンプしたり、よく使用する他社製アフリから関連項目を探したり、表示中の内容についてChatGPTに尋ねたりできます
  • ライブ翻訳 

    • "メッセージ"で、受信したメッセージ(グループメッセージを含む)を自動的に翻訳して、自分の優先言語で返信を送ることができます。返信内容は届いたとぎに翻訳されます

  • ショートカット
    • インテリジェントアクションによって、ショートカット内で作文ツール、lmage Playground、およびその他のApple lntelligence機能を利用できます
    • "モデルを使用"は、 Apple lntelligenceモデルを直接活用して、生成された応答をショートカットの残りの部分に反映させたり、希望する場合はChatGPTを使用してその幅広い知識や専門知識を活用したりでぎる新しいアクションです
  •  ジェン文字とlmage Playground
    • 2つの絵文字を混ぜてジェン文字を作成したり、絵文字と説明を組み合わせることで頭に描いていたものを作成したりできます
    • 人物のジェン文字の表情を選択して、幸せそうなキャラクターやショックを受けたキャラクターなどにでぎます
    • 写真ライブラリの人物をモチーフにしたジェン文字の髪型やひげなどの個人的な特徴を変更でぎます
    • ChatGPTでは、油絵やアニメなど、さらに多彩なスタイルを探すことができます。また、"任意のスタイル"をタップして、希望する画像やスタイルを説明することもできます

カメラ

  • 洗練されたデザインにより、"写真"と"ビデオの撮影モードにさらにアクセスしやすくなり、その他のモードもスワイフするだけでアクセスできます
  • レンズクリーニングのヒントでは、レンズが汚れているとぎに通知し、可能な限りクリアな写真を撮影できるようにします(iPhone 15以降)
  • 新しいAirPodsのジェスチャを使って、 AirPods 4およびAirPods Pro 2以降では、ステムを押すだけで写真の撮影やビデオの収録を開始できます

写真

  • "ライブラり"ど"コレクション"のタブが分かれているので、ナビゲーションがより簡単になります。また、どの表示からでも"検索"にアクセスでぎます
  • "コレクション"表示は3つのレイアウトオプションでカスタマイズでぎ、簡単にコレクションを折りたたんだり並べ替えたりでぎます
  • コンサートやスポーツなどのイベントを認識して、イベントの詳細を表示したり、関連コンテンツにアクセスしたりでぎます

電話

  • 新しい統一されたレイアウトオプションにより、よく使う項目、履歴、および留守番電話がまとめて表示されます
  • 着信スクリーニングでは、不明な番号からの着信をスクリーニングでぎます。着信音が鳴る前に発信者の名前と用件が表示されます
  • 不明な番号からのスクリーニングされた着信は、通話リストの新しい領域に移動できるため、邪魔になりません
  • 保留アシストでは、担当者との通話を待っている間に、あなたの順番を保ち、担当者が対応可能になったときに通話へ戻れるように着信音でお知らせします

メッセージ

  • 不明な差出人をスクリーニングすることで、誰から連絡を受け取るかを自分でコントロールでき、スクリーニングされたメッセージはチャットリストの新しい領域に移動するため、邪魔になりません
  • チャットに背景を追加してパーソナライズでぎます。内蔵されている背景のオプションから選ぶことも、自分の写真やlmage Playgroundで作成した画像を使用することもでぎます
  • 投票を使って、今度予定されているタ食会に全員が参加でぎる日を調整したり、グループで贈るプレゼントを決めたりでぎます
  • グループ内の入力インジケータにより、このあと誰が発言しようとしているのかが正確にわかります

CarPlay

  • Liquid Glassを使用した新しいデザインにより、ダッシュボードの各操作領域がはっきり区別され、新しいタブバーデザインでアフリ内を簡単に移動できます
  • 着信表示がコンパクトなデザインのため、お気に入りのナビゲーションアフリで次に曲がる場所を見逃さずに確認でぎます
  • "メッセージ"のTapbackを使って、運転中でもいいねやハートなどのジェスチャーで簡単にメッセージヘリアクションすることができます
  • ピン留めしたチャットが"メッセージ"のトップに表示されるため、よく使うチャットに簡単にアクセスできます
  • ダッシュボードの左側にウィジェットスタックが表示されるので、よく使うアプリをひと目で確認できます
  • ライブアクティビティがダッシュボードに自動的に表示されるため、移動中でもリアルタイムのイベントを簡単に追うごとがでぎます

マップ

  • "よく使う経路"では、自宅から勤務先のように定期的に訪れる場所の間で使う道順が学習され、いつもの経路がさらに運転しやすくなります

ミュージック

  • "歌詞の翻訳と発音ガイド"では、お気に入りの曲の意味を理解して、その言語がわからなくても一緒に歌えるようになります
  • AutoMixは、 DJのように曲から曲ヘシームレスに移行し、タイムストレッチとビートマッチングによって途切れのない再生を実現します
  • 曲、アルバム、プレイリストなどをライブラリの上部にピン留めして、素早く簡単に再生できます

ウォレット

  • 新しくなった搭乗券では、フライトや空港に関するタイムリーで関連性の高い情報にアクセスでき、航空会社のアフリの機能にも素早くアクセスできます
  • 注文の追跡(ベータ版]では、Apple lntelligenceを使用して、販売者または配送業者から届いたメールを見つけ、注文の詳細や進捗状況の通知などをすべてウォレットアプリ内の1か所にまとめます
  • iPhoneでApple Payを使って店頭で支払う場合、クレジットカードやデビットカードでの購入時に、銀行やカード会社が提供する分割払いを利用できます 

Apple Games

  • 新しいゲームアプリは、iPhoneのゲームがすべて揃ったオールインワンの場所です。お気に入りのゲームをすぐに再開したり、新しいお気に入りを見つけたり、新しい方法で友達とプレイしたりできます
  • 友達にチャレンジしたり、リアルタイムでスコアを把握したり、友達がほかにプレイしているゲームを確認したりすることがでぎます
  • App StoreやApple Arcadeからの新しいダウンロードやこれまでのダウンロードを含むゲームライブラリ全体にアクセスでぎ、遊びたいときにすぐ起動できます
  • 新しいゲームのおすすめは、よくプレイするゲームに基づいています

お子様のオンライン保護

  • "コミュニケーションのリクエスト"では、お子様が連絡したい新しい電話番号がある場合に、親/保護者にリクエストを送信でぎます
  • 既存のアカウントを簡単にお子様用アカウントに変換して、利用可能なすべての子ども向け安全保護機能を最大限に活用でぎます
  • アプリで年齢に応じた体験を提供するため、親/保護者にはお子様の年齢層を他社製アプリと共有するかどうかを選択でぎるオフションが提供されます。これにより、お子様は自分の年齢層に適したコンテンツや機能にアクセスできるようになります
  • "コミュニケーションの安全性"が拡張され、ライブFaceTime通話中に裸体が検出された場合に介入したり、"写真"の共有アルバムで裸体をぼかしたりできるようになります

アクセシビリティ

  • App Storeの製品ページにあるアクセシビリティラベルで、VoiceOver、音声コントロール、キャブションなどのアクセシビリティ機能がアプリやゲームで利用できるかどうかをダウンロード前に確認できます
  • アクセシビリティリ一ダーでは、フォント、カラー、間隔の豊富なオプションに加え、読み上げコンテンツへの対応により、テキストをカスタマイズする新しい方法が提供されます。これにより、あらゆるアブリのテキストが読みやすくなります
  • 点字アクセスを使用すると、接続した点字ディスプレイでメモの作成、書類の閲覧、ライブキャプションの利用、アプリの起動など、さまざまなタスクを簡単に実行できます

その他

  • "プレビュー"は、PDFの表示や編集に特化した、 iPhoneの新しいアプリです。自動入力や書類スキャナ、書き出しオプションなどの強力な機能を備えています
  • FaceTimeには新たにデザインされたランディングページが導入され、最近の発信者のパーソナライズされた連絡先ポスターや、スクロールすると再生されるビデオメッセージが表示されるようになりました
  • "リマインダーの提案"では、メール、 Webサイト、メモ、またはその他のテキストをリマインダーアプリに共有すると、Apple lntelligenceによって関連性の高いタスクが識別されます
  • ローカル収録では、ビデオ会議中にiPhoneから高品質のオーディオとビデオを記録し、最もクUアな録音/録画でインタビューやポッドキャストを作成できます
  • コントロールセンターのオーディオ入力ピッカーで、各アプリ (Webを含む)に適したマイクを簡単に選択できます
  • 充電にかかる推定時間の表示で、iPhoneの充電にかかる時間がわかります
  • 適応型電力制御では、日頃のバッテリー使用状況を学習し、使用量が多い日には自動的に調整して、一日中バッテリーが長持ちするようにできます(iPhone 15Pro以降]
  • ヘルスケアアプリの血圧記録機能では、他社製の血圧計を使用した血圧測定のリマインダーを受け取ったり、医療提供者用のPDFレポートを作成したりすることができます
  • フィットネスアプリの新しいワークアウトタブでワークアウトの記録機能が追加されたため、ペースや距離などの指標を記録することができます。また、AirPods Pro 3などの対応している心拍数モニタをお持ちの場合は、さらに多くの指標を記録できます。AppleWatchをお持ちの場合は、カスタムワークアウトの作成などの機能を使用するときに、より大きな画面を利用できます
  • "適応型温度調整"では、帰宅途中にサーモスタットを好みの温度に自動的に調整したり、終日の外出や旅行の際には省エネルギーのために設定を変更したりできます
  • スヌーズのカスタムオプションでは、アラームが鳴ったときのスヌーズの継続時間を1分から15分の間で調整できます
  • "パスワード"の"履歴"では、これまでに"パスワード"で行ったアカウントに対する変更を時系列で確認でき、過去に使ったパスワードや生成された強力なパスワードの履歴も確認できます
  • "メモ"でMarkdownフォーマットのファイルを読み込んだり書き出したりできます


Apple セキュリティアップデートを確認すると以下のセキュリティアップデート内容が記載されています

Apple Neural Engine

CVE-2025-43344: an anonymous researcher

AppleMobileFileIntegrity

CVE-2025-43317: Mickey Jin (@patch1t)

Audio

CVE-2025-43346: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

Bluetooth

CVE-2025-43354: Csaba Fitzl (@theevilbit) of Kandji

CVE-2025-43303: Csaba Fitzl (@theevilbit) of Kandji

Call History

CVE-2025-43357: Rosyna Keller of Totally Not Malicious Software, Guilherme Rambo of Best Buddy Apps (rambo.codes)

CoreAudio

CVE-2025-43349: @zlluny working with Trend Micro Zero Day Initiative

CoreMedia

CVE-2025-43372: 이동하(Lee Dong Ha) of SSA Lab

IOHIDFamily

CVE-2025-43302: Keisuke Hosoda

IOKit

CVE-2025-31255: Csaba Fitzl (@theevilbit) of Kandji

Kernel

CVE-2025-43359: Viktor Oreshkin

LaunchServices

CVE-2025-43362: Philipp Baldauf

MobileStorageMounter

CVE-2025-43355: Dawuge of Shuffle Team

Notes

CVE-2025-43203: Tom Brzezinski

Safari

CVE-2025-31254: Evan Waelde

Sandbox

CVE-2025-43329: an anonymous researcher

Shortcuts

CVE-2025-43358: 정답이 아닌 해답

Siri

CVE-2025-30468: Richard Hyunho Im (@richeeta)

Spell Check

CVE-2025-43190: Noah Gregory (wts.dev)

SQLite

CVE-2025-6965

System

CVE-2025-43347: JZ, Seo Hyun-gyu (@wh1te4ever), Luke Roberts (@rookuu)

Text Input

CVE-2025-24133: Joey Hewitt, an anonymous researcher, Thomas Salomon, Sufiyan Gouri (TU Darmstadt), Phil Scott (@MrPeriPeri) & Richard Hyunho Im (@richeeta), Mark Bowers, Dylan Rollins, Arthur Baudoin, Andr.Ess

WebKit

CVE-2025-43356: Jaydev Ahire

CVE-2025-43272: Big Bear

CVE-2025-43343: an anonymous researcher

CVE-2025-43342: an anonymous researcher

WebKit Process Model

CVE-2025-43368: Pawel Wylecial of REDTEAM.PL working with Trend Micro Zero Day Initiative

なおアップデートファイルの大きさは、iOS 18.6.2をインストールしているiPhone 11 proで5.49GB、iPhone 11で5.74GBになります


スマホ・携帯ランキング

2025年9月5日金曜日

GARMIN geko 201

何気にワットマンのジャンクコーナーを物色していたところ、懐かしいガジェットを発見しました


この黄色いガジェットは、GARMIN geko 201。スマホが普及する前に流行ったハンディーGPSです(恐らく20年位前かな)。当時、数万円したものですが動作未確認で1188円(税込み)だったので冗談半分で購入しました。動かなかったら分解して中身でもみようかと...

帰宅後、単四電池を入れて起動してみました。「こいつ動くぞ!」

それも、なんと全所有者の情報付きですw

とりあえず初期化することにしましたが、メニュー画面などにリセットがありません。当然、ジャンクですので説明書なんてありませんね。ネット検索で探したところ、GAMINのHPに記載がありました(PAGEとENTER(OK)キーを押しながら電源オン、具体的には下記赤丸ボタンを押しながら電源オン)

リセットしましたので、設定がデフォルトになっていますので各種設定します。なお電源投入時、Satellite画面になっています。PAGEキーを押すことで、Map Navigation Trip ComputerMenuの順で画面が切り替わります。ここで、Menu画面のSETUPで各種設定を行います

最初にTIME項目を設定します

  • TIME FORMAT :24 HOUR
  • TIME ZONE        : TOKYO
  • UTC OFFSET     : +09:00(TIME ZONE設定で自動で設定されます)

なお、GPSロールオーバーによって日付時刻は正しく表示されない可能性があります。詳細は、GAMINサイト「GEKO 201 - 時刻と日付の誤りに関して」をご覧ください

次にUNIT項目を設定します

  • POSITION FRMT : H D°M'S.S"(度、分、秒で表記)
    GPS情報の表示方式
  • UNITS                     : METRIC(メートル方)

最後にSYSTEMを設定します

  • LANGUAGE       : English(英語版なので)
  • BATTERY            : ALKALINE(アルカリ電池を使用)
  • OWNER NAME : ユーザー名など

これで基本的な設定は完了だと思います。なお、使用用途によってはMenu画面のTRACKSでトラックログの設定が必要になると思いますが、自転車やバイクなどでの使用する予定は無いので、デフォルト設定のままにしておきます

設定は完了したので試しにGPSが受信できるかテストします。屋外で電源オンにしてしばらく待つと受信できているようです。とりあえず使えそうです


あとはPC接続用のケーブル入手が必要なのですが、見つかるかな?!

2025年8月21日木曜日

iOS 18.6.2リリース

   iOS 18.6.2がリリースされました

対象デバイスは、iPhone XS以降, iPad(7代目), iPad mini(5代目以降), iPad Air(3代目), iPad Pro(13インチ、12.9インチ 3代目以降、11インチ 初代以降)になります

アップデート内容は、以下の様になっています

このアップデートには重要なセキュリティアップデートが含まれ、すべてのユーザに推奨されます。

Apple セキュリティアップデートを確認すると以下のセキュリティアップデート内容が記載されています

ImageIO

CVE-2025-43300: Apple

なおアップデートファイルの大きさは、iOS 18.6.1をインストールしているiPhone 11 proで401.2MB、iPhone 11で384.2MBになります


スマホ・携帯ランキング


2025年8月17日日曜日

watchOS 11.6.1 リリース

   iOS 18.6.1に合わせて、watchOS 11.6.1がリリースされました

なお、Apple Watch Series 6 以降が対象になります

アップデート内容は、以下の様になっています

このアップデートには、Apple Watch Series 9、Series 10、およびApple Watch Ultra 2をお持ちの米国のユーザーを対象とした新しい血中酸素ウェルネスの体験が含まれています。測定値はiPhone上で計算され、ヘルスケアアプリで表示されます。 

Apple セキュリティアップデートを確認しましたが、セキュリティアップデート内容はありませんでした


なおアップデートファイルの大きさは、watchOS 11.6をインストールしているSeries 7で203MB、Series 6で183MBになります 


スマホ・携帯ランキング




 

iOS 18.6.1リリース

  iOS 18.6.1がリリースされました

対象デバイスは、iPhone XS以降, iPad(7代目), iPad mini(5代目以降), iPad Air(3代目), iPad Pro(13インチ、12.9インチ 3代目以降、11インチ 初代以降)になります

アップデート内容は、以下の様になっています

このアップデートには、Apple Watch Series 9、Series 10、およびApple Watch Ultra 2をお持ちの米国のユーザーを対象とした新しい血中酸素ウェルネスの体験が含まれています。測定値はiPhone上で計算され、ヘルスケアアプリで表示されます。 

Apple セキュリティアップデートを確認しましたが、セキュリティアップデート内容はありませんでした

なおアップデートファイルの大きさは、iOS 18.6をインストールしているiPhone 11で370.7MBになります


スマホ・携帯ランキング

2025年8月2日土曜日

ダイソンドライヤー(HD08)の修理

今回は、ダイソンドライヤー(HD08)の修理に挑戦します

症状は電源は入るが風量LED(白)が点滅して止まってしまうと言った内容でした。このLEDの点滅はフィルターのお手入れサインのため、分解清掃で治るかと考えて気軽に購入しました

まずは基本的なフィルタ部分を確認します。ま、誰でも外せる部分ですので綺麗です(ここは予想通り)。フィルターカバーは緩々なので交換が必要なようです

早速、分解を始めます
なお、分解にはヘクスローブドライバ(T6、T8)が必要になりますので、持っていない場合は事前に用意しておいた方が良いです

最初にグリップ部分のスイッチを外します。無水エタノールIPAを隙間らから軽く注入して接着力を落としてから、傷がつかない様にヘラなどで外します(写真を撮り忘れたので、別ドライヤを分解した際の写真です)


無理やりやると中のゴムが切れてしまいますので慎重に行ってください。ま、切れてしまったときはアマゾンなどで社外品を購入すれば大丈夫だと思いますよ

グリップ部分の分解では、この作業が一番の難関です。ここを過ぎれば、あとはネジを外すだけの簡単作業。最初にフィルタ下の2本、次にグリップ部分の1本を外すだけになります(ヘクスローブドライバ T6

グリップを外すとグリップ内のフィルタが出てきます。これを外して動作確認をしましたが、症状変わらずでした


スイッチ部のゴムパッドは輪ゴム2本で止まっていますので、それを外すと簡単に取れます。ヘクスローブドライバ(T6、T8)を使って、モーターユニットのカバーを外します

やっとモーターユニットが出てきました。ここまでフィルターチェックを行っているセンサーらしきものは見つからないので、モーターユニットで判断していると推測されます。流石にモーターユニットは分解できないので、出来る範囲で清掃してみました(埃や毛などが以外に入っていました)。この状態でモーターユニットのカバーを閉じてテストした結果、一瞬動作するようになりました。これ以上、モーターユニットを清掃出来ないため、別ユニットが必要と判断しました

早速、2つ目(HD03)を購入しました。こちらのドライヤは電源が入らないものになります、ちなみに調べていたところモーターユニットは共通の様でしたので、HD03を購入しました

外装は綺麗ですが、電源が入りません。よくあるケーブル問題の可能性も考慮して、チェックしましたが問題ない様です

前述の手順で、こちらもさくと分解しました(前述の写真はこれを分解したときのもの)。念のため内部の電源コネクタ接続部分の収縮チューブを切って、テスターで確認してみましたが給電はされていました。おそらく基板がダメな気がします

モーターユニットを外して、先に分解した方に移植してみたところ問題なく動作しましたので、予想通りモーターユニットの問題でした。外装が綺麗でしたが、基板側の分解を行う気力が無かったのでフィルターカバーだけ流用して残りは部品取りにしました

修理したHD08を一週間使用してみましたが正常に動作しています。しばらくは使えそうです。部品取り用にしたHD03の修理に挑戦したい気もしますが、ダイソンドライヤー 2台を使う用途は無いのでジャンク箱にしばらく放置しておきます

watchOS 11.6

  iOS 18.6に合わせて、watchOS 11.6がリリースされました

なお、Apple Watch Series 6 以降が対象になります

アップデート内容は、以下の様になっています

このアップデートには、Apple Watch用のバグ修正と重要なセキュリティ修正が含まれています。

Apple セキュリティアップデートを確認すると以下のセキュリティアップデート内容が記載されています

afclip

CVE-2025-43186: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

CFNetwork

CVE-2025-43223: Andreas Jaegersberger & Ro Achterberg of Nosebeard Labs

CoreAudio

CVE-2025-43277: Google's Threat Analysis Group

CoreMedia

CVE-2025-43210: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

CoreMedia Playback

CVE-2025-43230: Chi Yuan Chang of ZUSO ART and taikosoup

ICU

CVE-2025-43209: Gary Kwong working with Trend Micro Zero Day Initiative

ImageIO

CVE-2025-43226

libxml2

CVE-2025-7425: Sergei Glazunov of Google Project Zero

libxslt

CVE-2025-7424: Ivan Fratric of Google Project Zero

Metal

CVE-2025-43234: Vlad Stolyarov of Google's Threat Analysis Group

WebKit

CVE-2025-43227: Gilad Moav

CVE-2025-31278: Yuhao Hu, Yan Kang, Chenggang Wu, and Xiaojie Wei

CVE-2025-31277: Yuhao Hu, Yan Kang, Chenggang Wu, and Xiaojie Wei

CVE-2025-31273: Yuhao Hu, Yan Kang, Chenggang Wu, and Xiaojie Wei

CVE-2025-43214: shandikri working with Trend Micro Zero Day Initiative, Google V8 Security Team

CVE-2025-43213: Google V8 Security Team

CVE-2025-43212: Nan Wang (@eternalsakura13) and Ziling Chen

CVE-2025-43211: Yuhao Hu, Yan Kang, Chenggang Wu, and Xiaojie Wei

CVE-2025-43265: HexRabbit (@h3xr4bb1t) from DEVCORE Research Team

CVE-2025-43216: Ignacio Sanmillan (@ulexec)

CVE-2025-6558: Clément Lecigne and Vlad Stolyarov of Google's Threat Analysis Group

なおアップデートファイルの大きさは、watchOS 11.5をインストールしているSeries 7で404MB、Series 6で384MBになります 


スマホ・携帯ランキング

2025年8月1日金曜日

iOS 18.6リリース

 iOS 18.6がリリースされました

対象デバイスは、iPhone XS以降, iPad(7代目), iPad mini(5代目以降), iPad Air(3代目), iPad Pro(13インチ、12.9インチ 3代目以降、11インチ 初代以降)になります

アップデート内容は、以下の様になっています

このアップデートには重要なバグ修正とセキュリティアップデートが含まれ、”写真”でメモリムービーの共有が出来ない可能性がある問題に修正されます。

Apple セキュリティアップデートを確認すると以下のセキュリティアップデート内容が記載されています

Accessibility

CVE-2025-31229: Wong Wee Xiang

CVE-2025-43217: Himanshu Bharti (@Xpl0itme)

afclip

CVE-2025-43186: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

CFNetwork

CVE-2025-43223: Andreas Jaegersberger & Ro Achterberg of Nosebeard Labs

CoreAudio

CVE-2025-43277: Google's Threat Analysis Group

CoreMedia

CVE-2025-43210: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

CoreMedia Playback

CVE-2025-43230: Chi Yuan Chang of ZUSO ART and taikosoup

ICU

CVE-2025-43209: Gary Kwong working with Trend Micro Zero Day Initiative

ImageIO

CVE-2025-43226

libnetcore

CVE-2025-43202: Brian Carpenter

libxml2

CVE-2025-7425: Sergei Glazunov of Google Project Zero

libxslt

CVE-2025-7424: Ivan Fratric of Google Project Zero

Mail Drafts

CVE-2025-31276: Himanshu Bharti (@Xpl0itme)

Metal

CVE-2025-43234: Vlad Stolyarov of Google's Threat Analysis Group

Model I/O

CVE-2025-43224: Michael DePlante (@izobashi) of Trend Micro Zero Day Initiative

CVE-2025-43221: Michael DePlante (@izobashi) of Trend Micro Zero Day Initiative

CVE-2025-31281: Michael DePlante (@izobashi) of Trend Micro Zero Day Initiative

WebKit

CVE-2025-43228: Jaydev Ahire

CVE-2025-43227: Gilad Moav

CVE-2025-31278: Yuhao Hu, Yan Kang, Chenggang Wu, and Xiaojie Wei

CVE-2025-31277: Yuhao Hu, Yan Kang, Chenggang Wu, and Xiaojie Wei

CVE-2025-31273: Yuhao Hu, Yan Kang, Chenggang Wu, and Xiaojie Wei

CVE-2025-43214: shandikri working with Trend Micro Zero Day Initiative, Google V8 Security Team

CVE-2025-43213: Google V8 Security Team

CVE-2025-43212: Nan Wang (@eternalsakura13) and Ziling Chen

CVE-2025-43211: Yuhao Hu, Yan Kang, Chenggang Wu, and Xiaojie Wei

CVE-2025-43265: HexRabbit (@h3xr4bb1t) from DEVCORE Research Team

CVE-2025-43216: Ignacio Sanmillan (@ulexec)

CVE-2025-6558: Clément Lecigne and Vlad Stolyarov of Google's Threat Analysis Group

なおアップデートファイルの大きさは、iOS 18.5をインストールしているiPhone 11 proで631.4MB、iPhone 11で614.1MBになります


スマホ・携帯ランキング

2025年5月13日火曜日

iOS 18.5リリース

iOS 18.5がリリースされました

対象デバイスは、iPhone XS以降, iPad(7代目), iPad mini(5代目以降), iPad Air(3代目), iPad Pro(13インチ、12.9インチ 3代目以降、11インチ 初代以降)になります

アップデート内容は、以下の様になっています

  • 新しいプライドハ一モニーの壁紙
  • お子様のデバイスでスクU一ンタイムパスコードが使用されると、親/保護者に通知が届くようになりました
  • 他社製デバイス上のApple TVアフリでコンテンツを購入するときに、"iPhoneで購入"を使用できます
  • Apple Vision Proアブリで黒い画面が表示されるごとがある問題を修正しました
  • iPhone 13(すべてのモデル)で通信事業者から提供される衛星通信の機能に対応しました。詳しい情報: http;//support.apple.com/ja-jp/122339

Apple セキュリティアップデートを確認すると以下のセキュリティアップデート内容が記載されています

AppleJPEG

CVE-2025-31251: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

Baseband

CVE-2025-31214: 秦若涵, 崔志伟, and 崔宝江

Call History

CVE-2025-31225: Deval Jariwala

Core Bluetooth

CVE-2025-31212: Guilherme Rambo of Best Buddy Apps (rambo.codes)

CoreAudio

CVE-2025-31208: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

CoreGraphics

CVE-2025-31209: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

CoreMedia

CVE-2025-31239: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

CVE-2025-31233: Hossein Lotfi (@hosselot) of Trend Micro Zero Day Initiative

FaceTime

CVE-2025-31253: Dalibor Milanovic

CVE-2025-31210: Andrew James Gonzalez

FrontBoard

CVE-2025-31207: YingQi Shi (@Mas0nShi) of DBAppSecurity's WeBin lab, Duy Trần (@khanhduytran0)

iCloud Document Sharing

CVE-2025-30448: Dayton Pidhirney of Atredis Partners, Lyutoon and YenKoc

ImageIO

CVE-2025-31226: Saagar Jha

Kernel

CVE-2025-31219: Michael DePlante (@izobashi) and Lucas Leong (@_wmliang_) of Trend Micro Zero Day Initiative

CVE-2025-31241: Christian Kohlschütter

libexpat

CVE-2024-8176

Mail Addressing

CVE-2025-24225: Richard Hyunho Im (@richeeta)

mDNSResponder

CVE-2025-31222: Paweł Płatek (Trail of Bits)

Notes

CVE-2025-31228: Andr.Ess

CVE-2025-31227: Shehab Khan

Pro Res

CVE-2025-31245: wac

CVE-2025-31234: CertiK (@CertiK)

Security

CVE-2025-31221: Dave G.

WebKit

CVE-2025-24213: Google V8 Security Team

CVE-2025-31223: Andreas Jaegersberger & Ro Achterberg of Nosebeard Labs

CVE-2025-31238: wac working with Trend Micro Zero Day Initiative

CVE-2025-24223: rheza (@ginggilBesel) and an anonymous researcher

CVE-2025-31204: Nan Wang(@eternalsakura13)

CVE-2025-31217: Ignacio Sanmillan (@ulexec)

CVE-2025-31215: Jiming Wang and Jikai Ren

CVE-2025-31206: an anonymous researcher

CVE-2025-31205: Ivan Fratric of Google Project Zero

CVE-2025-31257: Juergen Schmied of Lynck GmbH

なおアップデートファイルの大きさは、iOS 18.4.1をインストールしているiPhone 11 proで1.17GB、iPhone 11で1.15GBになります


スマホ・携帯ランキング

2025年5月10日土曜日

Timer Camera X(ジャンク)、WiFiに繋がるか...

 先の記事で記載したWiFiに接続できないM5STACK ESP32 PSRAM Timer Camera XでWiFi関連をチェックしてみました。結論を先に言ってしまうと、繋がりませんでした。

最初にM5Burnerを使用してTimerCamForUIFlowを書き込んで、CameraToolsに接続しました。残念ながら、USB経由では問題なく接続できましたが、WiFiにすると接続がエラーになります。やはり、問題があることは確かです。

ESP32 Wifi接続できない"をキーワードに検索をしてみた結果、いろいろと出てきました。そこで、それらを踏まえたチェック用のスケッチを作成しました。内容としてはMACアドレス表示、セキュリティ設定の変更、電波強度変更、WiFiスキャン(ファクトリテストで行っていました)を行うようにしています

Unitに映像を表示させることにしました。なお、JEPEGモード、320x240で撮影し、それをLCD Unitに表示する簡単な記述になります。

#include <M5TimerCAM.h>
#include <M5GFX.h>
#include <M5UnitLCD.h>
#include <WiFi.h>
#include "wifi_chk.h"

// M5UnitLCD display
M5UnitLCD display(4, 13, 400000);  // SDA, SCL, FREQ

int tx_power;     // 送信出力値格納用
char msgbuf[64];  // メッセージ表示用

// WiFi Power CHeck
void wifi_power_chk() {
  Serial.println("WiFi Power CHeck");
  display.println("WiFi Power CHeck");

  wifi_power_t wifiPWR[11];
  wifiPWR[0] = WIFI_POWER_19_5dBm;  // 78
  wifiPWR[1] = WIFI_POWER_19dBm;    // 76
  wifiPWR[2] = WIFI_POWER_18_5dBm;  // 74
  wifiPWR[3] = WIFI_POWER_17dBm;    // 68
  wifiPWR[4] = WIFI_POWER_15dBm;    // 60
  wifiPWR[5] = WIFI_POWER_13dBm;    // 52
  wifiPWR[6] = WIFI_POWER_11dBm;    // 44
  wifiPWR[7] = WIFI_POWER_8_5dBm;   // 34
  wifiPWR[8] = WIFI_POWER_7dBm;     // 28
  wifiPWR[9] = WIFI_POWER_5dBm;     // 20
  wifiPWR[10] = WIFI_POWER_2dBm;    // 8

  WiFi.disconnect(true, true);
  WiFi.mode(WIFI_STA);
  WiFi.setMinSecurity(WIFI_AUTH_WPA2_PSK);  // Lower min security to WPA.
  for (int i = 0; i < 11; ++i) {
    WiFi.begin(ssid, password);
    wl_status_t status = WiFi.begin(ssid, password);
    WiFi.setTxPower(wifiPWR[i]);
    sprintf(msgbuf, "Try WiFi connection by %d...", WiFi.getTxPower());
    Serial.printf(msgbuf);
    display.println(msgbuf);

    delay(10000);
    if (status != WL_CONNECTED) {
      status = WiFi.status();
      sprintf(msgbuf,
              status == WL_NO_SHIELD ? "no shield\n" : status == WL_IDLE_STATUS     ? "idle\n"
                                                     : status == WL_NO_SSID_AVAIL   ? "no ssid available\n"
                                                     : status == WL_SCAN_COMPLETED  ? "scan completed\n"
                                                     : status == WL_CONNECT_FAILED  ? "connect failed\n"
                                                     : status == WL_CONNECTION_LOST ? "connection lost\n"
                                                     : status == WL_DISCONNECTED    ? "disconnected\n"
                                                                                    : "connected\n");
    } else sprintf(msgbuf, "conncted\n");
    Serial.printf(msgbuf);
    display.println(msgbuf);
    WiFi.disconnect(true, true);
    WiFi.reconnect();
  }
}

// WiFi Security CHeck
void wifi_sec_chk() {
  Serial.println("WiFi Security CHeck");
  display.println("WiFi Security CHeck");

  wifi_auth_mode_t wifiSEC[6];
  wifiSEC[0] = WIFI_AUTH_OPEN;            /**< authenticate mode : open */
  wifiSEC[1] = WIFI_AUTH_WEP;             /**< authenticate mode : WEP */
  wifiSEC[2] = WIFI_AUTH_WPA_PSK;         /**< authenticate mode : WPA_PSK */
  wifiSEC[3] = WIFI_AUTH_WPA2_PSK;        /**< authenticate mode : WPA2_PSK */
  wifiSEC[4] = WIFI_AUTH_WPA_WPA2_PSK;    /**< authenticate mode : WPA_WPA2_PSK */
  wifiSEC[5] = WIFI_AUTH_WPA2_ENTERPRISE; /**< authenticate mode : WPA2_ENTERPRISE */

  WiFi.disconnect(true, true);
  WiFi.mode(WIFI_STA);
  for (int i = 0; i < 6; ++i) {
    WiFi.begin(ssid, password);
    wl_status_t status = WiFi.begin(ssid, password);
    WiFi.setMinSecurity(wifiSEC[i]);
    switch (wifiSEC[i]) {
      case WIFI_AUTH_OPEN:
        sprintf(msgbuf, "Try WiFi connection by open ...\n");
        break;
      case WIFI_AUTH_WEP:
        sprintf(msgbuf, "Try WiFi connection by WEP ...\n");
        break;
      case WIFI_AUTH_WPA_PSK:
        sprintf(msgbuf, "Try WiFi connection by WPA ...\n");
        break;
      case WIFI_AUTH_WPA2_PSK:
        sprintf(msgbuf, "Try WiFi connection by WPA2 ...\n");
        break;
      case WIFI_AUTH_WPA_WPA2_PSK:
        sprintf(msgbuf, "Try WiFi connection by WPA+WPA2 ...\n");
        break;
      case WIFI_AUTH_WPA2_ENTERPRISE:
        sprintf(msgbuf, "Try WiFi connection by WPA2-EAP ...\n");
        break;
      default:
        sprintf(msgbuf, "Setting error!\n");
    }
    Serial.printf(msgbuf);
    display.println(msgbuf);

    delay(10000);
    if (status != WL_CONNECTED) {
      status = WiFi.status();
      sprintf(msgbuf,
              status == WL_NO_SHIELD ? "no shield\n" : status == WL_IDLE_STATUS     ? "idle\n"
                                                     : status == WL_NO_SSID_AVAIL   ? "no ssid available\n"
                                                     : status == WL_SCAN_COMPLETED  ? "scan completed\n"
                                                     : status == WL_CONNECT_FAILED  ? "connect failed\n"
                                                     : status == WL_CONNECTION_LOST ? "connection lost\n"
                                                     : status == WL_DISCONNECTED    ? "disconnected\n"
                                                                                    : "connected\n");
    } else sprintf(msgbuf, "conncted\n");
    Serial.printf(msgbuf);
    display.println(msgbuf);
    WiFi.disconnect(true, true);
    WiFi.reconnect();
  }
}

void setup() {
  TimerCAM.begin();
  display.begin();
  WiFi.begin();

  Serial.begin(115200);
  display.setTextSize(2);
  display.setRotation(3);
  display.setTextScroll(true);
  display.clear(TFT_BLACK);

  // Show MacAddress
  byte mac[6];
  WiFi.macAddress(mac);
  sprintf(msgbuf, "MAC Address : \n %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  Serial.printf(msgbuf);
  display.println(msgbuf);

  // Show WiFi Power (Default)
  WiFi.disconnect(true, true);
  tx_power = WiFi.getTxPower();  // デフォルトの送信出力取得 19.5dBmだと78
  sprintf(msgbuf, "Default TxPower: %d\n", tx_power);
  Serial.printf(msgbuf);
  display.println(msgbuf);
  delay(5000);

  display.clear(TFT_BLACK);
  wifi_sec_chk();
  display.clear(TFT_BLACK);
  wifi_power_chk();
}

void loop() {
  //WiFi スキャン
  Serial.println("WiFi Scan start");
  display.println("WiFi Scan start");

  // WiFi.scanNetworks will return the number of networks found.
  int n = WiFi.scanNetworks();
  Serial.println("WiFi Scan done");
  display.println("WiFi Scan done");
  if (n == 0) {
    Serial.println("no networks found\n");
    display.println("no networks found\n");
  } else {
    sprintf(msgbuf, "%2d networks found\n", n);
    Serial.printf(msgbuf);
    display.println(msgbuf);
    Serial.println("Nr | SSID                             | RSSI | CH | Encryption");
    display.println("Nr | SSID                             | RSSI | CH | Encryption");
    for (int i = 0; i < n; ++i) {
      // Print SSID and RSSI for each network found
      sprintf(msgbuf, "%2d | %-32.32s | %4d | %2d | ", i + 1, WiFi.SSID(i).c_str(), WiFi.RSSI(i), WiFi.channel(i));
      Serial.printf(msgbuf);
      display.println(msgbuf);
      switch (WiFi.encryptionType(i)) {
        case WIFI_AUTH_OPEN:
          sprintf(msgbuf, "open\n");
          break;
        case WIFI_AUTH_WEP:
          sprintf(msgbuf, "WEP\n");
          break;
        case WIFI_AUTH_WPA_PSK:
          sprintf(msgbuf, "WPA\n");
          break;
        case WIFI_AUTH_WPA2_PSK:
          sprintf(msgbuf, "WPA2\n");
          break;
        case WIFI_AUTH_WPA_WPA2_PSK:
          sprintf(msgbuf, "WPA+WPA2\n");
          break;
        case WIFI_AUTH_WPA2_ENTERPRISE:
          sprintf(msgbuf, "WPA2-EAP\n");
          break;
        case WIFI_AUTH_WPA3_PSK:
          sprintf(msgbuf, "WPA3\n");
          break;
        case WIFI_AUTH_WPA2_WPA3_PSK:
          sprintf(msgbuf, "WPA2+WPA3\n");
          break;
        case WIFI_AUTH_WAPI_PSK:
          sprintf(msgbuf, "WAPI\n");
          break;
        default:
          sprintf(msgbuf, "unknown\n");
      }
      Serial.printf(msgbuf);
      display.println(msgbuf);
      delay(10);
    }
  }
  Serial.printf("");
  display.println("");

  // Delete the scan result to free memory for code below.
  WiFi.scanDelete();

  // Wait a bit before scanning again.
  delay(5000);
  TimerCAM.Power.powerOff();
}

調べては継ぎ足しして作成したので、冗長な記述が多いです(汗

なおwifi_chk.hは、ssidとpasswordのみを宣言しています。 wifi_sec_chk()がセキュリティ設定を変更して接続チェックを行っています。wifi_power_chk()は電波強度を変更して接続チェックを行っています。なお、loop()ないでWiFiスキャンを行っています。

実行した結果は下記になります:

MAC Address : 
 **:**:**:**:**:**
Default TxPower: 78
WiFi Security CHeck
Try WiFi connection by open ...
disconnected
Try WiFi connection by WEP ...
disconnected
Try WiFi connection by WPA ...
disconnected
Try WiFi connection by WPA2 ...
disconnected
Try WiFi connection by WPA+WPA2 ...
disconnected
Try WiFi connection by WPA2-EAP ...
no ssid available
WiFi Power CHeck
Try WiFi connection by 72...disconnected
Try WiFi connection by 72...disconnected
Try WiFi connection by 72...disconnected
Try WiFi connection by 66...disconnected
Try WiFi connection by 60...disconnected
Try WiFi connection by 50...disconnected
Try WiFi connection by 38...disconnected
Try WiFi connection by 28...disconnected
Try WiFi connection by 28...disconnected
Try WiFi connection by 14...disconnected
Try WiFi connection by 2...disconnected
WiFi Scan start
WiFi Scan done
 3 networks found
Nr | SSID                             | RSSI | CH | Encryption
 1 | ***********                      |  -85 | 11 | WPA+WPA2
 2 | ***********                      |  -89 |  4 | WPA2
 3 | ***********                      |  -93 |  4 | WPA2

MACアドレスは正常に表示され、WiFiスキャンも実行されました。しかし、セキュリティや電波強度の変更を行ってもまったく繋がる様子がありません。スキャンは正常なのに何で?!って感じです。また、電波強度は設定した値と読み取った値が異なることも良くわかりません。今度、M5STAMP Picoで試してみたいと思います

最終手段でフラッシュメモリをクリアして、工場出荷状態に戻して上記テストを再度行ってみました(フラッシュメモリのクリアは自己責任でお願いします)。クリアにはesptool.pyを使用します。入手先はEspressifのGithubになります

https://github.com/espressif/esptool

下記コマンドにて、フラッシュをクリアできます

”esptool.py -p シリアルポート名 erase_flash"

残念ながら フラッシュメモリをクリアでも問題は改善しませんした。と言うわけで最初に記載した通り、結果はWiFiには何をやっても繋がりませんでした。

念のため、蓋を開けて確認しましたが老いた目では問題があるようには見えません


当初の予定通りカメラボードとして、余生を過ごしてもらう結果になりました

参考にさせて頂きましたサイト:

2025年5月9日金曜日

Timer Camera X(ジャンク)で画像をLCDで表示

M5STACK ESP32 PSRAM Timer Camera Xのジャンク品を購入しました。ジャンク理由はWiFiに接続できたことが無いとなっていましたが、とりあえずカメラが使えればと購入しました

最初にカメラがちゃんと動作するかをテストします。と言っても液晶は付いていないんので、Groveコネクタ経由でLCD Unitに映像を表示させることにしました。なお、JEPEGモード、320x240で撮影し、それをLCD Unitに表示する簡単な記述になります。

#include <M5TimerCAM.h>
#include <M5GFX.h>
#include <MUnitLCD.h>

// M5UnitLCD display;                 // default setting
M5UnitLCD display(4, 13, 400000);  // SDA, SCL, FREQ

void setup() {
  TimerCAM.begin();
  display.begin();

  // display setting
  display.setRotation(0);
  display.clear(TFT_BLACK);

  if (!TimerCAM.Camera.begin()) {
    Serial.println("Camera Init Fail");
    return;
  }
  Serial.println("Camera Init Success");

  // Cammera setting
  TimerCAM.Camera.sensor->set_pixformat(TimerCAM.Camera.sensor, PIXFORMAT_JPEG);  // 画像フォーマット
  TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor, FRAMESIZE_QVGA);  // 画像サイズ:320x240

  TimerCAM.Camera.sensor->set_vflip(TimerCAM.Camera.sensor, 1);    //上下反転 0無効 1有効
  TimerCAM.Camera.sensor->set_hmirror(TimerCAM.Camera.sensor, 0);  //左右反転 0無効 1有効
}

void loop() {
  while(true) {
    if (TimerCAM.Camera.get()) {
      TimerCAM.Power.setLed(255);  // LED点灯
      Serial.printf("pic size: %d\n", TimerCAM.Camera.fb->len);

      int32_t data_size = TimerCAM.Camera.fb->len;
      uint8_t* sata_buf = TimerCAM.Camera.fb->buf;

      if (data_size != 0) {
        display.drawJpg(sata_buf, data_size, 0, 0, 320, 240);
        data_size = 0;
      }

      TimerCAM.Camera.free();
      TimerCAM.Power.setLed(0);
    }
  }
  TimerCAM.Camera.free();
  TimerCAM.Power.setLed(0);
  TimerCAM.Power.setLed(0);
}

簡単な記述なので、サクッと動作しました

カメラの詳細設定に関しては、今後いろいろと試したいと思います。

記述してから気が付きましたが、動作チェックが目的であればcameraToolsを使用すれば、もっと簡単にできました。やはり、ドキュメントは見ないといけませんね

2025年5月8日木曜日

LCD Unitを使ってみよう!

先日、LCD Unitのファームウェアをアップデートしましたが実際に使用していなかったので、M5StickC Plus2に接続して表示させてみました

基本的にはサンプルデザインを流用して記述しました。サンプル記述では、メッセージ表示後に丸と四角のランダムパターンを表示します

// #include <M5StickCPlus2.h>
// #include <M5GFX.h>
#include <Arduino.h>
#include <M5UnitLCD.h>
#include <M5Unified.h>

void setup(void) {
  auto cfg = M5.config();

  // M5 UnitLCD display setting.
  // cfg.external_display.unit_lcd = true;

  #if defined(__M5GFX_M5UNITLCD__)       // setting for Unit LCD.
    cfg.unit_lcd.pin_sda = GPIO_NUM_32;  // Grove I2C SDA pin
    cfg.unit_lcd.pin_scl = GPIO_NUM_33;  // Grove I2C SCL pin
    cfg.unit_lcd.i2c_addr = 0x3E;        // I2C Adress
    cfg.unit_lcd.i2c_freq = 400000;
    cfg.unit_lcd.i2c_port = I2C_NUM_0;
  #endif

  M5.begin(cfg);

  // Get the number of available displays
  int display_count = M5.getDisplayCount();

  for (int i = 0; i < display_count; ++i) {
    M5.Displays(i).setRotation(3);
    int textsize = M5.Displays(i).height() / 60;
    if (textsize == 0) { textsize = 1; }
    M5.Displays(i).setTextSize(textsize);
    Serial.printf("No.%d\n", i);
    M5.Displays(i).printf("No.%d\n", i);
  }


  // If an external display is to be used as the main display, it can be listed in order of priority.
  //  M5.setPrimaryDisplayType( m5::board_t::board_M5UnitLCD );
  M5.Display.print("primary display\n");


  int index_unit_lcd = M5.getDisplayIndex(m5::board_t::board_M5UnitLCD);
  M5.Displays(index_unit_lcd).print("This is  M5 UnitLCD display\n");
  M5.delay(10000);
}


// When creating a function for drawing, it can be used universally by accepting a LovyanGFX type as an argument.
void draw_function(LovyanGFX* gfx) {
  int x = rand() % gfx->width();
  int y = rand() % gfx->height();
  int r = (gfx->width() >> 4) + 2;
  uint16_t c = rand();
  gfx->fillRect(x - r, y - r, r * 2, r * 2, c);
}


void loop(void) {
  M5.delay(1);

  for (int i = 0; i < M5.getDisplayCount(); ++i) {
    int x = rand() % M5.Displays(i).width();
    int y = rand() % M5.Displays(i).height();
    int r = (M5.Displays(i).width() >> 4) + 2;
    uint16_t c = rand();
    M5.Displays(i).fillCircle(x, y, r, c);
  }

  for (int i = 0; i < M5.getDisplayCount(); ++i) {
    draw_function(&M5.Displays(i));
  }
}

なお、#include <Arduino.h>を宣言していないと、上記記述の14行目~17行名で構造体 config_tにunit_lcdが無いといった趣旨のエラーが発生します。勉強不足で、嵌まってしましいましたよ。

参考にさせて頂きましたサイト:

2025年5月2日金曜日

M5StickC Plus2でWifi接続

 M5STACK 製品をいくつか購入していますが、いまだWifiに接続したことが無かったので試してみました。調べてみたところ、WiFi.hを使用すれば簡単に接続できるようです

#include <M5StickCPlus2.h>
#include <M5Unified.h>
#include <WiFi.h>

const char* ssid = "********";        // 接続先WiFiのSSID
const char* password = "********";    // 接続先WiFiのパスワード

void setup() {
  auto cfg = M5.config();
  M5.begin(cfg);

  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setBrightness(5);
  M5.Lcd.setRotation(3);                           // 画面向き
  M5.Lcd.setTextSize(2);                           // フォントサイズ

  M5.Lcd.print("SSID : ");
  M5.Lcd.println(ssid);

  WiFi.begin(ssid, password);  // WiFi接続

  M5.Lcd.print("Connecting");

  while (WiFi.status() != WL_CONNECTED) {  // 接続チェック
    delay(500);
    M5.Lcd.print(".");
  }

  M5.Lcd.println("");
  M5.Lcd.print("IP Adress : \n");
  M5.Lcd.println(WiFi.localIP());  // IPアドレス表示
}

void loop() {}

wifi.begin()で接続して、Wifi.status()で接続チェックを行うだけでと簡単でした。実行も問題なくでき簡単です。

折角、Wifiに接続できましたので、APIなどを使用しないで使えるNTPサーバーに接続して日時を取得して表示するスケッチを作成しました

#include <M5StickCPlus2.h>
#include <M5Unified.h>
#include <WiFi.h>

#define JST 9 * 3600L

const char* ssid = "********";        // 接続先WiFiのSSID
const char* password = "********";    // 接続先WiFiのパスワード

void setup() {
  auto cfg = M5.config();
  M5.begin(cfg);

  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setBrightness(5);
  M5.Lcd.setRotation(3);  // 画面向き
  M5.Lcd.setTextSize(2);  // フォントサイズ

  M5.Lcd.print("SSID : ");
  M5.Lcd.println(ssid);

  WiFi.begin(ssid, password);  // WiFi接続

  M5.Lcd.print("Connecting");

  while (WiFi.status() != WL_CONNECTED) {  // 接続チェック
    delay(500);
    M5.Lcd.print(".");
  }

  M5.Lcd.println("");
  M5.Lcd.print("IP Adress : \n");
  M5.Lcd.println(WiFi.localIP());  // IPアドレス表示

  // NTPサーバと、ローカルのタイムゾーンを設定
  // タイムゾーン:日本、夏時間無し、PUBLIC NTPと日本標準時グループに接続
  configTime(JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp"); 
}

void loop() {
  M5.Lcd.clear(BLACK);
  M5.Lcd.setCursor(0, 0);
  struct tm tm;
  /*
    tm構造体の要素:
    int tm_sec    秒:(0~61)
    int tm_min    分:(0~59)
    int tm_hour   時:(0~23)
    int tm_mday   日:(1~31)
    int tm_mon    1月からの月数:(0~11)
    int tm_year   1900年からの年数
    int tm_wday   日曜日からの日数:(0~6)
    int tm_yday   1月1日からの日数:(0~365)
    int tm_isdst  夏時間フラグ
 */
  getLocalTime(&tm);
  M5.Lcd.printf(" %04d/%02d/%02d %02d:%02d:%02d",
               tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,  // 年、月、日
               tm.tm_hour, tm.tm_min, tm.tm_sec);             // 時、分、秒
  delay(1000);
}

#define JSTは日本時間にするための設定で、configTime()でPUBLIC NTPと日本標準時グループに接続して時間を取得しています、なお、メモとして構造体 tmの内容をコメントとして記載しています。ま、使用するたびに調べるのが面倒なだけですが...

無事に動作し、時間を取得できました。

NTPサーバーへの接続は、WEBサービスを使用するスケッチの最初の一歩ですね

2025年4月23日水曜日

I2C OLEDを試してみた

M5STACK LCD Unitのファームウェアアップデート」の記事の際に記載した I2C OLEDディスプレイを動かしてみました。

本製品はタイトルや製品説明では、ドライバICはSSD1315 を使用しているとありましたが、詳細説明ではSSD1306を使用と記載されています。購入してから気が付きました...



詳しくは調べていませんが、SSD1315 はSSD1306  の上位互換らしいので、SSD1306として使用してみました。なお、OLEDのライブラリはAdafruit_SSD1306を使用して記述しました

#include <Wire.h>
#include <Adafruit_GFX.h>      // Ver 1.12.1
#include <Adafruit_SSD1306.h>  // Ver 2.5.13

#define SCREEN_WIDTH 128 // OLED 横設定
#define SCREEN_HEIGHT 64 // OLED 高さ設定
#define OLED_RESET    -1 // OLEDリセット(未使用:-1)
#define SCREEN_ADDRESS 0x3C // ボード上の設定:0x78に接続:0x3C、0x7Aに接続:0x3D

// ディスプレイの宣言
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


void setup() {

  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

}

void loop() {

  display.clearDisplay();      // 表示クリア
  display.setTextSize(2);      // テキストサイズ
  display.setTextColor(WHITE); // テキストカラー
  display.setCursor(0, 10);    // テキストの表示位置

  display.println("Hello World");
  display.display();           // テキスト表示

  delay(1000);

}

サクッと動いてしまいました。3ボードセットなので各ボードで動作チェックを行い、不良が無いことを先に確認しました

折角なのでスタックチャンアバターを表示しようと調べてみると、M5 GLASS2 unitで使用されているSSD1309はSSD1306と互換性があるという情報を見つけました。早速、ライブラリを変更して試してみます。予定通りスタックチャンを表示しますが、折角なので10秒ごとに表情が変わるようにしました

#include &ltM5UnitGLASS2.h>
#include &ltM5Unified.h>
#include &ltAvatar.h>

using namespace m5avatar;
m5avatar::Avatar avatar;

const Expression expressions[] = {
  Expression::Angry,
  Expression::Sleepy,
  Expression::Happy,
  Expression::Sad,
  Expression::Doubt,
  Expression::Neutral
};

const int expressionsSize = sizeof(expressions) / sizeof(Expression);
int idx = 0;

void setup() {
  auto cfg=M5.config();
  cfg.unit_glass2.pin_sda = 21; // SDA ピン設定
  cfg.unit_glass2.pin_scl = 22; // SCL ピン設定
  M5.begin(cfg);

  // OLED ディスプレイサイズ:128 x 64
  avatar.setScale(.4);         // 縮尺:.4 = 128/320
  avatar.setPosition(-88,-96); // ポジション:88 = (240-64)/2, 96 = (340-128)/2
  avatar.init();               // アバターの初期化
}

void loop() {
  M5.update();

  idx = rand() % expressionsSize;
  avatar.setExpression( expressions[idx] );
  
  delay(10000);

}

スタックチャンアバターは、320x240ディスプレイ用に準備されていますので、小さい液晶で表示する際は縮尺(avatar.setScale())やポジション(avatar.setPosition())の設定を変更する必要があります



とりあえず、動作したので良しとしました。結局、このOLED のディスプレイドライバは不明ですが、SSD1306、SSD1309、SSD1315は互換性があるようですね

参考にさせて頂きましたサイト: